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

上传资料

关闭

关闭

关闭

封号提示

内容

首页 Virtools讲义_4.0

Virtools讲义_4.0.doc

Virtools讲义_4.0

huagang
2011-11-30 0人阅读 举报 0 0 暂无简介

简介:本文档为《Virtools讲义_4.0doc》,可适用于IT/计算机领域

VirtoolsTrainingv目录什么是Virtools?…………………………………………………………………………Virtools架构………………………………………………………………………………Virtools执行流程…………………………………………………………………………Virtools对象名词介绍……………………………………………………………………Virtools界面介绍与操作…………………………………………………………………Virtools的特色:行为模块(BuildingBlocks)……………………………………………从DSMAX转档…………………………………………………………………………静态场景输出……………………………………………………………………动态主角与动作………………………………………………………………………………DSMAX转文件注意事项…………………………………………………………………人物动作设定与移动控制………………………………………………………………场景属性设定………………………………………………………………………………重力属性设定………………………………………………………………………碰撞属性设定………………………………………………………………………摄影机控制…………………………………………………………………………………事件讯息处理Messages的传递…………………………………………………………特效制作……………………………………………………………………………………参数运算(ParameterOperation)…………………………………………………………场景数据处理………………………………………………………………………………人工智能处理………………………………………………………………………………附录:可使用的参数运算(ParameterOperation)列表…………………………Virtools教育训练讲义一、什么是Virtools?Virtools是一套整合软件可以将现有常用的档案格式整合在一起如D的模型、D图形或是音效等。Virtools不是DEngineVirtools是一套具备丰富的互动行为模块的实时D环境虚拟实境编辑软件可以制作出许多不同用途的D产品如因特网、计算机游戏、多媒体、建筑设计、交互式电视、教育训练、仿真与产品展示等。        Virtools除了有编辑制作的界面外也包含了SDK可供程序设计人员开发新的功能、新的硬件驱动程序或是将内容编译成执行档等。Virtools的"互动行为模块"就像在堆积木一样可以利用DragDrop拖放方式将互动行为模块赋予在适当的对象或角色上以流程图的方式决定行为模块的处理先后逐渐编辑组合成一个完整的交互式虚拟世界。Virtools基本就拥有超过个以上的互动模块可供运用经由编辑后的互动模块群可以组合成一个新的单一互动模块以方便重复使用、编辑甚至可以交换或卖给需要的使用者。二、Virtools架构在Virtools中有四个主要的元素分别叙述如下:()VirtoolsLibrary:可称为CK提供D实时的互动行为。()VirtoolsApplication:整合与制作的环境平台就是Virtools的操作环境。()VirtoolsViewer:可以执行由Application所制作出来的内容这里指的是Virtools的webplugin与standaloneplayer。()VirtoolsSDK(SoftwareDevelopmentKit):允许使用者新增Virtools的功能内含各个行为模块的原始程序代码供使用者参考或是修改。三、Virtools执行流程●Virtools的执行流程包含以下步骤:()动态计算(CalculatingAnimations)key、morphanimation在依开始执行时会先行计算也就是当你使用”CharacterController”时其它所有得的behaviors将在它之后才会开始处理。例如一个有走路动态数据的主角将会先计算此主角在该Frame中所应该移动的动作后才会开始处理此主角的移动位置。()处理行为模块(Proccessingthebehaviors)所有可执行的behaviors会在这阶段处理但是无法得知哪一个behavior将会优先执行。如果必须强迫某一个script较其它script先行执行可以在LevelView中设定Priority。()讯息传递处理(Handlingthemessagepassing)所有的讯息在这个阶段才可以做传送与接收的动作所以在上一阶段也就是”处理行为模块”阶段并不会处理讯息数据。例如当在第N个Frame使用行为模块“SendMessage”时”WaitMessage”将在第N+个Frame接收到此讯息所以讯息的传送不可能在同一个Frame完成。()声音(Sound)所有的声音将在此阶段处理。()场景着色(Renderingscene)此阶段最为耗费CPU的资源。四、Virtools对象名词介绍()Media:在Virtools中所指的media为mesh、material、texture与sound。()DEntities:泛指所有的D几何对象包括Frame、DObject、Character、Camera、Light、DSprite、Curve。()DFrame、DFrame:Frame可以说是最简单的DEntities本身具备位置坐标、方位角度与比例大小的数据。()DObject:DEntities与DObject从字面上很容易让人搞混DObject泛指场景中的D物体如车子的车门、车轮与车身等都属于DObject而DEntities在Virtools中只是一个分类的名称DObject就是属于DEntities这类的对象。()Character:指的是场景中的角色Virtools把Character特别分成一类因为有些行为模块只有character这类的DEntities可以使用其它类型则无法使用。Character指的不一定是人物也可以是车子任何物体都可以作为角色。()Camera:摄影机可以分为FreeCamera与TargetCamera。()Light:灯光在Virtools可分为四种灯光Point、Spot与Directional三种。()DSprite:具有D坐标位置的平面对象可放在场景中的任一位置。()Curve:曲线由D点所连接成的线段可做为对象移动的路径。()DEntities:与DEntities相同只是一种分类的名称目前在Virtools中的DEntities只有DSprite。()DSprite:D对象用于制作D使用者界面或是D场景中的背景。()Group:群组在Virtools中media、DEntities、DEntities都可以加入群组中加入Group的对象并不会重新复制只会以原对象作参考。()Place:类似Photoshop、AutoCAD中的Layer功能可包含DEntities与DEntities加入Place的对象并不会重新复制只会以原对象作参考。()Scene:为场景执行流畅度与管理故事脚本所产生的可包含Place、DEntities与DEntities加入Scene的对象并不会重新复制只会以原对象作参考。()Level:Level包含场景中的每一个entity一个档案只有一个Level更换Level意谓开启一个新的档案。五、Virtools界面介绍与操作●一开始进入Virtools的界面显示如下图。Virtools的编辑界面以许多的Tab所组成每一个编辑器、设定界面等都放在Tab中。()DLayout:预设位置在左上角所有的对象都在这个编辑器中整合、修改执行时也是在这部分显示。()BuildingBlocks:预设位置在右上角我们称之为”行为模块”Virtools将所有的行为互动模块对象化方便使用者使用。()VirtoolsResources:预设位置在右上角BuildingBlock旁。可称之为资源文件这部分为Virtools所可使用的资源文件预设的分类有dsprite、character、entities、sounds、sprited、textures等每一分类的内容可以使用drag’ndrop的方式将选定的对象按住鼠标左键不放拖拉至DLayout中整合编辑。资源文件也可以由使用者自行建立以管理众多的对象。()LevelManager:预设位置在屏幕画面下方在其中显示的数据为编辑整合中的资源如D模型、贴图、声音、角色、材质、摄影机与灯光等。()Schematic:预设位置在屏幕画面下方在LevelManager旁这部分为行为模块的编辑界面。界面中的每一个Tab皆可以依照使用者的喜好拖拉至其它位置。在每一个Tab上快速以鼠标左键点选两次可以将此Tab的内容画面放大再做一次相同的动作则会恢复原来的大小。()DLayout工具列基本操作:●形变工具:●对象建立工具:●场景浏览工具:六、Virtools的特色:行为模块(BuildingBlocks)●以Timer为例Timer行为模块如下图:流程的进行是以水平方向的“In”、”Out”、”LoopIn”与”LoopOut”为进出的控制点。垂直的方向则是参数的运算行为模块的上方为使用者可以设定的参数而行为模块的下方则是此行为模块可以输出的结果。以Timer为例使用者可以设定的是时间TimetoWait单位是微秒而Timer行为模块可输出的变量是DeltaTime与TimeElapsed。在某些行为模块的左下方位置有些会显示S(如ControllerMouseWaiter)或是显示V(如LogicsStreamingSequencer)或是C(如CharacterMovementUnlimitedController)。S表示该行为模块可设定内部可编辑参数的项目或是选项。V表示该行为模块可增减参数的数目。C表示编辑该行为模块的参数时将会出现对话框(DialogBox)。在行为模块列表中有些会显示“T”表示该行为模块可以指定“作用的目标物”(Target)如下图。●实例制作七、从DSMAX转档()静态场景输出:(i)安装PluginForDSMAX。(ii)开启档案。(iii)FileExport(Step)选择存档类型并输入文件名称。(Step)在VirtoolsExport对话框中选择”ExportasObjects”然后按「确定」即可完成场景的输出。()动态主角与动作(i)开启档案。(ii)FileExport(Step)选择存档类型。(Step)选择「ExportasaCharacter」并输入「CharacterName」的名称按「OK」确定。()输入场景与人物至Virtools中测试。●DSMAX转文件注意事项()可转出的资料:以目前的版本而言可从DSMAX输出转入Virtools的档案数据如下所示:(i)模型数据:已经转为"editablemesh"的D模型。可供输出的D模型数据如下:●基本模型数据。●贴图轴的设定。●SmoothingGroups的设定。●Hierarchy从属关系设定。●ShowhideFlag显示隐藏的设定。●如果Wrappingsettings的输出不正确可以利用Virtools的行为模块"SetWrapMode"改善此问题。●VertexColor。为了正确而完整的输出所有DSMAX所制作的模型到Virtools里在设定从属关系和制作动画制作之前必须将所有的模型作ResetXForm。设定方式如下:制作所需的D对象。将物件ResetXForm: (a)选择所有对象(Selectallobjects)。(b)选择DSMAX里最右边的"Utility"菜单中的"ResetXForm"功能。(c)执行"ResetSelected"。(d)确认D对象里面的方向(normal)是正确的。(e)先将DSMAX的档案储存起来以供之后使用。最后再进行从属关系的设定或动态的制作。(ii)材质资料:DSMAX的标准材质数据以及multisubobject(同一对象、复合材质数据)。可供输出的材质数据如下:●Diffuse的贴图。●Diffuse:贴图的色彩将会因为这个材质颜色而改变除非颜色值为(,,)的白色。●U、V轴向的重复或镜射贴图(TilingandmirroringonUandV):镜射贴图将视显示卡的效能而定。●自我发光体可利用Virtools里的emissive值来调整(Virtoolsemissive值可以在材质的设定页MaterialSetup中找到)。●AmbientColor。●SpecularColor。●双面材质设定(SidedFlag)。●透明色设定(Transparency)。Virtools可接受的贴图尺寸之长与宽最好使用的次方像素(如,,,,,,,pixels也就是*,*,*,或*等等)建议使用者尽量降低贴图大小并且使用orbit的图形格式(不可以使用bitorbit的图形格式)。(iii)灯光:所有DSMAX的标准灯光如FreeSpot,TargetSpot,Omni,TargetDirect,FreeDirect等。可供输出的灯光数据如下:●开关设定。●灯光颜色。●照射范围(设定灯光范围的"AttenuationFarEnd"等数据)。●"Affectspecular"的设定。●特殊灯光参数设定。●聚光灯:聚光灯的FallOff值的设定。●平行光:DSMAX可以使用圆柱线条来设定平行光的范围但在Virtools里并无法设定平行光的范围一旦有平行光将会完全照射整个场景。(iv)摄影机:所有DSMAX设定好的摄影机如Target或Free的摄影机。可供输出的摄影机数据如下:●DSMAX摄影机的参数只有FOV可供输出。(v)Dummy:接受DSMAX的Dummy虚拟对象。(vi)动态数据:TCB格式、LINEAR或Bezier的动态数据。可供输出的动画参数数据如下:●只有在DSMAX里的TCB、LINEAR或Bezier的位移、旋转、大小等动态数据可以输出至Virtools。●为了将正确地输出动态数据母对象(群组最高层级的对象)的位移、旋转、大小三种动态数据的起始点与终点一定要设定在时间轴的范围里。●Virtools的每一段动画的旋转范围并不允许有超过度的数据因此在DSMAX里若有超过这个范围的旋转动画请予以切割成可允许的旋转范围里。(vii)曲线数据:在DSMAX里做制作的"Shape"将会转成Virtools的Curve(Virtools的专属名称)。可供输出的曲线数据如下:●在DSMAX所制作的曲线(Spline)将会在输出成Virtools档案时只有点的数据会被保留并且转为Virtools的Curve(Virtools的专有名词)。(viii)群组资料:在DSMAX所定义的群组数据(Groups)。可供输出的群组数据如下:在场景输出(SceneExport)模式下使用Dummy来当整个对象群组的母对象(parentobject)时这个Dummy将会依照群组的从属关系转成Virtools里的Frame(Virtools的专有名词)。为了能够正确地输出群组数据必须在DSMAX里将群组(Group)打开成为开放式群组(OpenGroup)。不过在动画输出(AnimationExport)模式将不支持Dummy的输出所以请避免使用群组(group)。八、人物动作设定与移动控制:()开启资源文件(Resources)()加入场景、人物。()加入人物动作将所有的动作全选后拖曳至角色Warrior上。()加入移动控制●使用的行为模块(i)CharacterController(CharactersMovement)(ii)KeyboardController(ControllerKeyboard)(Step)分别将CharacterController、KeyboardController行为模块加至角色”man”上。●CharacterController设定如下:●直接将KeyboardController拉至人物主角即可。●完成后如下图。(Step)按Play钮执行测试结果。「BB:CharacterController」功能上属于比较基本的因为只包含”Stand”、”Walk”、”WalkBackward”、”Run”这四种常用的动作如果角色需要更多的动作可以使用「BB:UnlimitedController」。在Virtools中角色的动作都是透过讯息(Message)的传递才开始进行动作。当使用者按了键盘右方NumPad的「」「BB:KeyboardController」会送出一个讯息讯息名称为:JoyUp当「BB:CharacterController」收到此讯息时Character就会开始执行走路的动作。九、场景属性设定()重力属性设定(i)场景部分的设定场景中属于地板的部分必须设定地板的属性如此角色才知道该站在哪一个物体上而不会有飘浮在空中的感觉。(Step)单击顶部菜单栏的Editors选择第一项的attributemanager属性管理器。(Step)界面右上方会出现一个“attributemanager”的Tab。(Step)展开“FloorManager”选择“Floor”将其拖放到地板物体上。(Step)结果如下图。(ii)人物主角部分的设定设定完成地板的属性后还要再新增一个行为模块作用于角色上告诉Character必须站在我们所设定的地板上●使用的BuildingBlocks(a)EnhanceCharacterKeepOnFloor(CharacterConstraint)完成后的Script如下图:()碰撞属性设定Virtools中可设定的碰撞方法分别叙述如下。(i)使用Group此法为较为方便的方法只要将物体加入指定的Group中再由行为模块“ObjectSlider”控制即可。●使用的行为模块(a)ObjectSlider(CollisionsDEntity)(Step)点选“CreateGroup”。(Step)重新命名此Group的名称以方便辨识。这里我们命名为”CollisionGroup”。(Step)在LevelView的DObject中将欲设定为障碍物的物体拖拉至新增的Group中。(Step)将ObjectSlider(CollisionsDEntity)行为模块加在角色上出现一个对话框将其中的参数设定如下图。Group设定为刚刚新增的CollisionGroup。(Step)按Play钮执行测试结果。(ii)使用Grid●使用的行为模块(a)LayerSlider(Grid)(Step)建立一个新的GRID。(Step)将GRID缩放至适当的位置。(Step)在GRIDSetup中如下图红色圈选的区域内按鼠标右键会出现”NewLayerType”选项以鼠标左键选择此项就可以新增一个“LayerType”。(Step)将新增的Layer名称订为”Collision”以方便辨识。(Step)将此新增的Layer拖拉至左方的区域中。(Step)确定Collision是在被选择的状态如下图。(Step)在DLayout中将视角切为“TopView”以方便编辑。(Step)点选发生碰撞的位置。(Step)将LayerSlider(Grid)行为模块加在角色上参数设定如下图。(Step)按Play钮执行测试结果。十、摄影机控制()跟随摄影机●使用的行为模块(a)Keepatconstraintdistance(DTransformationsConstraint)(b)Lookat(DTransformationsConstraint)(Step)新增一部摄影机(CreateCamera)。(Step)将Keepatconstraintdistance和Lookat行为模块加在摄影机上。(Step)连结这两个BB如下图。(Step)分别设置两BB参数如下:(Step)按Play钮执行测试结果。()第一人称摄影机将摄影机作为角色骨骼的子物体跟随物体一起移动。(Step)另外再新增一部目标摄影机命名为FPScamera。(Step)单击菜单栏上的Editors下的第二项Hierarchymanager层级管理器。打开层级管理器面板。(Step)将FPScamera拖放到角色骨骼bip上完成摄像机到bip物体的父子连接。(Step)将视角换到FPScamera。(Step)按Play钮执行测试结果。十一、事件讯息处理Messages的传递Message主要是用来做为两个Script间的沟通这部分的行为模块分为两类一类是负责传送讯息另一类是负责接收讯息。●使用的行为模块(a)SendMessage(LogicsMessage)(b)WaitMessage(LogicsMessage)十二、特效制作制作火焰燃烧的效果与烟雾。●使用的行为模块(a)PointParticleSystem(Particles)()粒子系统制作(Step)加入火焰的图片。(Step)加入DFrame并调至适当位置。(Step)加入行为模块PointParticleSystem(Particles)。(Step)设定参数。Speed:InitialSize:EndingSize:Texture:选择”Fire”。(Step)按Play钮执行测试结果。(Step)以同样的方法再加上烟雾的效果。()加入InterActorVirtools的Particle可以受到其它因素的影响如风力、重力、磁力…(InterActor)等亦可以设定Deflector使分子的运动不会穿透其它的物体。(Step)新增一个DFrame。(Step)在此Frame按右键选择“ShowFrameSetup”。(Step)按“Attribute”增加其它的属性。(Step)按。(Step)加入磁力。(Step)按Play钮执行测试结果。十三、参数运算(ParameterOperation)Virtools除了有BuildingBlocks可供使用之外还有另外一种功能使用者必须了解就是参数运算(ParameterOperation)其作用如下:()数学运算如C=AB、C=A*B、C=sin(A)…上图表示加法的运算:C=AB()转换型别如Float转换成Integer(用Setvalue)、DEntity转换成DObject等。()从对象取得数据如GetPosition、GetDir、GetScale…。而参数运算(ParameterOperation)的建立方式如下:()按右键(Schematic中)在出现的选单中选择”AddParameterOperation”。()选择InputType、OutputType。()最后再选择OperationType如果找不到OperationType就表示需要重新选择InputType与OutputType因为所选择的输入、输出型别可能无法做计算或是目前尚未提供此运算功能。●以下以加法运算作范例。流程:制作步骤:()在SchematicView中按鼠标右键会出现如下图。()选择AddParameterOperation建立一个参数运算功能。()调整Input、Output与Operation如上图。●Inputtypes:输入的参数型别。●Outputtype:经过计算或处理后输出的参数型别。●OperationType:计算或处理方式。设定完成后按”OK”完成后如下图。()在BuildingBlocks中选择LogicsCaculatorIdentity行为模块拖拉至”Addition”下方。()在Identity所属参数下方的到三角形上按鼠标右键在随后出现的选单中选择”EditParameter”。()修改Identity的输入参数型别由预设的”Float”设定为”Integer”。修改完成后按”OK”。()点选将Addition的Out与Identity的Input连结但是在点选Identity的Input之后会出现一个Warning对话框如下图。选择”是”将会取消原本的连结建立一个新的连结。选择”否”则不会有任何的新连结出现。在此对话框中选择”是”结果如下图。()同样使用Link的功能再将左方的Start与Identity的In连结结果如下图。做到这里我们已经完成加法计算的处理流程图接下来还需要再加入一个行为模块将计算结果显示在屏幕上。()在BuildingBlocks中选择InterfaceTextTextDisplay行为模块将此行为模块拖拉至Identity右方如下图。()连结Identity的Out与TextDisplay的On如下图。()连结Identity下方的Input与TextDisplay的Text参数但是在连结前必须先确认Identity下方的Input与TextDisplay的Text参数是否属于同一型别。在未连接前Identity下方的Input属于Integer型别而TextDisplay的Text参数属于String型别所以我们就必须将TextDisplay的Text参数型别改为Integer如此二者之间的变量才能互相传递。在TextDisplay的Text参数(倒三角形符号)按下鼠标右键在出现的选单中选择”EditText”如下图。()随后会出现“Editparameter”对话框点选”Parametertype”下拉式选单将型别由String改为Integer如下图。完成后按”OK”。()点选将Identity下方的Input与TextDisplay的Text参数连结起来如下图。()接下来就可以开始执行点选画面右下角的做Reset的动作然后再按PlayButton开始执行。这时在DLayout的左上角出现“”这是因为在“Addition”中的参数目前都还是各位可以分别把Addition的两个参数分别设定为不同的数值再执行看看。十四、开门与关门主要内容:消息传递的应用。参数运算的应用。使用的BB:Waitmessage(LogicsMessage)Test(LogicsTest)LinearProgression(LogicsLoops)Translate(DTransformationsBasic)流程:Step()在铁门处放置一个DFrame,使用ParameterOperator计算人与门的距离:Step()使用BB:Test判断人与门的距离是否小于。Step()当满足距离小于的条件后进入BB:WaitMessage等待鼠标左键的点击。Step()鼠标单击后启动开关门的behaviorgraph完整流程图如下:Behaviorgraph内部:十五、场景数据处理在Virtools中可以使用“Array”来储存数据Array就像数据库的Table一样将数据储存在一个一个表格中每一个Array都可以设定一个名称做为识别之用。第一列为Array的格式(字段数、字段名称)字段数从开始计算。(Step)建立一个Array(Step)建立Column与Row。(Step)输入数据。()从Array中读取数据。●使用的行为模块(a)Iterator(LogicsArray)(b)TextDisplay(InterfaceText)下图的Script是用“Iterator”来读取Array中的资料然后再以“TextDisplay”显示在画面上。()间接取得Array资料●使用的行为模块(a)IteratorIf(LogicsArray)()直接取得Array数据●使用的行为模块(a)GetCell(LogicsArray)()储存数据(i)先确定KeyColumn。(ii)加入BuildingBlocks。使用的行为模块(a)SetKeyRow(LogicsArray)●Array的应用:生命值处理()状况设定:当主角与某特定物体发生碰撞时生命值将会降低。处理流程图如下:●使用的行为模块:(a)PreventFromCollision(b)CollisionDetection(c)GetCell(LogicsArray)(d)Op(LogicsCalculator)(e)SetKeyRow(LogicsArray)()状况设定:当主角位于某特定位置时生命值将会降低。这部分我们将使用Grid来处理。处理流程图如下:否是●使用的行为模块:(a)GetSquareFromdpos(Grid)(b)Test(LogicsTest)(c)GetCell(LogicsArray)(d)Op(LogicsCalculator)(e)SetKeyRow(LogicsArray)其中「储存Array数据」的script如下:十五、人工智能处理()状况设定:当主角接近敌人某一特定距离时敌人会走向主角在接近一定的距离时攻击主角。处理流程图如下:是否●使用的行为模块:(a)Identity(LogicsCalculator)(b)Test(LogicsTest)(c)CharacterGoTo(CharactersMovement)()NodalPath透过事先规划好的路径提供角色或对象移动的遵循方向。首先必须将环境中的路径建立出来。(Step)在LevelView中建立一个空的Group命名为”NodalGroup”。(Step)将“CreateNodalPath”行为模块加在”NodalGroup”中。(Step)出现如下的设定画面。(Step)增加节点与路径。接下来就要增加相关的行为模块。●使用的行为模块(a)GetNearestObject(CharactersBasic)(b)GoToNode(DTransformationNodalPath)(c)CharacterGoTo(CharactersMovement)(Step)到達節點後再移向角色讓敵人移向此節點取得距離角色最近的節點敵人走回原來的位置偵測主角與敵人的距離距離是否小於所設定的值?敵人走向人物主角做出攻擊動作從Array取得資料減法運算將生命值減少將資料存回Array取得主角所在位置對應到Grid上的值測試此值是否符合降低生命值的情況取得主角的位置碰撞發生時從Array取得資料減法運算將生命值減少將資料存回Array计算显示结果输入数字DEngine(Virtools的Engine或自行撰寫的Engine)VirtoolsLibrary(CK)VirtoolsSDKVirtoolsViewerVirtoolsApplication–愛迪斯科技股份有限公司AXISDTECHNOLOGY,INCdoc

用户评价(0)

关闭

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

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

提示

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

文档小程序码

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

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/50

Virtools讲义_4.0

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利