发博文
正文 字体大小:

VirtoolsDev帮助文件-疯子中文翻译版

(2008-09-27 17:53:24)
标签:

virtools

爱迪斯通

虚拟现实

游戏

3d

游戏软件

vr技术

it

分类: 技术支持
VirtoolsDev帮助文件-疯子中文翻译版

什么是Virtools?
总体
Virtools在3D 互动展示方面是一种强大的技术。Virtools有很完善的组成:
一个创作应用程序
一个动作引擎
一个渲染引擎
一个Web播放器
一个软件开发工具包(SDK

一个创作应用程序
Virtools Dev是一款允许你快速简单建立3D内容的应用程序。模型、动画、图象和声音等工业标准媒体都能通过Virtools的行为技术得以应用。
你不能在Virtools Dev里创建模型;Virtools Dev不是一款建模软件。但是,象摄影机、灯光、曲线、界面组件和3D结构(在大多数3D软件中叫虚拟助手)等简单的媒体能通过点击一个图标建立。
一个动作引擎
Virtools是一个动作引擎,那是因为Viortools处理动作。一个动作是某个元素怎样在场景中运动的一个简单描述。Virtools在 Virtools Dev中提供一个强大的可以再度使用的行为,它允许你通过简单的绘图界面型的示意编辑器来创建任意类型的内容—除了写一个单一的线路代码。
对于编码器和编剧,新的Virtools Scripting Language (VSL)通过提供脚本级别来访问开发工具包。
Virtools还有一些管理器来帮助动作引擎完成她的任务。有些管理器(例如时间管理器)存在于动作引擎的内部而另一些管理器(例如声音管理器)则存在于动作引擎的外部。
一个渲染引擎
Virtools有一个渲染引擎来绘制你在Virtools Dev 3D设计中的图象。Virtools的渲染引擎能被你自己的渲染引擎所取代,或者通过软件开发包(SDK)定制出适合你特殊的需要。注意:任何有权限使用 的渲染引擎猿代码都必须服从额外的专利使用权转让协定。
一个Web播放器
好的技术在它成为被尊重的伟大的技术之前必须是容易接近的。Virtools提供一个免费的Web播放器,它能够被任何人下载并且下载后不到1MB的容量。]
Web播放器包括动作引擎和全部的渲染引擎的一个录音重放的译本。对于Web播放器的更多了解可以通过在线参考。
一个软件开发工具包
Virtools Dev包括一个能访问动作的某个部分和渲染过程的软件开发工具包。
用SDK,你能:
创建一个新的动作
修改现有动作的运行
写新的文件给输入和输出文件,来支持你选择的模型文件的格式
替换、修改、扩充Virtools Dev的渲染引擎
VAL还提供一个接触面从Dev的内部给SDK,所以你可以简单快速的测试新的主意并不用执行自定义动态连接库来执行自定义代码。
这些只是例子—你的创造力才是你能够飞多远的限制。

 

元素、种类和物体导向设计
总体
Virtools Dev 组织元素到种类里。元素包括你带到Virtools Dev中的媒体(模型、声音、材质等)、你在Virtools Dev中创建的东西(曲线、地点、场景等)和象参数、属性、脚本的数据。
在这部分中集中在Virtools类层次结构的动作物体分支上的基本的种类包括:
Virtools怎样给媒体分类
例如,这里有一个在Virtools中包括所有灯光的灯光级别物体。每一盏灯都是灯光级别的场景,并都有它的颜色和范围属性。

为什么某个操作给某个元素和种类是可行的
例如只有角色才能使用角色动画。

    为什么其它的操作能够应用到所有元素上。
例如所有的元素都能够激活和无效

按照规定,这部分只介绍对大多数人足够的Virtools 类层次结构的动作物体分支。不过你可以在SDK文件中找到关于Virtools类层次结构的全部描述。

物体导向设计
Virtools Dev把一个物体的导向比做写一个作文。那是因为,每个元素具有一个特殊的类型,每个特殊的类型被一个类定义来描述。在动作和参数实施内部通过使用压缩的方法来控制元素。在Virtools中的每个类别被叫做CKClass.

图片1Virtools类层次结构的动作物体分支

