|
|
创造虚拟世界 Director与虚拟世界Shockwave 3D
佘友军
Macromedia公司新近推出的Director 8.5 Shockwave Studio,为在线用户和离线用户带来了互动的三维世界。较之以前的版本,Director的最大变化就是加入了Shockwave
3D引擎。通过Director 8.5,可以创建交互的三维影片。
Shockwave 3D的应用范围很广。从简单的三维文字动画,到交互的三维游戏环境,都可以通过Shockwave 3D技术表现出来。通过Netscape
Navigator浏览器或Microsoft Internet Explorer等支持Shockwave的浏览器,用户可以浏览你的互动影片。不过需要安装Shockwave播放器,这种免费的播放器在很多的网站都可以下载。
Director为Shockwave 3D加入了几百条控制Lingo,结合Director本身功能,无疑在交互能力上Shockwave
3D具有强大的优势。
创建Shockwave 3D场景
用户可以通过Lingo来创建Shockwave 3D场景,不过要想创建复杂一些的场景就必须借助3DS MAX或MAYA等三维软件。我们以3DS
MAX为例,Discreet公司提供了输出Director W3D格式文件的插件,该插件适用于4.0以上版本,供用户免费下载。你可以在www.discreet.com/products/3dsmax/exporter/
register/下载。解压缩后将文件名为SW3D_Exp.dle的文件复制到“3ds max 4”目录下的“plugcfg”子目录中,即可完成该插件的安装。
启动3DS MAX4,创建一组静态物体。该场景中包含一个苹果(Apple)、一个花瓶(Vase)和三个梨子(Pear01、Pear02和Pear03)。选择菜单命令“File→Export”即可导出为Shockwave
3D Scene Export (*.W3D)格式的文件(如图1)。
控制Shockwave 3D世界
选择菜单命令“File→Import”导入刚才建立的场景文件,在角色表中选中该文件,并将它拖动到舞台上。我们要实现的效果是:当用户按下向左箭头时,摄像机镜头就会向左移动,屏幕上的场景就会发生相应的变化。按下其他三个方向的箭头也会产生相应的移动。
图1
要想实现如此的功能,离开了Lingo是无法想象的。对于英文不太好的朋友来说,这实在不是一个好消息。还好,Macromedia公司为我们提供了3D
Behaviors。即使你一点也不懂得Lingo,也可以轻松的创建和控制三维环境。
在开始我们的实例前,我们要了解一下关于3D Behaviors的一些知识。Director 8.5中包含了两种不同类型的3D Behaviors:Trigger(触发器)和Action(动作)。当用户某一动作(如鼠标单击)发生时,Trigger将向系统发出信号,从而引起指定的Action的执行。
图2
在Director中,Action又分成三种:Local Action(本地动作)、Public Action(全局动作)和Independent
Action(独立动作)。当你把一个本地动作赋给一个Sprite后,该动作只能被赋给同一Sprite的触发器所触发。与本地动作不同的是:公共动作能被任何触发器触发,不管触发器是被赋给同一Sprite还是其他的Sprite。公共动作使用和本地动作一样的触发器,而独立动作根本无须触发器触发即可执行。比方说你可以使用独立动作中的Automatic
Model Rotation,让场景中的某个模型自动旋转;利用Model Rollover Cursor,当你的鼠标指向某个模型时,指针将改变形状。
制作实例
通过摄像机,你可以观察到你所建立起来的虚拟世界。和现实生活中的摄像机一样,你可以通过移动Director的摄像机,从不同的角度和距离观赏你的虚拟世界,就好像在其中漫步一样,感觉不错喔!
要想让摄像机产生向上、下、左、右等方向的移动,我们要用到库面板中的两个Behaviors。并且Director提供的参数窗口,可以让你精确地控制摄像机的移动:
1、单击工具栏上的库按钮,打开库面板(如图2),确保3D Action Behaviors处于显示状态。
2、拖动Pan Camera Horizontal Behavior到舞台上的3D场景上,释放鼠标左键。
3、弹出一个对话框窗口,在Degrees to Pan Per Frame后的输入框中,设置每帧移动的幅度为10。在“Which group
does this behavior belong to?”的文字框中输入Pan,创建一个名为Pan的组。需要注意的是:动作和它的触发器必须在同一个组内。
4、如果你这个时候单击播放按钮,事实上什么反应也没有。通常情况下,动作和触发器总是成对出现的。触发可以是键盘触发,也可以是鼠标触发。如果没有定义好键盘输入或鼠标输入发生,动作一般不会得以发生。(上文提到的独立动作除外)下面我们为Pan
Camera Horizontal behavior添加触发器。在库列表中选择“3D→Triggers”,拖动Keyboard Input行为到舞台上的场景文件上。
5、弹出Keyboard Input参数设置窗口,在Which key will be used中选择Left Arrow,在Select
a Group and Its Action中选择Group Pan - Pan Camera Left,即当用户按下左向箭头时,就将摄像机向左移动。
6、与上面的步骤类似,再次拖动Keyboard Input至场景文件上,在弹出的对话框中依次选择Right Arrow和Pan - Pan
Camera Right即可设置当用户按下右向箭头时,将向右移动摄像机。
OK,现在就可以单击播放按钮,当你按下左向箭头时,就会看到场景左侧原来无法看见的部分。当你按下右向箭头时,镜头也会产生相应的运动。下面我们要做的就是让摄像机产生竖直方向的运动。
这次我们使用的是Pan Camera Vertical behavior行为,具体设置方法与上述类似,不再赘述。通过这一步骤我们将实现:当用户按下上向箭头(Up
Arrow)时,将镜头向上移动(Pan Camera Up)。当用户按下向下箭头(Down Arrow)时,将镜头向下移动(Pan Camera
Down)。
至此,你就可以让你的用户们自由地漫步在你所建立的三维世界了。感觉很爽吧!当然如果你愿意的话,你还可以让你的场景中的模型具有交互性能。例如当你按下场景中的窗户时,窗户就打开了,感觉如何?呵呵!
|
|