软件开发的家园,编程爱好者的天地.

现在是:北京时间 2016/4/14 上午11:50:51 星期四

设为首页  |  加入收藏  |  网站地图

Director 3D 基础(之七)
发布于:第八基地 来源:互联网 作者:天堂路上 时间:2016-04-26 点击:259
移动模型与摄像机

在Director 8.5中,不止一种方法去移动模型与摄像机。模型与摄像机可以相对于它们自己、其它模型或整个身处的3D世界而移动。另外,这些物体可以利用两种不同的Lingo程序来移动。无论你选择哪种方法,都会有明显的效果于你的3D演员的外观。

样版影片

本文的样版影片是Moving_model_and_camera.dir。你可以打开来查看它的程序,如果你喜欢的话,你可以改动它。(点击这里下载相关附件)

看scene 1

影片中的第一个scene说明了如何利用简单的Lingo命令rotate和translate来移动模型和摄像机。
舞台上包含了一个3D精灵――一个含有四个字母的模型。还有一些精灵是显示模型与摄像机的当前位置与旋转角度的文本字段。当按下舞台左下角的说明文字中说明的键时,你可以移动和旋转摄像机和模型。(请注意,如果要旋转是要按住换档键的)
查看名叫“Interface 1”的脚本演员,它是控制3D模型和摄像机的运动的。这个脚本一开始就检查Shift键是否按住了,以决定是用rotate还是translate命令。

member(‘‘3d‘‘).model(‘‘A‘‘).rotate(-1, 0, 0, #world)
当使用rotate命令,事件会在一个键每次按下时轻微改变一个模型的方位角度。当使用translate命令,事件会在一个键每次按下时轻微改变一个模型的位置。每次键按下会在一个轴上改变模型的位置与旋转角度的一个单元值。你可以在舞台上的位置与旋转字段中看到每个轴上的数值是如何依赖于哪个键按下而改变的。
注意到rotate和translate命令包括了一个“#world”参数。这告诉Lingo模型的运动是相对于整个3D世界的,而不是相对于3D世界中的其它物体的。
影片提供了一个代替程序,Alternate Interface,可以代替“Interface 1”程序。这个代替程序履行修改位置与旋转属性的数值的同样的任务,却不是使用rotate和translate命令。

看scene 2

影片中的第二个scene说明了如何移动模型和摄像机相对于其它物体。在这个scene的3D世界中包括了三个模型而不是一个。每个有四个字母的模型都是大模型大写字母“P”的子对象。由于这种关系,小模型们可以相对于父对象大写字母“P”而运动,就象相对于3D世界或相对于它们自身一样。
现在的舞台看起来和scene1一样,只是多了三个按钮,是用来允许你选择小模型们相对于它们自己、它们的父对象或整个3D世界而运动。你可以通过选择标记是“Self”的按钮来选择小模型们相对于它们自己运动,选择标记是“Parent”的按钮来选择小模型们相对于它们的父对象运动,选择标记是“World”的按钮来选择小模型们相对于整个3D世界运动。
名叫“selfBeh、parentBeh和worldBeh”的脚本的作用是更新记录“#self , #parent , 或 #world”的全局变量gRelativeTo。举个例子:
on mouseUp
gRelativeTo = #self
end
然后,全局变量gRelativeTo被用来传送相对参数给在scene2Interface脚本中的translate and rotate命令。
member(‘‘3d2‘‘).model(‘‘A2‘‘).rotate(-1, 0, 0, gRelativeTo)
试验各种不同的相对运动并观察它们可见的不同效果。(记住要按Shift键呀!:)
下一篇:没有了
对我有帮助
(0)
0%
对我没帮助
(0)
0%
返回顶部
在线反馈
在线反馈