例如,一个CKClass叫做CKCharacter.。只有CKCharacter能够使用对于角色的动作特定设计。(例如角色控制器BB)
Virtools Dev的物体导向性意味着你输入到Virtools Dev(以模型、声音等形式的元素)中的任何事物都是一个CKClass场景。同样,你在Virtools Dev中创建的任何事物也属于一个CKClass。图1-1图解说明了Virtools类层次结构的动作物体分支


遗传
使用类层次结构的一个优势是遗传原理。那就是,任何元素都有它自身独特的特性并且所有元素都继承了它所有父级别的特性。

例如,CKLight遗传如下:
1 CK3DEntity,   它的遗传如下
2 CKRenderObject,它的遗传如下
3 CKBeObject
因此,一个灯光有只应用给CKLight 级别物体特殊的特性,特性如下:
   灯光类型(点、方向等)
   灯光颜色(白色、红色等)和
灯光的可视范围
这些特性能够通过灯光的建立来改变(在创造模式)或者一个积木动作(在运行时间、IE播放模式)。

第二,一个灯光是一个三维实体,也就意味它具有通过继承得到的在3D空间内的位置、空间的三维实体特性。因为一个灯光是一个三维实体,能够应用到三维实体上的任何动操作也能应用到灯光上。
第三,一个灯光是一个渲染物体,也就意味着它能够被渲染(能够在录音重放中被看到)。
因为灯光也是一个渲染物体,所有能应用到渲染物体上的操作也能应用到一个灯光上。
最后,灯光还是一个动作物体,也就意味着能有一个动作附着给它们(一些Virtools Dev级别,例如存储内部数据的级别不能有动作附着给它们)。就因为灯光也是一个动作物体,任何能应用到动作物体上的操作也能应用到一个灯光上。


特殊作用
Virtools Dev提供特殊的动作所以动作对于特殊的任务能够被最优化(也被认为是多态现象)。例如,移动一个3D场景比移动一个人物更简单,所以对于简单的任务移动一个3D场景的动作能够被优化。
优化操作对一个给定场景能够减少计算时间导致结构更小,对使用者的输入做出更快的响应并呈现一个可接受的帧频。
集合
Virtools Dev支持集合,支持在一个元素是另一个元素的一部分但是两个元素又是截然不同的两个元素间合乎逻辑的关系。
例如,如果你看到了图1-2   3D物体的建立,你会看到一个专栏的标签Object Meshes,一个3D物体可以有几个网格,虽然在一个时间内只有一个网格能够激活。
如果你看到图1-3的   网格建立,你会看到一个专栏的标签Materials Used。一个网格可以有几个原料,它们中的几个能够在同一时间内激活。
如果你看到图1-4的材质建立,你会看到一个Texture标签。一个原料只能有一种材质。
因此,一个描述3D实体(不管它是一个物体还是一个角色等)的元素是有关系的,并且每个元素都保持不受约束。例如,一个材质是材料的一部分,一个材料是一个网格的一部分,一个网格是一个3D物体的一部分。
因为每个元素都保持不受约束,所以每个元素的特性都能够快速简单地被改变。事实上,全部的元素都能被另一个兼容元素所交换。
例如,你可以改变一个3D物体的网格,材料或者材质—或者任何结合而不用改变3D物体的存在的现实。
注意:如果改变一个角色上的网格,那么很可能你的动画就不会象预期那样工作了。

运行时间集合、场景层次
一个场景是在运行时间内所有元素同时起作用的设置。场景内的元素被组织在一个场景层次内。
Virtools Dev在场景层次内提供了一个特殊的集合形态。在运行时间内,元素的关系通过Set Parent和Add Child(两者都在3D 转化/基础中)能够被确定。运行时间集合允许你建立关系在3D实体的任意设置,具有目的的代表性的单一化的应用程序3D实体的转化设置。
例如,虽然它能够变得更简单地去做在一个建模的应用软件里,使用Set Parent 和Add Child你可以建造一部汽车作为3D实体的层次;一个有门、车身、轮子的汽车。一旦等级关系被确定,转变就能自动的变化汽车的子物体:门、车身、轮子。
注意:Set Parent 和 Add Child只在场景层级中建立关系不能在CKClass层级中建立。
如果初始条件设置在受影响的元素之前Set Parent 或者 Add Child然后被激活,当你按Reset IC时,关系被删除。
共享元素
Virtools Dev对集合的支持允许你能共享例如声音、动画、网格、原料和材质等元素贯穿你的组成。
例如两个椅子能共享相同的网格、材料和材质—椅子能够看起来一样而只有名字不同。然而,椅子还可以有相同的网格,不同的材料和材质—椅子将会有相同的形状但看起来不同。
共享元素能够极大地减少文件大小和CPU和显示卡的工作量。在组成中减少元素的数量也能使管理组成的发展变得更容易。
联合
联合允许Virtools Dev建立一个逻辑关系在两个没有被直接指定一个父--子关系在CKClass层级元素之间。
例如一个角色经常用一组3D物体联合为了碰撞检查,管理和检查的目的。

