为模型加上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窗口中把插入点移到第3步骤中输入的语句后再按回车键。
这次显示的textureList结果包括了附加在Add Texture按钮上的程序所建立的red square texture了。
-- [texture(‘‘red square‘‘),
6、又乘着影片还在播放,按一下Reset World按钮。
7、又在message窗口中把插入点移到第3步骤中输入的语句后再按回车键。
-- [
显示的textureList结果又已经恢复初始状态的值了。
设定灯光(探照灯、照射灯)的颜色
现在来尝试调整3D世界中的灯光颜色。一个3D世界可以包含你想加进去的许多灯光。本例中的“Orb”3D演员包含了三种灯光,你可以查明它们并更改它们的颜色。
1、首先,你可以让Director显示在“Orb”3D演员中存在几种灯光。在message窗口中输入以下语句,并按回车键:
put member(‘‘Orb‘‘).light.count
会出现结果数字3
-- 3
count属性可以用来检查一个3D演员中的许多项目内容,包括cameras、models、model resources和其它别的什么。
2、然后,你可以查看“Orb”3D演员中第3种灯光的名字。在message窗口中输入以下语句,并按回车键:
put member(‘‘Orb‘‘).light(3).name
出现了第3种灯光的名字
-- ‘‘Ambient Light‘‘
3、现在可以使用颜色属性来设置名字叫“Ambient Light”的灯光的颜色了。颜色是可以设成任何RGB色彩的。在这里,试把它设为蓝色。在message窗口中输入以下语句,并按回车键:
member(‘‘Orb‘‘).light(‘‘Ambient Light‘‘).color = rgb(0, 0, 255)
由于影片还在播放,你会马上看到球变蓝色了。这是因为在蓝色灯光的照射击下。
4、尝试把灯光改为绿色。在message窗口中输入以下语句,并按回车键:
member(‘‘Orb‘‘).light(‘‘Ambient Light‘‘).color = rgb(0, 255, 0)
球变绿色了。
你可以尝试任何你喜欢的数值的RGB色彩。每一个RGB数值必须在0到255之间。
你可以使用message窗口来尝试所有Lingo命令与属性。当你养成这样的习惯时,你会发现当你要在你的影片中学习如何使用新的没用过的Lingo以实现新的Director功能时,它是非常有用的工具。






