本教程的例子是用Macromedia的教程例子。教程假定大家已是熟悉Director基本功能与操作,并能完成简单的工作了的。
相关附件
一、使用3D演员
3D演员有多种层次的属性。一个3D演员包含一个完整的3D空间,叫3D世界。一个3D世界可以有多个3D model(模型),例如,一个3D演员可以包括一个图球与一个正方体等等。每一个3D model(模型)就类似于一个Director Sprite,都有它们的一系列属性,如:大小、颜色、阴影等。Director提供两种方法去查看它们的属性:Shockwave 3D窗口与Lingo程序语言。
二、导入3D演员
当你在3ds max或其它建三维模型程序中建立了3D模型,并把它们输出成为“.w3d”格式后,你就可以把它导入Director中使用了。
打开本教程附件,你会找到“3D Tutor for Dir User Start.dir”与“Orb.W3D”。
1. 打开“3D Tutor for Dir User Start.dir”影片。可以看到演员表中已有两个演员。
2. 用外部链接文件方式导入“Orb.W3D”。
3. 导入后可以见到演员表中多了个名字为“Ord”的演员。
4. 保存你的影片。
三、使用Shockwave 3D窗口
在演员表中双击“Orb”演员,就会打开Shockwave 3D窗口来查看“Orb”演员。见到打开的Shockwave 3D窗口中有一个圆球,球上环绕着“macromedia”字样。
下面介绍一下打开的Shockwave 3D窗口,窗口中有一些工具是可以修改3D世界的camera(摄像机,可以理解为观察整个3D世界的窗口或视角、角度等什么的)位置的。可以用三种不同的方式来移动camera(摄像机):平移(panning)、旋转(rotating)、移远移近(dollying)。

1. 为了移动camera(摄像机)可以先按下这个按钮,然后再在Shockwave 3D窗口中按住鼠标左键不放来拖动一下,效果是看到球的位置移动了。

2. 要旋转球,从而从不同角度来看它,按下这个按钮,再在Shockwave 3D窗口中按住鼠标左键不放来拖动一下。

3. 这两个按钮是当你在使用上面的旋转按钮时配合来用的。是决定Y轴或Z轴哪个是上面的轴的。

4. 为了移近与移远球,可以先按下这个按钮,然后再在Shockwave 3D窗口中按住鼠标左键不放来拖动一下,效果是看到球变大了(近了)或变小了(远了)。

5. 当你做了各种操作(放大缩小、平移、旋转)之后,要恢复原来的样子,就要按这个按钮了。

6. 而当你做了各种操作(放大缩小、平移、旋转)之后,觉得很满意了,想把这时的状态保存下来,就要按这个按钮。
四、运用Lingo进行更多的控制
正如你所看到的,Shockwave 3D窗口可以很好地观察3D演员,也可以很方便地移动3D世界的基本的camera(摄像机)。然而,当你需要控制3D演员的更多属性,你就要使用Lingo语言了。
五、做一个3D角色
1. 重置你的播放头,使它回到第一帧。
2. 打开演员表。
3. 拖动“Orb”3D演员到舞台左下角。
4. 打开分镜表,这时你可以看到在通道1中的第1帧到第28帧有了“Orb”角色。

六、添加一个你自己的按钮
1. 重置你的播放头,使它回到第一帧。
2. 打开工具面板。
3. 按下工具面板中的按钮工具,如图。
4. 在舞台右下角按下鼠标左键不放,拖出一个矩形的方框,记得这个方框的大小就是你想做的按钮的大小。当你放开鼠左键时,矩形方框中就出现一个文本插入点在闪,这时,按钮处于编辑状态,等待输入按钮名字。

5. 输入以下字样:Camera X+10
6. 在按钮外面按下鼠标左键,退出按钮的编辑状态。

