下载

1下载券

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

上传资料

关闭

关闭

关闭

封号提示

内容

首页 Virtools开发3D游戏

Virtools开发3D游戏.pdf

Virtools开发3D游戏

55479009
2012-12-29 0人阅读 举报 0 0 暂无简介

简介:本文档为《Virtools开发3D游戏pdf》,可适用于IT/计算机领域

Virtools开发D游戏一、制作一个追踪目标的摄影机这一课将会教您如何在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就可以随时观赏您的得意作品了!NextPage二、障碍物回避的处理这一课里我们将教您如何为您的角色附加上基本的障碍物回避功能使用到的是「碰撞侦测行为模块」与「属性设定」。在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来张快照!(Attachasnapshottothecharactersscript)如您所见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慢慢地欣赏喽。NextPage三、如何将「行为模块」组合成行为模块流程这一课里我们的目标是建造一道当玩家用鼠标点选就能开关自如的门。由于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而这一次将会触动下方的TranslateTranslate门板将因此而关上。步骤:编辑相关参数(Editinglocalparameters)现在我们所要做的就是替两个「行为模块」Translate设定适当的参数让上方的Translate专门负责开门而下方的Translate则负责关门。·鼠标移至上方的Translate按下右键从选单里选取EditParameters。·Editparameters对话盒是用来交代上方的Translate动作的三个参数TranslateVentor(移动向量)Referential(依据对象)、和从属关系连动设定Hierarchy。您都可以在线上说明里找到关于这些项目的详细说明。·轻点TranslateVentor区并将其值改为x=。·点选OK。现在上方的Translate将会沿世界坐标的X轴做一个单位的移动将门打开。·鼠标移至下方的Translate按下右键从选单里选取EditParameters。·点取TranslateVentor区并将其值改为x=。·点选OK。现在lowerTranslate将会沿世界坐标的X轴做一个单位的移动将门关闭(这个移动动作会完全与上一个相反)。步骤:测试您的「流程模块」(Testingtheflowchart)OK现在您可以开始测试您所设计的流程了。·按下RestoreInitialCondition按钮。·按下Play按钮。·轻点门板。你会看到「门」沿着X轴打开了单位。·再次轻点门板。「门」立刻关上。·在Schematicview的工具列里点取Trace按钮激活trace模式。·边玩玩您的「门」边看看在Schematicview里的「行为模块」们是如何运作的。也是该到存盘的时候了别忘了储存您的作品哦!步骤:将「行为模块」流程封存成一个新的「行为模块」(Encapsulatingtheflowchartinanewbehavior)我们现在要教您的算是Virtools里最有价值的技巧与最重要的特色之一将您自行建立的「行为模块流程」储存成为能重复利用的资产!在这一课里我们已经见识到Virtools在D场景里快速地建立个人化「行为模块」的能力了(以『行为模块』构成『流程表』的可视化模式)。在Virtools里创造一扇能够旋转的门只要花几分钟而已但想想要是您得重复这样的程序次以制造扇移动门那不是累死人吗?!Virtools提供了一些方法让您能够重新利用您所做过的模块组件只要将您以「行为模块」所完成的流程封装起来成为一个新的「行为模块」就可以了。·在Schematicview里「门」的script背景处右击鼠标选择DrawBehaviorGraph。·拖曳鼠标框选起整个流程表:从左上方按下并拖曳鼠标光标直到将整个盒子框选完整。·最后再放开鼠标。您刚刚藉由将整个流程表封装起来成功地创造了一个新的「行为模块」。这个新的「行为模块」系统暂命名为”开关门控制”并且拥有一个单独的「输入端」。如您所见原本连接Start盒子与WaitMessage「输入端」间的连结线已经不见了。您将需要重新连上它。·运用Schematicview工具列里的Link按钮新增一个连接Start盒子与「行为模块」”开关门控制”间的连结线。·新增另一条连结线连接”开关门控制”的「输入端」与WaitMessage的「输入端」。·在背景处双击鼠标以关闭它。现在「行为模块」”开关门控制”已经成为一个新的「行为模块」等着您将其储存在您自己的数据库里了。「行为模块」”开关门控制”具有一个「输入端」。您会看到有一个黑色的小盒子在它的右端代表其中包含了一个完整的流程表和许多「行为模块」在内要想检视里面的内容与结构只要在上面双击鼠标左键就可以完全打开了。步骤:从「行为模块」盒子中拉出有用的参数(Exposingmeaningfulparameters)「行为模块」”开关门控制”将能在使用者点选附加了该功能的D对象时使其产生移动的动作。假定您要调整”开关门控制”的移动单位设定您得先打开「行为模块」”开关门控制”的代表盒子然后才能进行必要的调整。现在我们教您一个法子能够不必经过这么麻烦的手续就能简单地进行参数的调整动作。双击「行为模块」”开关门控制”的背景处显示出它的流程表。选取上面Translate的上方左边数来第二个「参数输入插脚」(就是TranslateVentor)。将它拖离「行为模块」”开关门控制”盒子如下页图标。选取该「参数输入插脚」…将它拖离「行为模块」盒子…然后放下它。现在我们将可以从「行为模块」”开关门控制”的外面来存取与修改Translate的TranslateVentor的参数了。·选取下面Translate的上方左边数来的第二个「参数输入插脚」(还是TranslateVentor)。将它拖离「行为模块」”开关门控制”盒子。·在”开关门控制”背景处双击鼠标以关闭它。现在「行为模块」”开关门控制”已经有两个「参数输入插脚」用来编辑与修改移动的单位值。·右击”开关门控制”并从选单里选取Editparameter。·一个对话盒出现让您能编辑两个移动单位参数。·点选OK。步骤:将新「行为模块」存入使用者数据库中(Savingthenewbehaviorinauserlibrary)·从Resources下拉选单里选取CreateNewDataResource选项。·在Name字段中键入「MyBehaviors」。·按下Save。您刚在您的硬盘里建立了一个称为「MyBehaviors」的资料夹。在这里您可以储存您自己所创造出来的「行为模块」。如果您注意看一个叫做「MyBehaviorsrsc」的档案出现在这个资料夹当中这个档案里记载了这个新资料夹里所有内容的描述在内。一个新的面版出现在BuildingBlock面版的上方。·从Schematicview里点选「行为模块」”开关门控制”并从按右键里选取SaveAs。·您会看到一个Save对话框在画面上出现。这个「行为模块」将会被以Opennms的文件名储存在MyBehaviors资料夹当中。·按下Save。·如下图所示般填妥BehaviorInformation资料。·按下OK。「行为模块」Open已经被储存在属于您自己的「行为模块」资料夹当中了。它将会出现在「MyBehaviors」面版中。步骤:呼叫并使用一个已经储存的「行为模块」(Reusingasavedbehavior)您可能猜到了「行为模式」”开关门控制”现在能够被应用在场景里任何的D组件上头了(甚至您想将它储存起来应用在您未来的其它作品里都不是问题)。放胆用这个「行为模式」做各种的尝试吧将它自由地贴到场景里的任何对象上头并且试试调节与编辑其输入参数。举个例子:·将「行为模块」opennms拖放到计算机(NewComputer)上。·编辑移动的单位将其分别设定为与。·点取OK。·按下RestoreInitialCondition按钮。·按下Play按钮。·点选门(door)。接着门会沿着世界坐标的X轴向左移动单位开启。·点选门将门关上。·点选计算机您会看到计算机移动单位。·点选计算机您会看到计算机再次地移动回到原来的位置。NextPage四、参考术语表在第五课里您应该已经完整地学习到了Virtools的基本使用方式。这一课我们不再一步步地为您解说每样功能与特色我们将以条列的方式为您针对一些重要的观念或术语作比较详细的说明。在您逐步学习使用Virtools的过程中您将会对这些概念与术语感到越来越熟悉也会对您日后运用Virtools创造属于您自己的独特作品有很大的帮助。在这一课里我们把这些参考术语简单地分成三个大类:·Virtools里的组件·Virtools的主要编辑器群·Virtools的档案格式VIRTOOLS里的组件Virtools是由一系列预先已设定好的组件所构成的数据库。其中每种组件都具有一个相应的「Setup面版」供您做进一步的设定动作。要开启组件的「Setup面版」很简单只要在「LevelManager」当中选取要做设定的组件而后从鼠标右选单里选择「Setup」就可以了。每个Virtools里的组件都可以被指定独立的「行为模块」与属性。MediaMedia组件包含了用来构成Virtools组件内容的各项素材(次组件)。它们分别是meshes(模型库)、materials(材质),textures(贴图)、与sounds(音效)等。每一种素材在Virtools里均是以一种组件(entity)的形式存在:mesh、material、texture、与sound。这些素材组件都能够在LevelView被轻易地存取而且每一个都能拥有独立的控制与设定方式(详见后面的例子)。DEntities每一个Virtools里的D组件都以D几何组件的形式存在换句话说它们都在度空间坐标里具有位置、方向、与大小等几何性质(相对于非几何组件与D图形组件而言)。这也就是说一个D组件必须包含以下的属性:·在度空间坐标里具有一笔记录其位置、方向、与大小的独立资料(以数学数组matrix的形式储存)。·一组可调整的特性参数(内容视其类型而定)。·一组被指定在组件上的media资料(内容视其类型而定)。这些各种不同类型的D组件包括有:Frames、DObjects、Characters、Cameras、Lights、DSprites、和Curves。FrameFrame是最简单的D对象它所有的资料(在度空间里的位置、方向、和大小)包含在一组数学数组(matrix)当中他的功用就如同在DSMAX里的Dummy虚拟对象也就是最常被使用于在D环境里标明一个特定的位置与或方向本身在执行时并不会被实际描述出来。点选DLayout工具列里的「CreateFrame」图标来创造Frames。DObject一个D对象包含一组用来标明位置、方向、与大小的资料与一系列的mesh。若是一个D对象具有数个mesh这些mesh在同一时间里面只有一个会是有效的(active)而这个mesh就被称为「currentmesh」。一个拥有好几个不同mesh的DObject对象有甚么好处呢?您将可以藉由切换选择不同的mesh而让这个D对象展现完全不同的风貌或呈现出一些特别的效果。举例来说一个用来表示「汽车」的D模型可以分别拥有两套完全不同的mesh假设第一套为「新车涂装」而另一套为「损毁涂装」。在一开始时我们可以把「currentmesh」设定为「新车涂装」这使得车子看起来跟新的一样随后我们若是想让车子看起来像是受到毁损一般不必改变模型对象而只需将mesh切换为第二组「损毁涂装」就可以了。要注意的是因为「行为模块」能够直接被指定到mesh上头产生作用(变形或活动等)在数个D对象共享同一套mesh的情况下在使用上可能要多留心点。举个例子您能够使四部独立的车子拥有同样的一套「涂装」也就是共享同一套mesh。在这同时您对于这套mesh所指定的「行为模块」也将会同时对这四部车子发生影响。Character一个典型的角色是由一组「躯体零件」(bodyparts)的D组件所构成的。每一个「躯体零件」都能够被指定独立的「行为模块」。Character能够把一组不同的D组件组在一起表现整体的效果让这个Character做出不同的动作或对这个整个Character做碰撞侦测。Camera一个Camera包含了一个数学数组的基本数据(位置、方向、和大小)与一组特别的控制参数(视野、裁切面…等)。在您的作品里设定几组不同的camera组能够让您视情况在这几组camera间做交互式的实时切换。这将使您的作品表现出电影般的蒙太奇动态效果。Cameras可以是自由移动的也可以被锁定在某个目标D组件上成为该组件专属的追踪镜头端看您的需求而定。要新增一组camera只要从DLayout的工具列里选取「CreateCamera」图标就可以了。Light一个Light包含了一个数学数组的基本数据(位置、方向、和大小)与一组特别的控制参数(色彩、强度…等)。我们可以使用Light来创造场景理的即时光源效果。Light的种类共有下列四种:·点光源(Point):全方向光源(omnidirectionallight)·聚光灯(Spot):直接打在一个聚光目标(D组件)上的聚光灯。·有向光源(Directional):朝给定方向直射的光源。·平行光源(Parallel):与点光源相似平行光原也对场景中所有的对象产生作用但平行光源在每个对象上只会计算单一向量的一道平行光线。(相对地点光源会对对象上的每一个顶点vertex做光线向量运算这样的方式会产生相对精确真实的光源效果但同时也要花费较多的运算时间。)要新增一个Light只要从DLayout的工具列里选取「CreateLight」图标就可以了。DSprite一个DSprite包含了一个数学数组的基本数据(位置、方向、和大小)、一张贴图(texture)、与一组特别的控制参数(Sprite种类、UV映像资料…等)。贴图在这里就好比一张被贴在D对象上的动画片一般所不同的是它的演出面将不再仅仅是平面而已经被换成有度空间位置的图形了。要新增一个DSprite按住Shift后从Resource面版中的数据库里拖曳想要的贴图并将它放入DLayout里适当的位置上就行了。Curve一个Curve包含了一个数学数组的基本数据(位置、方向、和大小)、一组D控制点、与一组特别的控制参数(Curve种类、相位资料aspect…等)。要新增一个Curve只要从DLayout的工具列里选取「CreateCurve」图标就可以了。DEntities一个D组件包含以下的属性:·在度空间里具有位置与大小的数据。·一组可调整的特性参数(内容视其类型而定)。·一组被指定在组件上的media资料(内容视其类型而定)。在Virtools中唯一可被存取与使用的D组件只有DSprite。(Virtools引擎也将文字视为D组件但它们的性质与Virtools接口上的文字其实是不太一样的。)DSprite一个DSpr

用户评价(0)

关闭

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

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

提示

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

文档小程序码

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

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/35

Virtools开发3D游戏

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利