您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > VirTools教程
第一章基本概念这部分内容让你理解什么是Virtools的本质、它是如何工作的。如果在你阅读本章内容之前就进行脚本设计,那是你自己的损失。什么是Virtools?元素、类和面向对象设计作品的组成元素Virtools进程循环行为引擎行为和脚本参数参数操作(运算)属性Virtools脚本语言(VSL)渲染引擎初始状态一、什么是Virtools?(一)概述Virtools是3D虚拟和互动技术的集成。Virtools由以下部分构成:创作应用程序行为引擎渲染引擎Web播放器SDK(二)创作应用程序VirtoolsDev是一个创作应用程序,允许你快速容易的生成丰富、对话式的3D作品。通过Virtools的行为技术,给符合工业标准的模型、动画、图像和声音等媒体带来活力。VirtoolsDev不能产生模型。VirtoolsDev不是一个建模工具,然而,简单媒体如摄像机,灯光,曲线,接口元件和3D帧(在大多数3D应用中被叫做哑元和补间)能简单的通过点击图标创建。(三)交互引擎Virtools是一个交互引擎-即Virtools对行为进行处理。行为是某个元件如何在环境中行动的描述。Virtools提供了许多可再用的行为模块,图解式的介面几乎可以产生任何类型交互内容,而不用写一行程序代码。对于习惯编程者,提供VSL语言,它通过存取SDK,作为对图形编辑器的补充。Virtools也有许多管理器,它帮助交互引擎完成它的任务。某些管理器(例如SoundManager)对于动作引擎是外部的,一些管理器(例如TimeManager)对于动作引擎是内部的。(四)渲染引擎Virtools有一渲染引擎,在VirtoolsDev的三维观察窗口中可以所见即所得的查看图像。Virtools的渲染引擎通过SDK可以由你自己或者订制的渲染引擎来取代。注意,存取Virtools渲染引擎的源码受制於一个附加的授权协议书。(五)Web播放器在成为一种伟大的技术之前,好的技术一定要能被容易地理解和接近。Virtools提供一个能自由下载的Web播放器-而且下载量少於1MB!Web播放器包含回放交互引擎和完全渲染引擎。更一步的关於VirtoolsWeb播放器的资讯可在在线参考中得到。(六)SDKVirtoolsDev包括一个SDK,提供对行为和渲染的处理。藉由SDK,你可以:产生新的交互行为(动态链接库-DLL方式)修改已存在交互行为的操作写新的文件导入或导出插件,支持你选择的建模文件格式替换,修改或扩充VirtoolsDev渲染引擎(需要服从授权协议)VSL在Dev内具有和SDK的接口,因此可以在不用运行自定义动态连接库(DLLs)下,能容易快速地测试新的概念,执行自定义编码。这些只不过是一些例子-没有做不到,只有想不到!二、元素、类和面向对象设计(一)概述VirtoolsDev组织元素进入类。元素包括你进入VirtoolsDev后带来的媒体(模型,声音,纹理等),也包括你在VirtoolsDev中产生的物体(例如曲线、场景、现场等)和数据(例如参数、属性和脚本)。这章的主题是,专注於Virtools对交互对象的科学分类,包括:VirtoolsDev如何分类媒体。(举例来说,在Virtools中有灯光类,它包含所有灯光的属性,每个灯光是灯光的一个例证,而且有它自己的特性,例如它的颜色和它的范围)。某些操作为什麽只可能出现在某个元素上(类)。(举例来说,为什么字符才能使用字符动画)。某些操作为什麽可以出现在所有元素上。(举例来说,所有的元素都能被激活或解除激活)。这章介绍的Virtools交互对象类的层次,对大多数使用者足够了。然而,你能在Virtools的SDK中找到类层级结构完整的描述。(二)面向对象设计VirtoolsDev采用面向对象的方法建立一个作品(一个CMO文件)。即,每个元件有一个唯一的特性,各种特性由类来描述。元件受控于交互行为模块(BB)中的方法以及参数操作符(paramOps)。VirtoolsDev中的类被称为CKClass。图1-1Virtools类层次结构中的交互对象分支例如,有一个VirtoolsDev中的类叫做CKCharacter,只有CKCharacter能用于角色的特定行为设计。(例如角色控制器BB)VirtoolsDev的面向对象的特性意味着你导入到VirtoolsDev中的任何事物(以模型、声音等形式出现的元件)都是一个CKClass的实例。同样,你在VirtoolsDev中创建的任何事物(从一个摄象机到一个阵列)也都是一个CKClass的实例。图1-1说明了Virtools类层次结构中的交互对象分支。(三)继承使用类层次结构的优势是可以使用继承。也就是说,任何元素都有它自己独特的特性,并且继承了它父类的特性。例如,类CKLight继承自CK3Dentity,CK3Dentity继承自CKRenderObject,CKRenderObject继承自CKBeObject。所以,一个灯光竟然有了CKLight类对象的特性,就像:灯光类型(点、方向等)灯光颜色(白色、红色等)和灯光的照射范围这些特性能够在建立灯光(在创造模式)或者在进行交互行为时(实时运行,例如播放模式)进行改变。其次,一个灯光是一个三维实体,意味它继承了三维实体在3D空间内的位置、方位等特性。就因为灯光是一个三维实体,所以能够应用到三维实体上的任何行为也能应用到灯光上。第三,一个灯光是一个渲染对象,意味着它能够被渲染(能够在重放中被看到)。就因为灯光是一个渲染对象,所有能应用到渲染对象上的任何行为也能应用到一个灯光上。最后,灯光还是一个交互对象,也就意味着它能被附着一个交互动作(有些Virtools类,例如存储内部数据的类,不能附着动作给它)。就因为灯光是一个交互对象,所以任何能应用到交互对象的行为也能应用到一个灯光上。(四)特化VirtoolsDev对行为提供了特化,因此,对于完成某些特定任务(也就是多态性),其行为进行了优化处理。例如,移动一个3D帧比移动一个角色更容易,这是因为移动3D帧的行为被优化了。优化行为减少了计算时间,在可接受的渲染质量下,使作品更小、对用户的输入反应更快。(五)集合VirtoolsDev支持集合,在具有逻辑关系的二个元素之间,一个元素是另一个元素的一部分,但他们分别都具有自己的特性。例如,图1-2所示的3D对象,可以看到有一个ObjectMeshes栏。虽然在同一时刻只有一个网格能被激活,但是一个3D对象可以拥有好几个网格。图1-23D对象的网格设置栏图1-3是网格设置,可以看到有一个MaterialsUsed栏。一个网格可以有几个材质,它们中的几个能够在同一时刻被激活。图1-3网格设置的材质栏图1-4是材质设置,你会看到一个Texture标签。一个材质只能有一种纹理。图1-4材质设置的纹理栏所以说,3D实体元素(不管它是一个物体还是一个角色等)之间有关联,但每个元素都保持相对的独立性。在上述的例子中,纹理是材质的一部分,材质是网格的一部分,网格是3D物体的一部分。因为每个元素都保持相对的独立性,所以每个元素的特性(例子中的物体网格、材质、纹理)都能够被快速简单地改变。事实上,全部的元素都能被另一个兼容元素所交换。例如,你可以改变一个3D物体的网格、材质或者纹理—或者它们的任意组合,而不改变3D物体存在的现实。注意:如果改变一个角色的网格,那么很可能你的动画就不会象预期那样工作了。运行时集合、场景层次一个场景由元素组成,通常被运行时激活。场景内的元素被组织到一个场景层次中。VirtoolsDev在场景层次内提供了一个特殊的集合形态。在运行时,元素之间的关系通过SetParent和AddChild(两者都在3DTransformations/Basic中)被确定。运行时集合允许你在任意3D实体集之间建立关联,典型的是,通过建立3D实体集,产生单一化的应用程序。例如,利用建模软件,使用SetParent和AddChild,你可以建立一部汽车的3D实体层级:一个有门、车身、轮子的汽车。一旦层级关系被确定,就能自动的变化汽车的子物体:门、车身、轮子。注意:SetParent和AddChild只在场景层级中建立关联而不能在CKClass层级中建立。在SetParent或者AddChild被激活之前,如果要使元素恢复到初始状态,通过按ResetIC键,关系被删除。共享元素VirtoolsDev由于支持集合,所以允许你能共享例如像声音、动画、网格、材质和纹理等这样的元素,并且贯穿在你的作品中。例如两个椅子能共享相同的网格、材质和纹理,所以二把椅子看起来一样,但有不同的名字。然而,二把椅子也可以有相同的网格、不同的材质和纹理,那样二把椅子将会有相同的形状,但看起来不一样。共享元素能够极大地减少文件尺寸,减轻CPU和显卡的工作量。在作品中减少元素的数量也能使开发作品更容易。(六)联合联合允许VirtoolsDev在CKClass层级内,在两个没有被直接指定父--子关系的元素之间建立一个逻辑关系。通过联合,一个对象可以和另一个明显不一样的对象建立沟通渠道。例如一个角色经常用一组3D物体联合实现碰撞检查、管理和阻碍的目的。三、作品的元素(一)概述以下你能看到组成一个Virtools作品的一些元素。缩进表示了它们的依附关系。Virtools类层次结构的交互对象分支主要由元素、类和面向对象设计引入。例如,一个2D实体和一个3D实体都是渲染对象的子对象。一个2D帧不是一个渲染对象的子对象,但是它却是由渲染对象派生出来的。作品中的元素,依照类型和字母顺序排列BeObject—具有行为能力的对象RenderObject—当渲染时能够可见的对象2DEntity—有长度、宽度但是没有深度的对象2DFrame—具有可见部分的2D实体3DEntity—具有长宽高的对象Character—一种具有智能的3D实体,可以由用户或者软件控制。它可见,但通常是隐藏的。Camera—定义一个视点的对象Curve—一个3D实体装置,它在3D空间中定义一条曲线Grid—一种2D数据装置,值与3D物体相配Light—一种提供照明的对象,是不可见的(抽象、数据装置、联合)Array—表达为一个表格的数据装置Group—一组没有类型限制的任意组合对象Level—作品的父系对象Material—一个网格的表面特征Mesh—定义一个对象形状的顶点集Place—关于对象位置的集合Scene—关于对象时间的集合Sound—一种以数字格式存储的声音Texture—用来提供对象表面更好细节的图象(二)具有行为能力的对象在VirtoolsDev中行为是主要概念,但是如果不把它们附加给元素,则不起作用。注意,从行为对象类能反映出所有VirtoolsDev类层级结构。实例化的对象是附加了行为的对象。BeObjects能够有行为,但不是必需的。当一个BeObjects附加了行为时,它就是这些行为的主人。所有的行为只能附加一个BeObject。注意,一个行为的所有者不总是行为的目标。附加到BeObject上的行为可以改变所有者或者改变到其它的对象(目标)。(三)Level层级可以被描述为:一个作品中所有对象的全局容器一个作品中所有元素的根一个作品中所有元素的父类一个CMO中只能有一个层级。层级能够包括不只一个场景并有零或更多的场所(图层)来组织你的作品,更易于管理。一个层级是一个BeObject,因此行为和属性能够被附加到层级上。层级脚本通常用于管理场景、位置和需要横贯几个场景的元素(比如阵列)。注意:附加给层级上的脚本能够自动附加给所有场景。(四)场景VirtoolsDev里的场景就象是电影中的场景一样。在同一时间内只有一个场景能被激活。只有在场景中的元素才能被激活。只有激活的元素才能被摄影机捕获。(被Virtools中的交互引擎处理)不是激活场景里的的元素不起作用。它们不能被渲染,并且它们的脚本不能被处理。因此,场景是把大作品进行分片处理的完美方法。当和其它
本文标题:VirTools教程
链接地址:https://www.777doc.com/doc-2854754 .html