Virtools类层次结构—动作物体分支
点击下面的元素到达相应动作物体的页面
看下面的两页概念:
元素的组成
总体
在下面你能看到一些元素的类型在一个Virtools组成中。
呈锯齿状表示锯齿状的标签是一个最靠近的先前级别的锯齿状的子物体,根Virtools类层次结构的动作物体分支主要包括元素、层级和物体导向设计。
例如,一个2D实体和一个3D实体都是渲染物体的子物体。一个2D结构不是一个渲染物体的子物体而一个2D的结构却是一个派生的渲染物体。
元素的组成依照类型和字母顺序安排



BeObject—能够被应用一个行为的物体。
       RenderObject—当渲染时能够看得见的物体
                   2D Entity—有长度、宽度但是没有高度的物体
                        2D Frame —   有看得见部分的2D实体
                   3D Entity—有长宽高的物体
                        Character—担当一种有智力的3D实体的类型,直接被用者或软件控制的物体是可见的,但是通常不是
                   Camera—定义一点景色的物体
                   Curve —一种描述空间中曲线的3D实体的设置
                   Grid —一种2D数据设置,它的价值依靠3D物体相配
                   Light—一种提供照明物体的物体,是不可见的(抽象、数据设置、联合)
                   Array—一种表达一个表格的数据设置
                   Group—一组没有类型限制的任意组合的集合
                   Level —全部由父物体组成的物体
                   Material—一个网格的表面特征
                   Mesh —定义一个物体外型的至高点设置
                   Place—关于物体位置的收集  
                   Scene—关于物体时间的收集  
                   Sound—一种以数字形式存储的声音  
                   Texture —用来提供物体表面更好细节的图象