七、为按钮加上程序
现在你可以为按钮加上Lingo程序以控制3D演员的camera(摄像机)了。
1. 打开演员表,你会看到多了一个按钮演员。
2. 选中这个按钮演员,在演员表中的名称方格中为它输入名字:CameraX+10。
3. 打开分镜表,点击选中通道2中的整段按钮演员。
4. 并在它上面单击鼠标右键,在弹出的菜单中,选取“Script…”,打开Script窗口。
5. 不要移动Script窗口中的插入点,直接输入以下Lingo程序:
sprite(1).camera.translate(10,0,0)
在这个程序中,事件名称是:on mouseUp。意思是当你在这个按钮上按下鼠标左键时,就会执行上面这句程序。这句程序是用了点句式的格式的。点句式相对于英语来说是倒装格式的。在英语中这句程序听起来应是:Translate the camera of sprite 1. 意思是改变角色1的摄像机。sprite(1)是指分镜表中通道1中的角色,在这里就是“Orb”3D角色。sprite(1).camera是指分镜表中通道1中的角色的摄像机。Translate在这儿的作用是移动摄像机于某一固定的数值。在这句中指定的数值是(10,0,0),意思是指沿X轴移动10个像素,沿Y轴与Z轴移动0个像素,三个数字分别代表在三个轴上的改变量。
6. 关闭Script窗口,运行影片。
7. 按一下CameraX+10按钮,看看屏幕上起了什么变化(报像机往右移了,但实际上看到的效果却是球住左移了,仔细想想,没矛盾的)?注意,不要按太多次按钮,否则会把球移到看不见的地方去的。下一步,可以再加多一个按钮,以使球移回原位了。
八、使摄像机回到原位(即使球住右移)
为了使摄像机回到原位,可以再增加一个类似的带程序的按扭。不过,有点很重要的不同就是必须修改translate命令指定的数值。
1. 停止影片,重置你的播放头,使它回到第一帧。
2. 在工具面板中按一下按钮工具。
3. 在舞台上刚才那个按钮上拖出一个按钮,输入CameraX-10字样。
4. 在演员表中把这个新的按钮命名为CameraX-10。
5. 在分镜表中右键这个按钮角色(在通道3),在弹出的菜单中,选取“Script…”,打开Script窗口。
6. 在Script窗口中输入(此时是on mouseUp事件):
sprite(1).camera.translate(-10,0,0)
即沿X轴移动-10像素,Y轴与Z轴移动0像素。
7. 关闭Script窗口,保存你的影片。
8. 重置你的播放头,使它回到第一帧。播放影片,按CameraX-10按钮,看看摄像机是不是住左移了(实际上是球住右移了)?你可以两个按钮都按按,看看它们是怎么样互相抵消移动的。
九、旋转模型(在这里就是球)
为了实现旋转这个球,又要新增加一对按钮类似于刚才建立的那一对,分别控制球向两个方向旋转。这时要用的命令是:rotate。
1. 停止影片,重置你的播放头,使它回到第一帧。
2. 象上面一样利用工具面板中的按钮工具建一个按钮。
3. 在按钮上输入Rotate Y+20。
4. 在演员表中把这个按钮的名称改成:RotateY+20
5. 在分镜表中右键这个按钮角色(在通道4),在弹出的菜单中,选取“Script…”,打开Script窗口。
6. 在Script窗口中输入(此时是on mouseUp事件):
member(3).model(1).rotate(0,20,0)
这句程序告诉Director旋转演员表中第3个演员(即“Orb”3D演员)中的第一个模型(即是球),就是让球绕Y轴旋转20度。
7. 关闭Script窗口,保存你的影片。
8. 重置你的播放头,使它回到第一帧。播放影片,按RotateY+20按钮,看看效果吧。
十、添加第二个旋转按钮
1. 停止影片,重置你的播放头,使它回到第一帧。
2. 象上面一样利用工具面板中的按钮工具建一个按钮。
3. 在按钮上输入Rotate Y-20。
4. 在演员表中把这个按钮的名称改成:RotateY-20
5. 在分镜表中右键这个按钮角色(在通道5),在弹出的菜单中,选取“Script…”,打开Script窗口。
6. 在Script窗口中输入(此时是on mouseUp事件):
member(3).model(1).rotate(0,-20,0)
这句程序告诉Director旋转演员表中第3个演员(即“Orb”3D演员)中的第一个模型(即是球),就是让球绕Y轴旋转与上一个按钮控制的方向相反的20度。
7. 关闭Script窗口,保存你的影片。
8. 重置你的播放头,使它回到第一帧。播放影片,按RotateY+20按钮,看看效果吧。
十一、为模型加上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报错了。