首页 > 网站 > 媒体动画 > 正文

Director基础教程:Director 3D 基本的(3)

2024-09-08 19:27:12
字体:
来源:转载
供稿:网友
director 3d 基础
    为模型加上 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).

[1] [2] 下一页  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表