The Behavioral Object (BeObject)
当在Virtools Dev中动作行为是主要概念时,如果他们没有附加给元素时,他们没有起作用。从行为物体层级能看到所有the Virtools Dev类层级物体的简图。从这些层级示例的物体必须是有动作附加在上面的物体。BeObjects能够有动作但是他们不需要必须有动作。
当一个物体有动作附加在上面时,它被确定为这些动作的拥有者。所有的动作只能附加到一个而且只能是一个BeObject上。
注意,一个动作的所有者不总是动作的对象。附加到BeObject上的动作可以改变所有者或者改变其它物体(目标)。
Level
一个可以被描述为:
- 对于所有组成的球形容器
- 在组合中所有元素的根部
- 在组合中所有元素的祖先和父物体
在一个CMO中只能有一个层级。层级能够包括不只一个场景并有零个或更多的地方来组织你的组成到更易于管理的部分。
一个Level是一个BeObject。因此动作和属性能够被附加到Level上。
注意:附加给Level上的脚本能够自动附加给所有场景。
Scenes
在Virtools Dev里的场景就象是电影中的场景一样。
在同一时间内只有一个场景被激活。
只有在场景内的元素才能起作用。
只有激活的元素才能在摄影机里俘获。
不是激活场景里的元素不起作用。他们不能被渲染,并且他们的脚本不能被处理。因此,场景通过完美的方式把组合分割成大比例的叙述元素和大时间基数的时期。当和其它人协作工作时,场景很重要:每个人都可以工作在一个特殊的能够场景里,在那里可以保存和合并到一个CMO里。
层级场景(包括所有的层级物体)使激活的层级场景启动。当一个新的场景开启的时候,以前激活的场景自动无效。
一个场景就是一个BeObject,因此动作和属性可以附加到场景上。
场景包括参考的元素和没有副本的元素或者元素本身。
Places and Portals 地点和入口
正象场景组织叙述分割到一个层级的方法一样,地点也是组织空间分割到一个场景或一个层级的方法。在一个层级中可以有零个或者更多个地点。在场景和地点之间没有特殊的了连接。
地点是3D实体层级的一部分能够包括零个或者更多个3D实体。在地点内部每个地点都可以看作3D实体的父物体。
地点和入口被使用来优化渲染阶段,通过摄影机来显示结果。
当入口系统(以入口管理器为例)被激活时,规则如下:
1在每个渲染过程之前,存在于空间的(包含激活摄影机的)地点目录通过地点限制盒被计算。
这些位置,和所有带一个入口的位置,被考虑潜在地可见并被渲染器处理
2如果一个元素不是这些位置的成员,这个元素不能被渲染。这个元素马上考虑不可见(即使这个元素被激活并且它的动作被执行)
3如果这个入口系统不被激活,通过位置和入口没有优化(每个3D实体被考虑潜在可见并只有一个等级选择被使用),但是位置仍然会被使用来组织3D实体给其它的目标。
位置在多人合作工作时仍然很有用,每个人都能工作在一个特殊的能被保存和合并到CMO中的位置。
一个位置也是一个BeObject。因此动作和属性也能加到位置上。
Abstract Elements   抽象元素
抽象元素在Virtools Dev中是一种数据结构来存储信息和来描述两个元素之间的关系的。
Groups  
组是最简单最有用的组织Virtools Dev 3D的实体。组被要求列出执行任何逻辑联合必需的不受限制的包含相同CKClass或类型动作物体 。
组能够在创作模式或者在运行时间通过BBS被建立,组能够被重新安排,覆盖等。--许多标准的BBS提供组的管理。
一个组是一个BeObject。因此动作和属性也能附加到组上,组能够是其它组的一部分。
Arrays 排列
排列是一个简单的表格包括横纵有组织的单元。排列通过纵向类型排列(所有纵向元素有相同的类型。排列提供5个数据类型。
1整数
2浮点
3一行
4CKObject
5参数
排列能够被建立在创造模式或者通过BBs在运行时间里。排列能够被分类、过滤、搜索、重复等。--许多标准的建筑木块都被排列管理器提供。
排列是他们自己的动作物体,所以他们能有动作附加给他们。

Virtools过程循环
总体
当你或使用者运行一个组成时经常涉及到作为一祯或者一个渲染,Virtools过程循环是一个反复性的过程。理解循环过程能够帮助你建立高效的脚本和带满意侦频的能流畅运行的组成。
一个满意的帧频通常定义为能提供高效时时播放的帧频。时时播放最少需要每秒15个图片,总共侵入开始在每秒60帧。因此,作为一个创造者,你应当一直试图保持一个每秒最少30帧的帧频(近似与电视的帧频),目标是每秒60帧的帧频或者更多。
Virtools是一个即时引擎:它允许所有的动作连续不断地起反应在它的环境中,包括使用者。
当一个组合运行时,Virtools重复运行过程循环—经常运行相同的步骤在相同的次序下直到一个组合被停止或重起。
一个过程循环的持续时间一般叫做一帧。帧频是每秒钟完成和在每秒多少帧被测量的过程循环的时间数。帧频经常显示在Virtools Dev的界面上,在屏幕右角落底部靠近播放暂停键处。
过程循环应当近可能快地执行。一个很高的帧频能对用户的输入提供很快的响应,增加用户对组合质量的理解。
尽可能快地渲染图片提高对动画质量和视觉效应的察觉。注意,更快地渲染图象比更新显示频率不能提高显示质量和,在有些情况下,通常会降低显示质量。
最大化帧频,你必须在每一帧最小化动作工程的执行数量。决不要试图在一个给定帧做得更多比最小的必须品来维持经验。
当制作脚本时,你应当试着:
   划分任务成子任务并每帧只运行最小数量的子任务。
   建立你的脚本使帧频保持相关的不变。
   消除迟钝,响应用户的输入,一个大的脚本必须在它的全部给定帧内运行。帧频很可能显着降低并且用户将很难再次提供相同的输入。

一些BBS,例如跟随BB的角色曲线被设计来操作在一个增加的方式。胜于跟随指定的曲线从开始点到终止点在一个单帧中,跟随BB的角色曲线移动角色向前 只有一小部分的曲线在一个给定帧扩展工作并增加质量。
显示在图1-6中是过程循环的两个部分
1 处理动作和
2 渲染场景
处理动作
动作的处理在你的组合里建立交互。动作能够应用给Virtools中的每个元素。在动作的过程中所有被激活的动作都能被执行,相继地,使用一个优先的区分计划。
每个动作,当被执行时,通过动作连接能够激活其它的动作。动作连接有一个能在帧(过程循环)中被测量的连接延迟。动作延迟能够:
0— 在当前帧传播激活
1— 在下一帧传播激活
n—在当前帧后的第n帧传播激活
在提及之前,不同的管理器在它工作中帮助动作引擎。管理器运行他们的任务不是在动作处理的开始就是在动作处理的结束—只在渲染之前。
一般来说,你不需要知道怎样或者什么时候这些管理器工作,但有一个例外:消息管理器。消息被发送在动作处理的结束时并在下一帧开始是被接收。因此,交互驱动消息一直经历一个单帧的延迟在消息被发送和接收的帧之间。
所有Virtools管理器的完全描述在Virtools SDK中是可利用的。
Rendering   渲染
渲染显示组成并由一个特殊的渲染引擎运行。引擎能够被用户选择并需要显卡和操作系统的实际性能;然而你能强制使用某种渲染或使某个功能丧失能力。
当工作在Virtools Dev时,通过选择一般参数从选项菜单并选择渲染标签你能够选择渲染引擎在创建和编辑模式。
做为特色时,渲染是最浪费时间在过程循环的加强部分。
The Behavioral Engine - CK2 动作引擎
总体
动作引擎执行动作处理,是Virtools的中心组成。同样CK2知道(因此你经常在界面上看到CK参数,例如CKID, CKClass等等),动作引擎使Virtools如此的灵活。
CK2是干什么用的?CK2执行你的组成,处理场景和管理所有的交互作用在用户和组成元素之间。CK2也处理你有动作应用到组成的元素?那就是,动作物体。
一旦所有的动作在给定帧内运行,CK2提供适当的信息给渲染引擎(CK2-3),所以相互作用的结果能够显示给用户。
当一个组成被播放时,则下面连续的任务被执行。
注意:为了适当地解释下面连续的任务,你必须注意每个陈述中层级的数量。必须完成的子任务作为优先次序的任务的一部分是相同主修数字的一部分。例如,任务 3.1.1节“对于每个被附加上开始的BB还没有被激活,激活的BB具有最高的优先权。”这意味着所有的子任务必须运行来完成任务3.1.1。任务 的"For each"部分描述意思是那个任务(或者所有子任务)被重复的完成除非有必需的—所有附加上开始的BBs已经被激活—条件出现。
      1 对于在一个层级中的每个激活元素,在优先权顺序中分类元素来建立元素的处理顺序。
      2对于每个脚本应用在上面的元素,在优先权上被分类来建立对于那些元素的脚本处理顺序。
      3 对于每个元素,从最高的优先权到最低的优先全,保留处理最高优先权的元素。
      3.1对于每个被附加上当前运行元素的脚本,保留处理最高优先权的脚本。
      3.1.1对于每个没有被激活的附加上开始的 BB,优先权最高的BB起作用。
      3.1.1.1处理BB,计算pOuts,激活所有的bOuts和发送任何消息。
      3.1.1.2对于每个激活一个动作连接的bOut。
      3.1.1.2.1如果动作连接有一个0的延迟然后激活并运行下一个BB。以这种方式继续直到所有在脚本部分中的BBs起作用或者动作连接比0有一个更大的延迟。
      3.1.1.2.2如果动作连接有一个比0大的延迟然后增加BB给必须帧内运行的堆。例如,连接延迟是1,然后BB在下一帧被运行。如果连接延迟是n,然后脚本保持激活并且BB在当前帧的第N帧被运行。
注意:层级一直在起作用并在每一帧中是最高优先权的元素。所有普遍不起作用的元素在剩余任务里被忽视。
在当前帧继续运行知道所有的BB被运行或者连接延迟大于0。
当所有的动作运行被完成,CK2提供信息给渲染引擎在屏幕上渲染图象,图象被渲染
所有大于0小于1的连接延迟和动作运行再次开始。
你能够看到动作的运行起作用通过在图表中的活动的Trace模式。当组合被播放时,激
活顺序和BB的运行在图表中高亮的红色显示。
重要:如果一个BB循环在内(例如等待消息或者停止-去BB),然后对于BB的完成次序
不跟随上面的运算法则大纲。代替,执行顺序受分派给BB的优先权控制。不在外在的创
造者的优先权中,执行顺序是不确定的。所以例如,如果有两个可能的激活流程,并在BB
上没有动作连接导致的优先权。预知那个流程会被首先激活是不可能的。当下一个流程被处
理时激活的流程继续直到完成。因此,为了保证在一个脚本内连续执行,指定在BB内部的
优先权的关系变得很重要。
Behavior Loops 动作循环
当一个连续的在一个重复的状态被激活或者触发的BB(或者BG)被动作连接以某种
方式所连接时一个动作循环被形成。
换句话说,一个动作循环是一个重复操作的直观表示。一个重复操作也可以被认为是一个反复和重复处理一个操作。
在很多执行的重复操作中,一个有意义的关系是保证有一个有可接受的重复操作时间数的上限。换句话说,这需要一个机制来保证一个操作不被不确定地重复。
Virtools Dev允许你定义在一个单独帧内完成的最大的操作数经过Max Behavioral Iterations示意性的设置。
注意:最大的动作重复缺省值是8000。这个最大的动作重复缺省值被存储在组合中。

只要循环不经常起作用,只要在一帧内的反复次数不超过动作重复的最大数。所有的动
作循环能有一个积累的0的延迟。如果在一个贞内的反复次数超过了最大的动作反复那么假定一个发生和处理的无限循环动作引擎马上停止。
例如,排列和组经常有一个0的循环延迟,所以在排列和组内的所有元素被操作在一个单贞内。
然而,要紧记你想要划分被完成的处理成每贞必需的最小数量。因此,除非完全必需,一个行为循环在至少一贞中应当有一个积累的延迟。实际的动作循环延迟能有很多积极价值在0到32767范围内。
注意:基于时间的循环BB需要一个1贞的一个积累循环延迟或者BB自动改变基于贞的处理。

Priority优先权
一旦CK2已经分类哪元素起作用,CK2怎样知道哪个元素最先运行。答案是元素的优先权:最高的优先权最先通过。]
你能够设置优先权给动作物体,脚本和BB。一个动作物体优先权和一个脚本的优先权在层级管理器被设置。BB的优先权在Schematic图解中被设置。
如果一个或者更多的元素有相同的优先权,并且处理顺序是自由的。

