首页|行业资讯|企业名录|周边产品|数字城市|增强现实|工业仿真|解决方案|虚拟医疗|行业仿真|图形处理|军事战场
资讯首页
行业资讯 >> 学习教程>>正文
virtools教程2:面向对象设计
2012年3月14日    评论:    分享:

    来源:第三维度

    二、元素、类和面向对象设计

    (一)概述

    Virtools Dev 组织元素进入类。元素包括你进入 Virtools Dev 后带来的媒体 (模型,声音,纹理等),也包括你在 Virtools Dev中产生的物体(例如曲线、场景、现场等)和数据(例如参数、属性和脚本)。

    这章的主题是, 专注於 Virtools 对交互对象的科学分类,包括:

    · Virtools Dev 如何分类媒体。(举例来说,在Virtools中有灯光类,它包含所有灯光的属性,每个灯光是灯光的一个例证,而且有它自己的特性,例如它的颜色和它的范围)。

    · 某些操作为什麽只可能出现在某个元素上(类)。(举例来说,为什么字符才能使用字符动画)。

    · 某些操作为什麽可以出现在所有元素上。(举例来说,所有的元素都能被激活或解除激活)。 、

    这章介绍的Virtools交互对象类的层次,对大多数使用者足够了。然而,你能在Virtools的SDK中找到类层级结构完整的描述。
 
    (二)面向对象设计

    Virtools Dev 采用面向对象的方法建立一个作品(一个 CMO 文件)。即,每个元件有一个唯一的特性,各种特性由类来描述。元件受控于交互行为模块(BB)中的方法以及参数操作符(paramOps)。Virtools Dev中的类被称为 CKClass 。

virtools教程2:面向对象设计
图1-1 Virtools类层次结构中的交互对象分支

    例如,有一个Virtools Dev中的类叫做CKCharacter,只有CKCharacter能用于角色的特定行为设计。(例如角色控制器BB)

    Virtools Dev的面向对象的特性意味着你导入到Virtools Dev中的任何事物(以模型、声音等形式出现的元件)都是一个CKClass的实例。同样,你在Virtools Dev中创建的任何事物(从一个摄象机到一个阵列)也都是一个CKClass的实例。图1-1说明了Virtools类层次结构中的交互对象分支。

    (三)继承

    使用类层次结构的优势是可以使用继承。也就是说,任何元素都有它自己独特的特性,并且继承了它父类的特性。

    例如,类CKLight继承自 CK3Dentity,CK3Dentity继承自 CKRenderObject,CKRenderObject继承自 CKBeObject。

    所以,一个灯光竟然有了CKLight类对象的特性,就像:

    · 灯光类型(点、方向等)

    · 灯光颜色(白色、红色等)和

    · 灯光的照射范围

    这些特性能够在建立灯光(在创造模式)或者在进行交互行为时(实时运行,例如播放模式)进行改变。

    其次,一个灯光是一个三维实体,意味它继承了三维实体在3D空间内的位置、方位等特性。就因为灯光是一个三维实体,所以能够应用到三维实体上的任何行为也能应用到灯光上。

    第三,一个灯光是一个渲染对象,意味着它能够被渲染(能够在重放中被看到)。就因为灯光是一个渲染对象,所有能应用到渲染对象上的任何行为也能应用到一个灯光上。

    最后,灯光还是一个交互对象,也就意味着它能被附着一个交互动作(有些Virtools类,例如存储内部数据的类,不能附着动作给它)。就因为灯光是一个交互对象,所以任何能应用到交互对象的行为也能应用到一个灯光上。

    (四)特化

    Virtools Dev对行为提供了特化,因此,对于完成某些特定任务(也就是多态性),其行为进行了优化处理。例如,移动一个3D帧比移动一个角色更容易,这是因为移动3D帧的行为被优化了。

    优化行为减少了计算时间,在可接受的渲染质量下,使作品更小、对用户的输入反应更快。

    (五)集合

    Virtools Dev支持集合,在具有逻辑关系的二个元素之间,一个元素是另一个元素的一部分,但他们分别都具有自己的特性。

