Director 3D 基础(之二)

4/7/2006来源:Director教程人气:14060

为模型加上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、关闭程序窗口并播放你的影片,这时你一样可以使用前面建过的按钮。只是旋转按钮的效果就不太一样了,因为,这个球自己在不停地自动转。