关于图1-9,注意两个计数器和优先权都被连接来开始一个0贞延迟。因此,渲染引擎基于每个BB的优先权必须决定哪个BB首先被激活。

Behaviors and Scripts
总体
一个动作可以表示成一个脚本—一个动作的直观表示,应用给一个元素,表现在图表里。
一个脚本由一个脚本组成—一个标题一个主体。脚本的标题显示脚本的名字和脚本的所有者。脚本的内容由开始和一个或者更多的BBs, BGs, paramOps,参数,bLinks, pLinks,注解等。
图1-10举例说明一个简单的脚本包含一个BG和BB。注意在BG和BB之间字体颜色和字体宽度的不同点。
Behavior Building Block (BB)动作建立块
执行动作的基本机构是BB。BB是一个直观表示的作为一个功能的软件元素,一个准备使用的解决方案对于一个已知的任务。

解释一个BB符号
BB达到一个不同的矩形大小,在下面你能看到一些不同的BB类型。

动作输入 bIn
一个代表性的BB至少要有一个动作输入?虽然这有很少的例外(在自动模式中运行的BB,创建混合动画)。bIns经常被定位在BB的左边。当BB接收到一个激活在BIN状态时一个BB开始运行。
动作输出 bOut
BB经常有一个动作输出?虽然有众多的例外。输出经常定位在BB右面。输出在当前贞的运行过程的结尾时被激活。激活流程遵照所有附加动作的连接。
动作连接   bLink
BBs通过bLink被连接,bLink定义BBS运行的顺序。BB的运行顺序被叫做激活流程。

