下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 Virtools

Virtools.doc

Virtools

mnxs
2011-05-26 0人阅读 举报 0 0 暂无简介

简介:本文档为《Virtoolsdoc》,可适用于IT/计算机领域

NeMoTM目录简介……………………………………………………………………………………系统需求……………………………………………………………………………………操作接口……………………………………………………………………………………Lesson创造第一个D互动场景………………………………………………………Lesson如何移动、控制与浏览Virtools里的对象…………………………………Lesson制作一个追踪目标的摄影机………………………………………………Lesson障碍物回避的处理…………………………………………………………Lesson如何将「行为模块」组合成行为模块流程………………………………Lesson参考术语表…………………………………………………………………附录:制作VIRTOOLS的D角色与对象之技巧………………………………简介欢迎使用Virtools中文手册。藉由这本简易的使用说明您将可以轻松地逐步体验Virtools强大的互动性开发能力──从着手开始制作第一个属于自己的互动场景到进一步发挥所有隐藏在Virtools里的先进功能直到完成您个人的精彩作品为止。首先我们会先向您简介Virtools的操作接口并接着在我们所为您提供的六个简短基本课程引导之下使您能够轻松地创造出第一个属于您自己的D互动场景。再来您将可以开启Virtools所附赠的范例档案(Documentation)藉由亲自动手操作与调整这些范例来验收您在前两个单元里所得到的学习成果。这些范例清楚地展示了Virtools所内建的「标准行为控制工具库」(standardbehaviorlibrary)是如何地运作而您将能够在极短的时间之内熟悉这些工具的操作和所能达到的效果。当您在实际作业中碰到任何困难时试试Virtools所提供的线上辅助说明功能(onlinedocumentation)。Virtools的线上辅助说明包含了「参考指南」(referenceguide)、「行为模块说明文件」(behaviordocumentation)、「参数设定文件」(parameteroperationdocumentation)、与「技巧提示」(shortcuts)等。这份为您所精心准备的线上辅助说明将能鱁适时地解答您的疑惑甚至激发您的创意。如果您遇到的问题在Virtools所提供的线上辅助说明里仍旧无法得到满意的解答您可以设法连上我们的网站(http:wwwaxisdcomtw)在这个不断扩充更新的客服网页里您将可以得到任何与Virtools相关的信息与知识。在这里您可以:─下载示范(demos)档案(包含该档案的行为模块流程behaviorflowcharts之全貌)。─下载额外的进阶主题文件(additionaladvancedtopics)。─进入「技术探讨论坛」之中与Virtools其它使用者们交换心得。─获取最新的Virtools相关新闻(Virtoolsrelatednews)。─在展示区里放上您自己的作品或下载其它玩家的精彩作品。─与他人共享「行为控制模块资源」(behaviorresources)。─进入「技术探讨论坛」之中与Virtools其它使用者们交换心得。对于您对Virtools的爱用我们感到十分地荣幸。也盼望能及早在「wwwaxisdcomtw」上见到您的大作并与您分享交流关于Virtools的使用心得。系统需求软件与硬件需求建议为了使Virtools能够被顺利地安装与使用首先您必须检查您的系统是否符合以下的设定需求。软件需求建议WindowsX,WindowsNT,WindowsDirectX以上版本InternetExplorer以上版本(用来开启线上辅助说明功能)Virtools包含了两个内建的绘图引擎(renderengines):VXDDDR(支持directD绘图运算)VXDISI(支持OpenGL,Glide与软件绘图运算)在安装的过程中Virtools会依据您的系统设定状态自动选择最佳的绘图引擎加以安装。但在安装完成之后您仍旧可以手动方式更换不同的引擎。硬件需求建议DirectD或OpenGL兼容的DD绘图加速卡(MBRAM以上)Soundcard声卡(建议配备)安装VirtoolsCD至入您的Virtools安装光盘片遵照屏幕上的指示进行相关设定动作若是您的光驱(CDROMdrive)无法自动开启Virtools的安装程序接口您可以手动方式执行光盘片上的setupexe档案Virtools安装程序同样能引导您进行安装的动作。操作接口Virtools的操作接口由数个窗口所构成主要包含以下几个部分:DLayout窗口(预设窗口:位于画面左上)在实时D的环境下展示您正在进行的项目作品并提供所有用来创造、圈选、或操作D组件所必需的工具及导览工具等。BuildingBlock窗口(预设窗口:位于画面右上)负责Virtools「行为模块」建构区块(behaviorbuildingblock)的调整与编辑。LevelView窗口(预设窗口:位于画面下方)让您能够以清楚的树状阶层结构来检视与编辑目前正在进行的项目作品。Schematic窗口(预设窗口:位于画面下方LevelView之后)这个窗口让您能够可视化与互动化地建构与编辑目前项目中所有的D组件。DLayout编辑器中的编修工具集位于DLayout编辑器的左上面版中以实时D的环境展示您正在进行的项目作品并提供所有用来创造、圈选、或操作D组件所必需的工具变形工具集(Transformationtools)用来圈选、移动、旋转、与缩放D组件。创造工具集(Creationtools)用来创造与调整所有的D组件内容:包含镜头(camera)、光源(light)、D虚拟对象(frame)、曲线(curve)、及网格虚拟对象(grid)、D虚拟对象(frame)、材质(material)、贴图(texture)、空间门(portal)等。导览工具集(Navigationtools)以D视角导览目前的项目:包含移动镜头(dolly)、视野调整(fieldofview)、镜头缩放(zoom)、摇摄(pan)、及镜头轨道设定(orbit)等。LESSON创造第一个D互动场景这个初步的课程将告诉您如何创造出第一个属于您的互动场景。首先您需要先汇入一组已经做好的D场景(Dscene)与一个D角色(Dcharacter)到Virtools里。然后在这个汇入的角色身上指定必要的「行为模块」(behaviors)这么一来您的角色就可以在场景当中依您键盘的指示来回地走动了。在您正式开始跟着下面介绍的程序逐步操作时记得一件事情:有些地方您或许并不完全明白但也别紧张关于这些进阶的细节我们都会在后面的课程里为您一一解答。而目前您只需要放轻松一步步地跟着教学课程作然后欣赏有趣的成果就可以啦!第一课我们假设这是您第一次开启使用您的Virtools。如果一切正常您将会看到如下的画面:选择面版Activatingpanels要选择任何一个面版您只需:在您想要选择的面版卷标(paneltab)上轻点一下鼠标左键。此时您所激活的面版卷标将以高亮度显示(highlighted)表示它是目前正在使用的面版。调整控制面版大小Resizingpanels每个控制面版都不会叠在另一个上头。意思是说当您调节某个面版的大小意味着其它面版也会相对地做出调整以符合不重叠的原则。对于屏幕上方的区域来说无论是面版的宽度或是高度都是可以被调节的但对于屏幕下面的面版而言则只有高度是可调的您可以自己在画面上试试看。拖曳您想要改变大小的面版直到该面版的大小符合您的期望为止。(如图鼠标必须对准最靠近边缘的面版缺口才能拖曳改变大小的面版对上方的面版可左右移动以调整宽度对下方的面版可上下移动以调节高度。)移动面版Tomoveapanelfromoneareatoanother:拖曳该面版的控制卷标上(paneltab)到希望放置的地方即可。让面版以全屏幕显示Tomakeapanelfullscreen:在该面版的控制卷标上(paneltab)上双击鼠标即可。复原某个面版的之前的尺寸Toreturntothepreviousscreensize:同样地在该面版的控制卷标上(paneltab)上双击鼠标即可。步骤:开启一个含有D模型的数据库(OpeningadatabasecontainingDmodels)选取「Resource」(来源)选单。在「Resource」选单中选取「OpenDataResource」(开启资料来源)。从「LessonsTopics」资料夹当中选取「DemoResourcersc」。此时一个新的面版(DemoResource)将会在画面右方的BuildingBlocks窗口上方出现。步骤:汇入一个D模型(ImportingaDmodelintotheproject)选取「DemoResource」卷标(教学课程数据库)。在「DEntities」图标上单击鼠标左键。将「Roomnmo」档案从「DEntities」中拖放到「DLayout」窗口里。此时您将会在「DLayout」窗口里看到一间实验室。这表示您已经将一组预先建好的D模型组成功地汇入Virtools之中了。步骤:汇入一个D角色(ImportingaDcharacterintotheproject)在「DemoResource」卷标里单击「Characters」(角色)图标。将「Scientistnmo」档案从「Characters」中拖放到「DLayout」窗口里。此时您将会在「DLayout」窗口里看到一个角色正站立在先前汇入的实验室当中。另外将「Characters」下的「Animations」里有四种动作全选后拉Scientist里这表示这个D角色与该角色的动态资料已经成功地汇入Virtools之中了。步骤:对您的角色指定「行为模块」(Applyingbehaviorstothecharacter)为了要使先前汇入的角色能随着键盘的指令在房间里四处走动您需要指定一些「行为模块」到它的身上。所谓的「行为模块」(behavior)指的是一组用来描述「该组件在特定的条件或既定的事件之下应如何行动或反应」的描述档案。「行为模块」可以被应用在各种不同的组件上头诸如「对象」(objects)、「角色」(characters)、「镜头」(cameras)等等……。「行为模块」的「CharacterController」(角色控制器)能够被用来管理一个角色的动作(animations)而「KeyboardController」则可以定义键盘上的按键来控制角色的动作。选取「BuildingBlocks」卷标。打开「Characters」。打开「Movement」(动作)。将「行为模块」的「CharacterController」拖到DLayout面版里的角色Scientist身上。此时将会看到一个黄色的立方体线框也就是「外切框」(boundingbox)包覆在该角色上这表示该角色目前已被选取只要一放开鼠标按键就确定赋予他这个行为模块。当将「行为模块」拖放到角色身上这个动作时紧接着就会出现「设定对话框」(configurationdialogbox)这是用来指定或调整属于该「行为模块」的相关参数。在这个例子中跳出的对话框将能够让您指定「动作对应」(assignanimations):使用「下拉式选单」(pulldownmenu)选择下列的动作。「StandAnimation」、「WalkAnimation」、「BackwardWalkAnimation」。选取「OK」现在角色有了第一套的「行为模块」。注意:现在你可以清楚地在「SchematicView」窗口里看见「行为模块」被加到一个组件上面的效果。但关于如何利用「SchematicView」来作进一步的控制与管理我们将在后续的课程里为您作更详细的说明。打开位于「BuildingBlocks」面版里的「Controllers」资料夹。再打开「Keyboard」资料夹。将「行为模块」的「KeyboardController」拖放到DLayout面版里的人物角色Scientist身上。在对话框中选取「OK」。注意:「KeyboardController」的设定值已预先被对应在键盘最右边的九宫格数字方向键上因此这里不需要任何额外的参数指定。步骤:测试演出效果(Testingthescene)现在我们可以开始对目前的进度做初步的测试与观察。Virtools可以不需重复所有做过的程序而能直接地执行演出测试这使您能够立即地看到先前试作的结果并随时轻易地做任何调整与改变。按下画面右下角状态区(statusbar)上的「Play」按钮。这样我们将直接进入「播放模式」先前所完成的角色「行为控制」指定将能在此展现效果。使用键盘最右边的数字方向键试试操作您完成的角色四处走动看看。按住「Insert」键角色会由走路变成跑步哦!再按一次「Play」按钮来暂停这个小游戏。按下「RestoreInitialCondition」按钮(回复初始状态)使所有的设定回到开始状态。这个按钮会产生类似录像机「回带」(rewind)的效果!注意:在这个范例中您会看到您的角色似乎浮在半空中别紧张在第四课里我们将教您如何使您的角色安稳地站在地面上。步骤:储存作品(Savingthecomposition)从「File」选单里选取「SaveComposition」(储存作品)选项。替您的第一个作品取个好听的名字(像是『myscene』之类的)然后按下「OK」。现在您已经储存了您的第一个作品了包括所有的D模型、动作、与「行为模式」项目都已被成功地记录下来。这个成品将可以用独立的「VirtoolsPlayer」来播放。步骤:以VirtoolsPlayer预览演出(ViewingthesceneintheVirtoolsPlayer)从「File」选单里核取「Exit」选项跳出Virtools。从Windows的「开始」菜单中激活「VirtoolsPlayer」。选择「Load」。选取您的作品(myscenecmo)并选取「OK」。选取「Play」。在VirtoolsPlayer这个独立的播放程序里您将能欣赏到您亲手完成的第一个作品就如同先前在Virtools编辑工具里所看到的一模一样。接着可以试试看按鼠标右键当出现一个菜单时选择FullscreenSetup(全屏幕播放)看看效果有什么不同。最后按左上角ESC键可以随时跳离全屏幕模式。LESSON如何移动、控制与浏览Virtools里的对象在这一课里您将会学到:如何操作Virtools里的组件。如何从清单里监控组件的资料与状态。如何在DLayout窗口里移动、控制与浏览全局。步骤:开启一个既存的作品(Openinganexistingcomposition)从「File」选单中选取「LoadComposition」(读取作品)选项。选取您所要汇入的作品(假设它叫做『myscenecmo』)然后按下「OK」。步骤:在DLayout窗口里操纵与调整组件(ManipulatingentitiesintheDLayoutwindow)DLayout窗口提供了能让您在场景中移动、旋转、还有缩放对象的工具集。要使用这些功能首先您要选取您所想使用的工具而后指定应用这些效果的限制方向轴最后在D窗口里选取要施加效果的对象组件就可以了。举例来说要是我们想把场景理得那张桌子抬离地面的话也就是把桌子沿Y轴方向向上抬起:点选「Selectandmove」(选取与移动)工具。点选「Yaxisconstraint」(限制Y轴方向)按钮。点选场景中的桌子并将它拖曳上来。然后将桌子放到任何您想放置的位置。要是你在拖曳的过程里想取消这项动作、而使桌子回复原来的位置您只要途中按下鼠标右键(但仍然得按住左键)就可以取消了。若要改变某个D组件的方向:点选「SelectandRotate」(选取与旋转)按钮。现在你可以开始旋转你所选取的D组件或选择另一个您想旋转的组件来改变方向啦。上面所提到的方向限制轴就是用来决定旋转的轴心方向的。若想缩放D组件在「scale」(缩放)图标上按住鼠标左键不放一个额外的「按键选单」(MenuButton)会弹出来里面包含了三种不同的缩放模式:均质缩放Uniformscaling(默认值):对象会在三个轴向上等比例地缩放。一般缩放Normalscaling:对象会沿着指定的轴线缩放(X、Y、Z轴或任意双轴)。定积缩放Volumetricscaling:对象会在体积固定的条件下做缩放的动作(X、Y、Z轴或任意双轴)。步骤:从DLayout窗口里选取组件并在LevelManager里监看它们的状态(SelectingentitiesintheDLayoutwindowandmonitoringthemintheLevelManager)LevelManager能一目了地观察目前作品里所有组件的状态。也是方便在复杂的场景中选取组件并加以操作如复制或删除等功能的地方。选取「LevelManager」卷标。在「Global」资料夹上双及鼠标左键。此时一些列出作品内容中所有组件的次资料夹会被开启包含了所有的D对象(Dobjects)以及它们的贴图与材质等资料、角色(characters)、镜头(cameras)、与光源(lights)、网格线(Mesh)材质(material)、贴图(texture)等等。从「Character」资料夹中选取「Scientist」这个角色。此时在D场景里该角色的周边会出现一个白色的立方体「外切框」(boundingbox)表示它已经被选取了。要选取一个组件有下列两种途径:可以直接在D视角里直接点选该对象或者也能在LevelManager里选择两种方法都一样有效就看编辑时的方便而定。但严格说来在LevelManager里作业较为便利且富弹性甚至能够做到一些在D场景里所不能做到的控制。举例来讲要在D场景里直接选取一张贴图(texture)是不可能的这个动作只能在LevelManager里完成。在两种方法中您都可以选取复数的组件只要在选择的同时按住Ctrl键不放就可以了。LESSON制作一个追踪目标的摄影机这一课将会教您如何在Schematicview里自由地组合「行为模块」以便在您的组件上加入进阶的「行为模块」的互动控制。在本课的例子里我们将会创造出一个会自动锁定角色头部的camera而当我们移动该角色时该camera也会跟着角色在场景中四处移动并保持动态的锁定状态。由于这是您第一次在SchematicView里以图像化方式撰写Virtools程序的经验这是Virtools非常核心与重要的部分我们建议您最好一步一步地跟随课程的指示循序渐进并且仔细地看过所有的解释与说明如此我们保证您将会事半功倍马上进入状况。这一课里包含了许多关于Virtools如何运作的重要概念基础请用心学习哦!步骤:新增一个镜头(Creatinganewcamera)在「DLayout」工具列里点选「CreateCamera」(新增镜头)。此时在场景中会出现一个新的镜头取代了原先的PerspectiveView恭喜您您刚刚创造了一个名为NewCamera的新camera。这个新的camera会出现在与原来所在PerspectiveViewcamera(透视视角镜头)相同的位置上。现在一个新的面版将出现在LevelManager的右边:CameraSetupview。这个面版让您能够检视与编辑所有关于这个camera的设定参数(包括位置、方向、视线范围……等等)。这个新增的camera可以从几个地方呼叫出来:您能够从Manager里的Camera资料夹里开启也可以在DLayoutview中的AvailableCameras下拉选单里找到它。为了能在DLayout里看见这个新的camera您将需要切回先前窗口的状态(PerspectiveView)从「AvailableCameras」(镜头类型)下拉选单里选取「PerspectiveView」(透视视角)使镜头回复标准透视视角。点选「DollyCamera」(推移镜头)图标这时候使用Dollycamera(推移镜头)向后移动一点点。在DLayout窗口中按下滑属左键并慢慢地向DLayout窗口下方拉动鼠标这时候我们可以从比较远的距离观察我们的场景(相当于镜头拉离我们所建构的实验室)。这个动作让我们能够看到我们之前所创造出来的新camera这个新camera目前以一个白色摄影机状的盒子来表示。按下OrbitCamera按钮以环视整个场景。如果没有意外的话您将会看见您所设定的camera跟它所锁定的目标两者间透过一条黄色的线连结起来。步骤:对镜头指定「行为模块」(Applyingbehaviorstothecamera)我们想要让NewCamera达成的任务如下:首先我们希望能够在一进入这个场景的同时就以NewCamera来作为我们的观察视点(这件事情只要透过『行为模块』SetAsActiveCamera就可以达成了)。然后我们想要使NewCamera能够持续地锁定角色再说清楚一点也就是在Virtools开始算运算其它图形资料之前就先将镜头所定在角色上面(使用『行为模块』CameraOrbit)。选取「BuildingBlocks」卷标。打开「Cameras」资料夹。打开「Montage」资料夹。将「行为模块」「SetAsActiveCamera」拖放到指定的镜头上。选取「Schematic」卷标从Schematic可以检视摄影机互动模块的组合状态(NewCamerascript)。一个代表SetAsActiveCamera的方块出现方块的左边有一个输入端(input)而右边则有一输出端(output)。从「BuildingBlocks」面版中打开「CamerasMovement」资料夹。将「行为模块」CameraOrbit拖放到Schematicview里摆在「行为模块」SetAsActiveCamera之右如图所示。在Schematicview里将鼠标移到CameraOrbit「行为模块」方块上按下右键这时会出现一个选单然后在选单里选择Editparameters。这个动作将会开启一个对话框这个对话框能让您指定该camera所要锁定的目标。点选按键(Eyedropperbutton)并从DLayout视角中选取角色Scientist。点取OK。步骤:设计一套「行为模块流程」(Designingabehaviorflowchart)现在我们的NewCamera已经拥有两个「行为模块」了。注意:在Virtools里所有的「行为模式」实时处理与绘制每执行一个Frame(画格)都依循下列的执行程序运作:处理「行为模块」运算绘制场景处理「行为模块」运算绘制场景依此类推在Virtools中一个基本处理周期(basiccycle)(包括一次的『行为模块』处理与场景算图)被称为一个Frame(画格)。举例来说framerate(画格更新率)为fps代表了上述的基本处理周期在一秒钟里需要被连续执行次。在这一课里我们将会以Frame的概念来描述所有的「行为模块」是如何地被连续组合起来的。注意:Frame这个字在Virtools也指在D环境里被用来标示一个位置或是有方向性的虚拟对象小心别混淆了(其实在其它的软件里如DMAX这样的对象通常被叫做Dummy)。以下就是我们所希望在camera上所执行之「行为模块」的顺序:激活演出场景。切换到NewCamera(执行SetAsActiveCamera)。运算绘制场景。让NewCamera锁定在角色(执行CameraOrbit)。运算绘制场景(Renderthescene)。回到第步(以便在每一个新的Frame绘制之前都能重新执行CameraOrbit)。步骤:观察所设定的「行为模块」如何运作(Understandinghowbehaviorsbasicallywork)在学习如何创造「行为模块流程」之前我们得花点时间搞清楚「行为模块」是如何运作的。基本上所谓的「行为模块」就是一些执行程序中的组件当其被触发激活时就会展开特定的作业与效果。这就是它们「输入端」(inputs)(位于每个『行为模块』的左侧)的作用:「输入端」(inputs)接收以事件为基础的讯号(eventbasedsignals)并负责触发该「行为模块」激活之后一连串的处理程序。某些「行为模块」或许需要设定一些参数以执行它的工作。这些参数能够藉由一群称为「参数输入插脚」(inputparameterpins)的小点来输入与控制您可以在「行为模块」方块的上方找到这些「参数输入插脚」。一旦某个「行为模块」完成它所负责的任务它将会传送一些事件基础讯号出去透过位于盒子右方的「输出端」(outputs)然后接着触发连结到这些「输出端」的其它「行为模块」继续执行它们的任务。一个「行为模块」的执行结果或许还会输出一些「计算参数」(computingparameters)而这些「计算参数」则是透过盒子下方一些称为「参数输出插脚」(outputparameterpins)传送出去的。步骤:在Schematicview里新增「行为模块流程」(CreatingthebehaviorflowchartintheSchematicview)现在让我们试试看以一些基本的规则来建立属于自己的「行为模块」流程。我们可以看到在最左边的箭头状的Start尖端与「行为模块」SetAsActiveCamera之间的连结这连结所代表的意义是:当您按下Play按键开始播放您的作品时「行为模块」SetAsActiveCamera将第一个被触发激活。一旦该「行为模块」的工作完成(切换到NewCamera)SetAsActiveCamera将藉由它盒子上的「输出端」送出一个讯号。若是我们希望接下来要执行CameraOrbit我们得在SetAsActiveCamera的「输出端」与CameraOrbit的「输入端」之间建立起连结才行。点选Schematicview工具列中的Link选项。在SetAsActiveCamera里选择output。在CameraOrbit里选择input。到这里我们已经建立起下列的简单「行为模块」流程了:激活演出场景。执行SetAsActiveCamera。运算绘制场景。执行CameraOrbit。注意我们刚刚所建立的连结上头显现的指示:这代表该连结所会延续(delay)的时间。它告诉我们从SetAsActiveCamera的「输出端」传送到CameraOrbit的「输入端」需要花费个Frame的时间。换句话说SetAsActiveCamera与CameraOrbit两个动作在以Frame为执行单位里已经被串成一个执行程序。按下状态区里的Play按钮以激活演出场景。如您所见现在NewCamera变成了activecamera(Virtools以此camera为最起始的视点算出整个场景)目前此camera正锁定在角色上。要是您使用数字键盘上的方向键让该角色在场景里四处移动一下您会发现NewCamera并没有跟着角色而动。别担心看看我们刚建立的流程:原因出在于我们只要求该camera在开始演出场景时锁定角色一次而已。按「RestoreInitialCondition」(回复初始条件)按钮停止演出。按下状态区里的Play按键再次激活演出场景。正如您所看到的现在camera再一次地对准了目标角色。当然啦要是您现在将角色移开的话camera是还不会跟着走的。按「RestoreInitialCondition」(回复初始条件)按钮停止演出。步骤:在「CameraOrbit」里加入一个循环(CreatingafeedbacklooponthebehaviorCameraOrbit)要想让camera持续锁定追踪该角色我们必须在每个frame运算前都执行一次CameraOrbit才行。要达到这个效果我们得在它的「输出端」和「输入端」间建立起一道延续值为个Frame的连结。如此「行为模块」CameraOrbit将会在每个新的Frame开始执行时重复执行一次。在Schematicview工具列里点选Link指令。先在CameraOrbit里选择output。再将鼠标移向右边并轻击一下以创造一个连结控制点(linkcontrolpoint)。如下页所示般轻击鼠标继续创造另外两个连结控制点。按下CameraOrbit的「输入端」。按下RestoreInitialCondition按钮以停止演出播放。现在按下StatusBar上的Play按钮重新播放一次演出场景。我们发现camera已经会追踪锁定移动中的角色了因为「行为模块」CameraOrbit在每个frame绘制之前都会被重新执行一次。按下Schematic工具列上的Trace按钮以激活Trace模式并实时地观察执行中的「行为模块」:您会看到以红色的高亮度显示着的「行为模块」CameraOrbit正一次又一次不断地执行着。恭喜啦!您已经在Schematicview里创作了自己的第一个「行为模块」流程了。在下一课中我们将让您知道当您能将Schematicview运用自如的时候Virtools能够展示多么强大的威力!记得要储存您辛苦完成的作品哦因为您将会于下一课里在上头继续增添新的东西。只要用第课里所学到的VirtoolsPlayer就可以随时观赏您的得意作品了!LESSON障碍物回避的处理这一课里我们将教您如何为您的角色附加上基本的障碍物回避功能使用到的是「碰撞侦测行为模块」与「属性设定」。在Virtools里要处理障碍物回避的方式其中之一就是利用Virtools所提供的「碰撞总管」(CollisionManager)「碰撞总管」会自动替您计算所给定的D对象间会产生碰撞与否是个很方便的工具。要达到这个效果我们需赋予角色叫做PreventCollision的「行为模块」。一旦激活这个「行为模块」会询问「碰撞总管」相关的信息以决定该角色会跟哪些D对象产生碰撞行为。若有任何碰撞被侦测到这个「行为模块」将会让角色稍稍后退以避免直接撞击。要执行碰撞侦测测试您的「碰撞总管」得要有一张会发生碰撞的障碍物清单才行。我们必须指定出场景中会发生碰撞的D对象并将其列入障碍物清单里头。要这样做我们得将这些对象一一挑出来并且在个别对象上头贴上「障碍物」(obstacle)的属性。所谓的属性(Attributes)其实还是一些特定的参数您可以将它们贴到场景里的个别组件上用来给它们一些指定的特性。在这一课里我们只会用到「障碍物」(obstacle)属性(可被碰撞侦测引擎所解读)其它还有许多不同的属性能够被贴在组件上头(像是角色的『生命值』、物体的『重量』等等)我们有机会再做介绍。步骤:将计算机设定为潜在障碍物属性(Declaringthecomputerasapotentialobstacleusingattributes)轻击LevelManager卷标。从Global资料夹里打开DObjects子资料夹。从DLayout工具列上点取Selecttool图标。从DLayoutview中点取计算机以选择它。一个「外切框」(boundingbox)会出现在DLayout中这表示该桌子已经成功地被选取了。计算机(Newcomputer)同时也在LevelManager里以高亮度显示就如一般被选取的组件一样。在LevelManager里的Newcomputer上按下滑属右键并从选单里选取AddAttributes。这个动作开启了AddAttribute对话盒。「碰撞总管」CollisionManager上单击鼠标以开启对应的属性目录。选取FixedObstacle。点取AddSelected。点取Close。您刚已经成功地将FixedObstacle的属性给附加在计算机上了。这台计算机目前已经被「碰撞侦测引擎」登录为一个潜在的障碍物了。步骤:应用PreventCollision(ApplyingthePreventCollision)在开始将该「行为模块」应用到角色上面之前先按下statusbar上的Play按钮激活场景演出。以方向键让角色在场景中四处游走一番然后让角色停在书桌前面(注意不要让角色和书桌接触)。再一次按下Play按钮暂停演出的进行(注意不要按到RestoreInitialCondition按钮因为您只是想暂停而不是想倒带!)。选取BuildingBlocks。开启Collisions资料夹。开启DEntity资料夹。将「行为模块」PreventCollision拖曳到角色上。在重新测试场景之前让我们从Schematicview里先检视一遍角色所有行为模块的script吧。选取Schematic卷标以开始检视scripts。使用垂直滚动条来检视角色的script。顺利的话您将会看到下列的script。在Schematicview里您将可以很轻松且可视化地辨识所有script里的「行为模块」只要轻轻地点选代表该「行为模块」的盒子就行了甚至是要任意拖动它们都不是问题。正如您所能看到的「行为模块」PreventCollision并不像script里的其它两个「行为模块」般以亮灰色显示。这告诉您在您点取RestoreInitialCondition按钮之前这个「行为模块」是还不算数的。此时点取Play按钮再次激活场景的演出跳过「行为模块」PreventCollision的执行:您将会发现角色仍然无视于障碍物的存在轻松地穿过面前的书桌如入无人之境。点取RestoreInitialCondition按钮。「行为模块」PreventCollision现在就正式算数了(如下图里的Schematicview所示一般)。按下Play按钮让场景再次激活。这一回角色就不再会穿过桌子而是乖乖地停在桌前过不去了。步骤:为您角色的script来张快照!(Attachasnapshottothecharacter'sscript)如您所见Schematicview显示了我们场景中所有组件上的scripts(在这个例子里指的是角色与camera)。为了让您的scripts能更便于阅读与日后检索Virtools让您能为您所写的script加上一张从场景理撷取的快照插图。从DLayout工具列中点取SnapShot按钮。这个动作开启了SnapShot窗口。从SnapShot窗口里点选Capture按钮。在DLayout里任意移动鼠标调整视线然后在满意时按下滑属左键。此时您拍下了一张场景快照并出现在SnapShot里。将这张快照从SnapShot里拖放到角色的script中并将其放置在snapshotspace里如下图一般。步骤:为您的script加上批注(Addcommentsinthescript)在Schematicview里的角色script背景任意处按下鼠标右键开启选单。从选单里选取AddComments。这个动作在您的script里开启了一个批注栏在里面您可以任意地写下您对特定script所做的批注也可以打上中文批注喔!在刚刚所新增的批注栏上轻击鼠标左键以选择它。现在它应该会变成灰色且Comment字样应该会出现在Schematicview的工具列中。在Schematicview的工具列里Comment字样上双击鼠标左键以编辑您所想下的脚注文本。键入「Thisscriptcontainsthemainbehaviorsforourcharacter」并按下Enter键。步骤:让角色能「脚踏实地」!(Forcingthecharactertokeepwalkingonthefloor)在存盘之前让我们先回顾一下刚刚学到的几个基本步骤。您或许已经注意在场景中您的角色并没有「脚踏实地」老老实实地站在地面上:您的角色居然漂浮在半空中仿佛像有超能力一般。事实上由于角色和实验室基本上是分别被创造出来的(甚至或许来自完全不同的Dmodeling工具)因此没有人告诉过您的角色说实验室里的某个D对象代表「地面」。要是我们想让角色真的能「脚踏实地」我们就需要将场景中的特定D对象宣告为「地面」才行(使用Floor属性)然后再「教导」您的角色如何把脚踏在地上(使用『行为模块』CharacterKeepOnFloor)。在这个例子里实验室里代表「地面」的Dobject被我们命名为FloorOffice。从LevelManager里开启DObject资料夹。在LevelManager里选取对象Ground(或直接在DLayout里以选取工具选择实验室的地板)。在LevelManager里的selection上右击鼠标并从选单里选择AddAttributes。在CreateAttribute对话盒里开启FloorManager数据夹并选取Floor。点选AddSelected。点选Close。好了现在我们已经将「地面」宣告完成了。选取BuildingBlocks卷标。开启Characters资料夹。开启Constraint资料夹。将「行为模式」CharacterKeepOnFloor拖放到角色身上。让我们再检视一次角色的script。如您所见有些「行为模块」盒子的左方拥有两个「输入端」(CharacterController,KeyboardController,PreventCollision)但CharacterKeepOnFloor则只有一个。举例来说「行为模式」KeyboardController就有两个分别被称为「On」跟「Off」的「输入端」(在Schematicview里将鼠标移动到这两个『输入端』上就可以看它们的名称)在这个script里「On」与起始点连结这意味着在场景激活的同时「行为模式」KeyboardController在整个场景演出里会持续地发生作用(使用Trace模式来做检查)。而「行为模式」CharacterKeepOnFloor就只有一个单一的「输入端」称为「In」。一旦被触发这个「行为模式」变会在垂直方向上重新调整该角色的位置(以确保角色能站立在我们之前所宣告过的『地面』上)并且藉由它的「Out」输出端传送出一个讯号。因此它只会被执行一次就在场景刚开始被执行第一个Frame时。因为我们实在想让角色能持续地保持在地面上走动所以我们就必须在每个Frame激活之前都要先执行这个贴地的指示于是我们只要在它的「Out」输出端与「In」输入端间加上连结就可以了:在Schematicview里选取Link按钮制作一个循环(feedbacklink)。按下RestoreInitialCondition按钮。按下Play按钮。这时您的角色已经可以精确且安稳地在地面上走动咯。好啦您现在可以将您的场景储存起来然后用VirtoolsPlayer慢慢地欣赏喽。LESSON如何将「行为模块」组合成行为模块流程这一课里我们的目标是建造一道当玩家用鼠标点选就能开关自如的门。由于Virtools所提供的「行为模块」数据库里并没有这样的东西存在。因此我们必须将使用现存的「行为模块」在Schematicview里整合起来组成一个「行为模块」流程(或称为『行为模块图』)来达成我们所需要的功能。最后我们还可以将把这个流程命名为「Open」如此一来我们就能将这个建好的「行为模块」流程Open应用在场景中其它的对象上甚至于我们还可以把这个新的「行为模块」流程储存在数据库里把它当成一个新的「行为模块」以供未来使用哦。首先请重新加载您先前储存的作品。以下就是我们需要为Open所编写的「行为模块流程」:基于您在第课与第课里所学到的东西您应该能够毫不费力地把这个「行为模块流程」建立起来吧?!您将需要用到下列的三个「建构区块」:WaitMessage(在LogicsMessage里)Sequencer(在LogicsStreaming里)Translate(在DTransformationsBasics里)要得到这些「行为模块」如何运作及怎么使用等信息只要在该BuildingBlock里该「行为模块」的名字上头双击鼠标左键即可。这个动作将会开启位于BuildingBlock面版上方的「线上说明」OnlineReference里面就会出现关于该「行为模块」的所有说明文件。举例来说下一页所显示的就是关于「行为模块」Translate的说明文件:我们建议您在使用「行为模块」前常常查询相关的线上说明这样对您的进步是很有帮助的。步骤:新增「流程模块」(Creatingtheflowchart)按照下列步骤:将「行为模块」WaitMessage拖放到实验室的大门上(如图)。将「行为模块」Translate拖放到Schematicview中门的script里重复两次。将「行为模块」Sequencer到Schematicview中门的script里。您的script现在看起来应该像是这样:从WaitMessage的Out输出端到Sequencer的In输入端作一个连结。从Sequencer的Out输出端到上方的Translate的In输入端作一个连结。从Sequencer的Out输出端到下方的Translate的In输入端作一个连结。从upperTranslate的Out输出端回WaitMessage的In输入端作一个循环。从lowerTranslate的Out输出端回WaitMessage的In输入端作一个循环。步骤:了解您的流程表(Understandingtheflowchart)现在这流程是被连接起来了。让我们进一步解释一下倒底发生了甚么事情!首先WaitMessage先被执行了。这个「行为模式」基本上等待着从「门」收到给定的讯息而后藉由其「输出端」送出一个讯息(也因此触动了Sequencer的动作)。而等待输入的Message则是由「行为模块」WaitMessage的「参数输入插脚」(inputparameterpin)处进来的。按住在WaitMessage之「参数输入插脚」上方的小方块并将其向上拖曳到如图所示的位置然后松开鼠标。这个小方块代表一个localparameter(WaitMessage本身的参数设定钮)它是透过一道parameterlink(参数连结以一条虚线表示)传入「行为模块」WaitMessage。双击localparameter一个localparameter有一个名字(name)包含了一个给定类型(type)(整数integer、串行string、向量vector……等)的值(value)并且会连结在一个script上头(在这个例子里是连在『门』的script上面)。此例中参数的名字叫做Message它的值为「OnClick」。在localparameter上按下鼠标右键并从选单里选取EditMessage。EditParameter对话盒会显示出该参数的名字、类型、与值等资料。点选OK。让我们来检视一下这个「行为模块流程」。首先WaitMessage先被执行它正在等待OnClick传来讯息。也就是它正在等待使用者在「门」上按下他鼠标的左键。当使用者在门上按下鼠标左键时WaitMessage会经由它的「输出端」送出一个讯号并触动Sequencer的In「输入端」。根据线上说明文件的描述当Sequencer的输入端In被触动之后Sequencer会交替地由它的输出端Out与Out输出讯号。这意味着Sequencer首先将会经由它的Out输出端送出一个讯号先触动上面的Translate。然后Translate依照着它门板的轴线移动把门打开。最后由它的「输出端」送出一个讯号再一次触动WaitMessage等待新的OnClick讯息。当使用者第二次按下门板时「行为模块」WaitMessage会再次触动Sequencer而

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/50

Virtools

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利