当前位置:非凡站长站文章教程Director教程 → 文章内容

Director 3D 基础(之二)

减小字体 增大字体 作者:未知  来源:pconline.com.cn  发布时间:2006-4-21 16:05:44
作者:十年磨一剑
出处:奥古多媒体
转载请联系作者

为模型加上texture(材质、贴图)

这一节要说的是建立一个按钮为模型加上texture(材质、贴图),以更改它的表面外观。
1、停止影片,重置你的播放头,使它回到第一帧。
2、象上面一样利用工具面板中的按钮工具在四个按钮之上建一个按钮。
3、在按钮上输入Add Texture。
4、在演员表中把这个按钮的名称改成:AddTexture
5、在分镜表中右键这个按钮角色(在通道6),在弹出的菜单中,选取“Script…”,打开Script窗口。
6、在Script窗口中输入(此时是on mouseUp事件):
myTexture = member(3).newTexture(‘‘red square‘‘, #fromCastmember, member(1))
member(3).model(1).shader.texture = myTexture
第一句程序的意思是在演员表的第3个演员(“Orb”3D演员)中用演员表中第一个演员的图案建立一个名字叫做“red square”的新的texture(材质、贴图),并把它赋给变量myTexture来记住它。第二句的意思是把“Orb”角色中的模型1(即球)的shader(材质球)中的texture(材质、贴图)属性改变成变量myTexture所指定的值。
[特注:关于shader:以3DMax为外部三维编辑器,director中的一个shader就是max中的一个材质球,一个shaderlist就是一个model的shader如:一张桌子,桌面是一种材质(一个材质球),四个桌腿共用一个材质(另一个材质球),桌面桌腿都是分开的model(共五个),所以导入director中,共有两个shader,五个shaderlist。摘自zain的文章《shockwave3D制作之随便说》]
7、关闭Script窗口,保存你的影片。
8、重置你的播放头,使它回到第一帧。播放影片,按AddTexture按钮,怎么样,看到球的表面变了吧。如果你按了按钮超过一次,会弹出一个Lingo出错的提示框。因为第一次按时已经在演员表的第3个演员(“Orb”3D演员)中建立了名为“red square”的新的texture(材质、贴图),当第二次按时,Lingo程序会尝试再建一个一模一样的同名的texture(材质、贴图),这是不允许的。
移去texture(材质、贴图)

为了移去texture(材质、贴图),可以再建一个按钮,并在按钮的程序中用resetWorld()命令实现。这个命令可以移去任何在3D演员中新建的项目,并返回其最初的状态。例如,上面所做的新的texture(材质、贴图)就可以移去。
1、停止影片,重置你的播放头,使它回到第一帧。
2、象上面一样利用工具面板中的按钮工具在五个按钮之上建一个按钮。
3、在按钮上输入Reset World。
4、在演员表中把这个按钮的名称改成:ResetWorld
5、在分镜表中右键这个按钮角色(在通道7),在弹出的菜单中,选取“Script…”,打开Script窗口。
6、在Script窗口中输入(此时是on mouseUp事件):
member(‘‘Orb‘‘).resetWorld()
意思是重置3D演员“Orb”为初始状态。
7、关闭Script窗口,保存你的影片。
8、重置你的播放头,使它回到第一帧。播放影片,随意按几下旋转或移摄像机的按钮。
9、按按钮ResetWorld。
可以看到球又回到原位,且表面外观又复原了,这时你又可以按AddTexture按钮而不会引起Lingo报错了。

用帧程序(或叫帧脚本、帧行为)实现旋转模型

当你使用3D演员建立了你自己的影片时,有时候会希望你的3D模型在没人对它操控时也会自动旋转或移动,这时你就可以利用帧程序来实现,下面的例子是实现“Orb”演员中的球的自动旋转的。
1、打开分镜表。
2、双击程序通道(脚本通道)的第28帧,这时会打开Script窗口,显示原来在第28帧处的程序:go to the frame
3、把插入点移到“on exitFrame”后,按下回车键,插入点会下移到新的一行。
4、在这新的一行输入以下程序:
member(‘‘Orb‘‘).model(1).rotate(0,5,0)
这句程序和上面为旋转按钮建立的程序是基本上一样的。但在这儿的作用是:每当播放头插放一次第28帧时,rotate命令就使球旋转5度。
5、关闭程序窗口并播放你的影片,这时你一样可以使用前面建过的按钮。只是旋转按钮的效果就不太一样了,因为,这个球自己在不停地自动转。 利用message窗口进行测试

Director包含了一批重要的命令来控制3D演员与它们内部的组件。你会发现在自己的程序中使用这些命令前先试验一下这些命令是十分有好处的。Message窗口在你决定是否在你的影片中使用一个命令时提供了一种简易的方法去测试这个命令。
这一段向你展示如何在message窗口测试Lingo。你可以只是单单输入一句Lingo程序,并立即看到运行结果。
如果你想查看一个变量或一个属性,可以使用put命令。这个简单的命令可让Lingo在message窗口显示你的Lingo程序的结果。
如果你想控制一个演员或角色的外观,你可以在message窗口输入必要的Lingo语句并马上看到改变的结果。这种改变是不论影片是不是正在播放都可以进行的。
现在,来试试我们已经熟悉了的命令:rotate命令
1、停止影片。
2、打开message窗口。
3、在message窗口中输入:member(‘‘Orb‘‘).model(1).rotate(0,50,0)
4、按回车键。
5、对于某些类型的演员,例如3D演员,当影片不播放时你必须点击舞台上的角色才能让Lingo的效果显示出来。这样才能强迫Director重新刷新舞台上的内容。因此,请点击舞台上的3D角色。
6、现在再在message窗口中输入:member(‘‘Orb‘‘).model(1).rotate(50,0,0)
7、按回车键。不要点击舞台上的3D角色,再输入命令:updateStage,再按回车键。这个命令也能强迫Director重新刷新舞台上的内容。这一次,你可以看到球是绕X轴旋转的了。
现在你明白使用message窗口是一个好极了的测试rotate命令关于绕不同轴转不同数值的角度的方法了。现在,你可以尝试测试一些你还没见过的命令了。

在message窗口查看属性

当你不能确定一个演员里有些什么内容时,message窗口的作用就显得很有用了。原因是你会时常遇到3D演员中有许多内部内容(组件)的时候。
在这里可以使用message窗口来查看3D模型的textureList。
1、重置播放头,播放影片。
2、如果你见到球表面是红色的,按Reset World按钮。
3、在message窗口中输入以下语句,并按回车键:
put member(‘‘Orb‘‘).model(1).shader.textureList
Director会马上在message窗口显示出3D模型的textureList中的值:
-- [, , , , , , , ]
你可以看到模型的八个texture内容都是空的。
4、乘着影片还在播放,按一下Add Texture按钮,球变红了。
5、在message窗口

[1] [2]  下一页