每个bLink都有一个连接延迟来指定什么时候CK2能够在bLink的结尾处处理BB。连接延迟能够是0或n.。
参数输入和参数输出
BB有代表性的参数,或者是以参数输入的形式在BB之上接收数据或者以参数输出形式在BB之下发送数据,入图1-5。参数在后面的部分会被详细讨论。
目标参数
被用来明确确定受BB影响的元素的目标参数是一个pIn的特殊类型 。
当一个BB被附加给一个元素时,那个元素变成了这个动作的所有者。代表性地,被附加给一个元素的BB把脚本的所有者作为目标。
例如,翻译经常修改它所有者的位置。然而,你可以想让一个BB去影响一个不同的元素比所有者。在这样的情况下,你必须明确地把BB做为目标在一个不同的场景中。
作为选择,你可以附上一个动作给一个不同于受动作支持的类型的元素(例如,你可以附上一个旋转动作给一个材质)。一个目标参数被Virtools Dev自动地建立在一个矛盾级别的情况下。
一个BB只是一个可命中目标的
图1-16可命中目标的圆柱的建立模块窗
如果一个目标参数已经不存在了在一个动作目标图表上,一个目标参数能够被附加通过选择增加的目标参数?从下拉菜单中。一个新的pIn被创建作为最左边的pIn。一个目标参数输入被确定通过一对小正方形。(对于一个正规的pIn胜于平常单一的小三角形)
C S V
一些BB在左下角被标记用一个或者更多个字母C,S或者V。
在左下角的一个“C”意味着BB有一个自定义的对话框被使用来配置复杂的参数。(例如动画同步闪光装置)
在左下角的一个“S”意味着BB已经被设置。代表性地设置控制哪个参数通过BB
被处理或者参数怎样通过BB被控制。
例如,Mouse Waiter(鼠标管理器)通常考虑8个bOuts。你可能只需要这些bOuts中的4个,所以你可以只考虑编辑设置你需要的4个bOuts,从而保存有价值的处理时间。
或者你可以需要一个BB象Linear Progression那样基于参数胜于基于时间的。你能够选择基于运行的贞通过BB设置。
图1—20线型级数设置对话框
在BB左下角的V代表BB有一个可变的结构。那就是你能够做一个或者更多个如下的操作:
1 增加bIns
2 增加bOuts
3 增加pIns
4 增加pOuts
5 改变一些或者多有的pIns 和/或 pOuts类型
在在线参数中检查个体的文件给一个BB 来正确决定什么能够被改变。
图1—21参数选择,一个可变的BB