virtools教程2:面向对象设计
图1-2 3D对象的网格设置栏

    例如,图1-2所示的 3D对象,可以看到有一个Object Meshes栏。虽然在同一时刻只有一个网格能被激活,但是一个3D对象可以拥有好几个网格。

virtools教程2:面向对象设计
图1-3 网格设置的材质栏

        图1-3是网格设置,可以看到有一个Materials Used栏。一个网格可以有几个材质,它们中的几个能够在同一时刻被激活。

virtools教程2:面向对象设计
 图1-4 材质设置的纹理栏

        图1-4是材质设置,你会看到一个Texture标签。一个材质只能有一种纹理。

       所以说,3D实体元素(不管它是一个物体还是一个角色等)之间有关联,但每个元素都保持相对的独立性。在上述的例子中,纹理是材质的一部分,材质是网格的一部分,网格是3D物体的一部分。

    因为每个元素都保持相对的独立性,所以每个元素的特性(例子中的物体网格、材质、纹理)都能够被快速简单地改变。事实上,全部的元素都能被另一个兼容元素所交换。

    例如,你可以改变一个3D物体的网格、材质或者纹理—或者它们的任意组合,而不改变3D物体存在的现实。

    注意:如果改变一个角色的网格,那么很可能你的动画就不会象预期那样工作了。

    运行时集合、场景层次

    一个场景由元素组成,通常被运行时激活。场景内的元素被组织到一个场景层次中。

    Virtools Dev在场景层次内提供了一个特殊的集合形态。在运行时,元素之间的关系通过Set Parent和Add Child(两者都在3D Transformations/Basic中)被确定。运行时集合允许你在任意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教程1:概述
下一篇:virtools教程3:作品构成元素
网友评论:virtools教程2:面向对象设计
评论
留名: 验证码:
您可能还需要关注一下内容:
·基于Virtools的虚拟小区漫游系统的设计与实现
·基于VIRTOOLS的虚拟太阳系的设计与实现
·基于VIRTOOLS的复杂机械设备虚拟装配技术研究
·基于Virtools的分布式高炮火控系统仿真平台设计
·Virtools教程4:进程循环
·virtools教程3:作品构成元素
·virtools教程2:面向对象设计
·Virtools教程1:概述
·Virtools Dev 3.0 SP 1 版本更新
·虚拟现实环境下的列车机械维护
☏ 推荐产品

Ladybug5全景
商家:力方国际

ProJet®
商家:力方国际

ProJet®
商家:视科创新

Premium1.5
商家:视科创新

巴可HDX主动立体投
商家:德浩科视

巴可HDF-W26投
商家:德浩科视

巴可30000流明2
商家:德浩科视

巴可4万流明2K投影
商家:德浩科视
☞ 外设导航
☏ 企业名录
【广州】中科院广州电子技术有限公司
【北京】第二空间(北京)科技有限公司
【北京】幻维世界(北京)网络科技有限公司
【厦门】厦门惠拓动漫科技有限公司
【厦门】厦门幻眼信息科技有限公司
【深圳】深圳南方百捷文化传播有限公司
【北京】北京思源科安信息技术有限公司
【上海】上海殊未信息科技有限公司
【北京】北京赢康科技开发有限公司
【武汉】武汉科码软件有限公司
友情链接 关于本站 咨询策划 行业推广 广告服务 免责声明 网站建设 联系我们 融资计划
北京第三维度科技有限公司 版权所有 京ICP备09001338
2008-2016 Beijing The third dimension Inc. All Rights Reserved.
Tel:010-57255801 Mob:13371637112(24小时)
Email:d3dweb@163.com  QQ:496466882
扫一扫 第三维度
官方微信号