消息
一个BB可以有消息图标,代表着这个BB可以发送和接收消息。代表性地,消息用于用信号通知一个改变的情况,要求完成一些任务和用信号通知一些任务已经完成。
注意:在发送和接受一个消息时有一个延迟贞。

BB运行
你可以一直检查个体帮助文件从在线参考到明确地看到一个BB是如何工作的。在运行时有3种类型的BB被处理;那就是。在播放模式:
1 一个单独的动作:在当前贞内BB完成运行。一个单独动作的BB能够保持独立或者是动作循环的一部分。例子:Set Fog(世界环境/球)
2 内部循环:每贞BB都被开启和激活直到BB关闭。例子;Keyboard Controller(键盘控制器)。注意对于内在循环的BB你必须注意内在循环的优先权。
3 外部循环:BB完成一步在当前贞内的BB处理循环中。如果创造者想要BB以经典的方式来操作,需要一个外部起作用的反馈回路。例子:Bezier Progression(逻辑/循环)

注意:一个外部循环的BB现在不需要一个外部起作用的反馈回路。以外部起作用不被需要的反馈回路方式创建一个脚本是可能的。
但是当他们被附加给一个元素时也有一些BB在运行时间不起作用。一个BB的例子是Create Nodal Path(3D转换和节点路径)
图1-24创建节点路径BB

Behavior Graph (BG)   动作图表
一个动作图表是创作—定义由一个或者更多个BB、操作参数等组成的动作。首先来看,一个BG几乎差不多被看作一个脚本。然而,一个BG不同于一个脚本因为BG的建立故意压缩了动作。BG压缩一个动作以能够被保存和再生方式。
Virtools Dev的一个最有用的特征是有在一个再度使用的贞中相互捕捉的能力。动作重新使用能够导致惊人的生产效率。
Virtools Dev把一个严密相同的BG看做一个BB。一个BG能够附加给一个元素以和BB相同的方式。一个BG甚至能被看作为一个创作—定义BB,对于一个创作者、 以相同方式工作的BB。一个BG能够有pIns, pOuts, bIns 和 bOuts。一个BG能够被看作是一个高级的完成一个在Virtools Dev中超过BB提供的范围的特殊的任务的BB 。(例如,竞赛游戏中对于一个汽车的第三人称摄影机)
注意: Virtools Dev文件任何时间都引用使用一个(行为)模块或者一个在组合中的BB、代替行为图表的读本或者BG。
图1—25一个塌陷的延伸的行为图表。
如果你用上面的已经存在的BB图象比较关闭的BG图象,你会注意到在字体和单位上用来帮助区分BG和BB的不同。  

Parameters 参数
一个参数由名字(pName)、类型(pType)和数值(pValue)。参数在传统规划中是Virtools Dev的相等变量。
参数通过参数连接(pLinks)来转移数据:
—在行为之间—从参数输出(pOuts)到参数输入(pIns)。
—在参数运转(paramOps)之间。
—在paramOps 和 pIns之间。
—在paramOps和本身参数之间。
参数也能被使用来分配数值给一个元素的属性。
参数类型
参数类型定义数据的种类,通过参数类型一个参数能够被完全控制。参数也能被广泛地成组:
1 参考点
参数确定一个物体,例如从CKClass层级(例如,一个3D实体,一个动画,一个脚本)
2 数值
   参数包含一个数值。(例如,一个颜色、一个键盘键、一个整数等)
3 详表
   参数的数值被强加给预先确定的数值的一个范围。(例如,由Mini Calculator提供的操作者被强加给+, -. /, *)
4 特殊的
   参数与预先的种类不配合。只有3种参数类型,反射物体、障碍和地板。
对于参数类型更详细的描述,看SDK文件。
Parameter Input, pin 参数输入pIn
参数输入是行为和paramOps—控制你怎么工作的数值—的争论点。如图1—6,输入参数通过一个BB、BG或者paramOp顶部的小三角被表现。参数输入特别是自身参数是它的pValue的来源。pIns不存储它的数值在起作用的物体之间。
Parameter Output, pOut   参数输出pOut
当行为和参数运转已经完成他们的处理时,它们代表性地产生参数输出。参数输出表现为一个BB, BG, 或 一个 paramOp底部的小三角。参数输出能够有一个或者更多个目的地,(via pLinks)目的地在参数的数值改变时立即被更新。pOut存储它的数值在起作用的物体之间。
Parameter Link, pLink   参数连接   pLink
    一个参数连接是一个传播一个pValue从一个输出或者一个自身参数到一个输入
的连接。不象行为连接那样,对于参数连接没有连接延迟。参数连接通过虚线被示意性的表现。
Local Parameter 自身参数
一个自身参数被表现为一个小的矩形—通常位于pIn上面。自身参数是存储数值的数据缓冲器直到它们的数值被请求通过一个数据连接。自身参数是正常的,但是不总是通过一个pLink连接给pIns。
图1—28自身参数通过参数连接 附加给BB。

注意:两个唯一的自身参数被允许有相同的名字。然而,这个操作不是被推荐的由于潜在的混淆。举例,当你拷贝并粘贴一个自身参数时,你拷贝参数的名字,类型 和数值给一个新的自身参数:这两个参数是不同的,虽然他们有相同的名字(由于拷贝和粘贴操作)。你被鼓励使用唯一的名字给你创建每个参数。
This
This是一个涉及到脚本所有者的特殊的自身参数。当你在脚本中创建了一个This参数时,它自动设置它的数值给一致的脚本所有者。
Parameter Shortcuts 参数捷径
参数捷径被使用在:
通过减少pLinks的数量来单一化你的脚本。
通过脚本边界共享参数
参数捷径表现为一个箭头图标,正如你在图1—29中见到一样。
参数捷径通过拷贝一个pOut建立(通过下拉菜单)然后运行一个Paste as Shortcut(通过下拉菜单)。
拷贝并粘贴一个捷径创建一个具有和最初捷径相同原始资料的第二捷径。因此,所有被拷贝的捷径指向相同的资源并有相同的名字、类型、数值和标识符在全部时间里(CK_ID)。
图1—29一个参数捷径资源和目标记号

http://www.virtools.com.cn/bbs/thread-389-1-1.html

阅读 评论 收藏 转载 打印举报
已投稿到:
  • 评论加载中,请稍候...

       

    验证码: 请点击后输入验证码 收听验证码

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有