Virtools(精选7篇)
Virtools 篇1
摘要:结合日常教学对虚拟实验的需要和当前虚拟实验开发现状, 简要介绍了一款虚拟实现设计开发平台Virtools, 以及在该平台下进行虚拟实验开发的步骤。提出将MultiGen Creator模型应用于该平台的思路, 并对在开发过程中应当注意的问题进行了探讨。
关键词:Virtools,虚拟设计,建模,行为模块
1 引言
实验是教学中一个重要环节, 对于提高教学质量、提升学习者兴趣具有重要意义, 但限于成本和投入产出比等因素, 很多院校实验课程开设不足, 在一定程度上影响了教学质量。建立低成本、高效率、功能全面、具有协作性的实验室成为摆在诸多院校面前的一道难题。建立虚拟实验室是解决这一问题的有效途径。
从开发技术角度而言, 目前虚拟实验室开发技术主要有Java、VRML、ActiveX、Cult3D等。其中Java由于具有可移植性强、安全性高等特点, 在虚拟实验开发上得到广泛应用, 缺点在于其界面不能模拟真实的场景和仪器, 沉浸感差, 而且开发技术难度大, 不易实现;基于VRML技术开发的虚拟实验室能够模拟较为真实的场景和仪器, 学员临场感和沉浸感强, 但其缺点是交互性差, 需要借助Java语言或C++语言进行编程才能实现复杂的交互功能, 这使得多数非计算机专业的教员对于开发此类课件望而却步, 不易推广。使用Virtools软件进行虚拟实验开发可以相应降低开发难度。
2 关于Virtools开发平台
Virtools是法国达索公司 (Dassault System) 开发的专业VR设计开发平台操作界面如图1所示:
目前全球已有多家设计公司使用此软件平台开发多种游戏软件及交互式网页。Virtools以其完全可视化接口与高度逻辑化编辑方式, 通过简单的鼠标拖拽即可将互动模块加入到一般的3D模块中去, 快速简单建立3D应用程序, 适合没有编程基础的3D设计人员开发使用, 大大降低了开发难度。模型、动画、图象和声音等工业标准媒体都能通过Virtools的行为技术得以应用。在Virtools中一个动作是某个元素怎样在场景中运动的一个简单描述, 可通过绘图界面型的示意编辑器来创建任意类型的内容, 已创建的行为可以被其他模型物体再度使用。
针对专业编程人员Virtools也提供了一个软件开发工具包。包括一个能访问动作的某个部分和渲染过程的软件开发工具包。使用SDK能够创建新的动作、修改现有动作的运行、写新的文件给输入和输出文件来支持你选择的模型文件的格式, 可以简单快速的测试新的思路而并不用执行自定义动态连接库来执行自定义代码。
采用Virtools技术开发三维虚拟实验, 能够模拟真实的实验场景和真实的实验仪器, 让用户产生强烈的现场感, 提供的复杂的交互功能, 使之沉浸其中, 开发难度小, 易于实现。
3 应用Virtools进行虚拟实验开发
虚拟实验给提供用户的一个实验教学、技术交流、共同研究、协同工作的平台, 是一种基于计算机虚拟原型系统的全新的科学研究与工程设计方法。虚拟实验通常由两部分组成:虚拟场景和交互控制。其中模型的控制完成了虚拟实验中的交互操作, 而虚拟场景则是由构建的三维模型, 如战场空间、武器装备、树木河流、天候条件、人物角色等共同构成。基于Virtools平台进行虚拟实验开发主要分为以下三个步骤:
3.1 构建实验模型
虚拟实验系统中模型构建的好与坏是决定整个实验系统能否流畅运行的关键。模型的逼真程度与面片数量大小是一对突出的矛盾, 在构建时很难做到二者兼顾, 这也是评判模型构建成功与否的重要标准。随着技术的进步和硬件渲染能力的提高, 这一矛盾正在逐步缩小, 运用LOD、billboard和贴图等技术手段可以大大缩减实验系统需要实时渲染的面片的数量, 在逼真度和面片数之间找到平衡点。Virtools平台的建模能力较弱, 通常不直接在该平台下建模, 而是在外部建模软件中制作好以后再导入。构建模型通常有以下两种方法:
1) 使用软件3DS MAX或Maya建模和材质、贴图处理, 安装MaxExporter插件, 将制作好的三维模型或动画以NMO格式保存。使用这种方法制作的模型其优点是形象、逼真度高, 并且有大量的模型库可供使用, 缺点是生成的模型面片数量巨大, 发布后对网络带宽要求高。通常由这种方式制作的模型很难直接在虚拟实验系统中使用, 而是要经过简化处理达到数据量要求后才能使用。例如图2是使用3DS MAX软件制作的实验楼模型, 其面片和顶点分别达到了4.5万个和13万个。
2) 采用三维建模软件MultiGen Creator进行建模。MultiGenCreator是MultiGen-Paradigm公司专门为复杂虚拟场景的实时漫游而设计的建模工具, 它以点、线、面等这些基本的几何元素构建整个虚拟场景, 通过贴图增强视觉效果, 生成模型数据量小, 数据结构清晰、可控, 绘制速度快、交互浏览过程方便, 极适合VR系统中实时性 (Real Time) 的要求, 缺点是模型逼真程度不高, 建模过程较为复杂, 模型需要转换后才能被Virtools使用。例如图3是使用Creator软件制作的实验楼模型, 其面片和顶点分别是477个和2086个。相比之下, 使用Creator构建的模型数据量远远小于前者, 对硬件要求也更低, 建议在满足逼真度要求的前提下采用。
3.2 位模型添加行为
Virtools内置500多个行为模块 (Building Blocks, 简称BBs) , 行为模块是使用者与模型交互的接口, 通过它能够对三维 (或二维) 模型进行各种操作, 如大小、颜色变化、碰撞测试、路径跟随、参数传递等, 或是实现模型的粒子效果、矩形变换、相机跟随等效果。BBs是Virtools最不同于其他仿真软件 (如MultiGen Vega) 的地方, 模型可以直接调用行为模块库中的内置BBs进行控制, 实现对鼠标、键盘的响应, 软件还提供了编程接口, 支持使用VC++对现有的BBs进行修改或是编写新的BBs, 满足开发人员需要。
3.2.1 功能需求分析
首先要对实验系统要实现的功能做完整的分析, 明确每一个模块的具体作用和要实现的效果, 不能太过模糊, 否则在添加行为模块时就会造成困难。确定一种适当可行的方法, 并且尽可能地将所有的变数量化, 定义出变量之间的关系。
3.2.2 绘制流程图
根据功能需求分析, 确认系统逻辑的可行性, 找出有任何错误的地方, 以避免在添加BBs的过程中才发现错误, 这就必须花更多时间去修改, 更浪费时间。整个流程图绘制完成, 就可以很清楚地了解执行流程。
3.2.3 合理配置BBS
依照流程图寻找哪些行为模块可以满足系统的需要, 将这些BBs拖拽到3D Layout编辑区中的角色身上, 并在Schematic (脚本流程图, 如图4) 中对行为交互模块进行编辑, Schematic是一种图解式互动开发管理器, 其线性图解方式已成为业界标准模式。为每个角色配置相应的脚本, 以符合实验场景需要, 形成3D交互动画。Virtools已经提供大部分我们所需要的BBs, 包含众多的逻辑运算部分, 所以这些BBs已经可以应付大部分的状况。但有时必须自己写VC++代码来制作BBs, 其中主要用到一些Win32和API编程的方法。
3.2.4 配置BBS应注意的问题
对于复杂系统需要很多BBs所组成时, 建议分成几个小步骤, 找到必须先开始执行的一个或者多个BBs, 先拖拽至Schematic中编辑, 设定好相关的参数, 并先行执行, 检查是否有任何错误讯息, 如果没有任何错误讯息, 输出的结果也是我们所需要的, 再继续加入其他的BBs, 重复以上的过程, 直到整个功能完成。建议不要在整个功能的参数都设定完, 并做完流程的连结后, 才去检查执行结果, 除非整个流程都没有错误, 否则会花更多的时间在Debug上。在检查执行的过程中, 建议打开Trace功能, 执行中的行为模.组或连线, 都会显示红色的线框, 或是红色的线条, 可以清楚地知道目前流程执行到哪, 如果整个流程执行太快, 可以在Play键上按鼠标右键, 选择执行的frame rate, 再重新开始执行, 以便于观察。
3.3 虚拟实验的发布
Virtools允许对项目当前的进度做初步的测试与观察, 不需重复所有做过的程序而直接执行测试, 并随时可做任何调整与改变。制作完毕后, 可采用两种方法进行发布:一种是直接发布为exe格式的可执行文件, 需要包含相应的动态库文件以便移植使用;另一种是将整个虚拟实验以vmo格式保存, 同时以html格式保存一份, 以网页的形式发布, 客户端只需安装Virtools Web Player播放插件, 就可以在线访问, 方便远程实验人员进行实验。
4 结束语
通过Virtools开发虚拟实验把一些微观的、抽象的内容和危险的、不易观察到的现象放到计算机中来进行, 不受时间、地点的影响而逼真再现, 有助于强化学员的认识与理解, 拓展思维空间, 提高发散思维能力, 提高了课堂教学效率。
参考文献
[1]IETF:Internet Engineering Task Force[EB/OL].http://www.ietf.org.
[2]E.Nordmark, R.Gilligan, Basic Transition Mechanisms for IPv6Hosts and Routers[R].RFC4213, October2005.
[3]S.Thomson, C.Huitema, V.Ksinant, M.Souissi, DNS Extensions to Support IP Version6[R].RFC3596, October2003.
[4]李振强, 赵晓宇, 马严, IPv6技术揭秘[M].北京:人民邮电出版社, 2006.
[5]沈庆伟, 张霖.基于隧道的IPv4/IPv6过渡技术分析[J].计算机技术与发展, 2007, 7 (5) .
[6]Bradner S, Mankin A.The Recommendation for the IP Next Generation Protocol[R].RFC1752, January1995.
[7]姬同亮, 李玲娟, IP v4向IPv6过渡技术研究[J], 江苏通信技术, 2006, 22 (6) .
[8]李润知, 赵红领, 谭同德.IPv6-IPv4隧道技术的研究及互连方案实现[J].郑州大学学报:工学版, 2007, 28 (3)
Virtools 篇2
关键词:虚拟现实,漫游系统,Virtools
虚拟漫游技术在多种行业发展迅速, 在石油行业中也得到了广泛的应用, 主要用于员工培训和技术展示。随着各企事业单位对虚拟现实的逐步认识, 虚拟漫游技术得到相当的重视。
法国拥有许多技术上尖端的小型三维引擎或平台公司, Virtools公司所开发的三维引擎是微软XBox认可的系统, 其特点是方便易用应用领域广。自2004年Virtools推出了Virtoos Dev 2.1实时三维互动媒介创建工具, 随即被引进中国台湾地区, 并在台湾地区得到迅速发展, 并引进到中国大陆, 越来越多的多媒体技术公司开始应用Virtools开发其产品。下面分几个方面讲解利用Virtools实现虚拟漫游技术的设计思路、原理以及部分关键技术。
一、虚拟场景漫游的功能设计
Virtools制作具有沉浸感的虚拟环境, 它对参与者生成诸如视觉、听觉、触觉等各种感官信息, 给参与者一种身临其境的感觉。因此在对虚拟场景漫游进行功能设计时, 在结合实际功能需求的同时还需要重点关注角色的人称选择、角色的运动路径的控制、视觉模式的选择、门的控制、重力效果、阴影效果等。
功能设计图如下:
二、虚拟场景漫游的原理
虚拟场景漫游的原理是通过给虚拟环境中的每个对象添加交互或行为方式, 通过一系列的组合达到预期目标。Virtools在此方面为用户提供了“行为模块 (Building Blocks) ”, 通过对它操作能图形化的实现这些交互关系和行为控制。行为模块示意图如下:
如图, 可大概了解行为模块的运行原理: (1) 这里是行为模块的流程起点; (2) 发现“流程输入”, 行为模块开始运行; (3) 行为模块获取“参数连接”的内容, 对参数进行处理; (4) 行为模块产生“参数输出”和“流程输出”, 同时行为模块停止动作; (5) 部分行为模块停止运行返回 (1) 的状态;部分行为模块会自动运行, 进入 (3) 的状态。
要使整个漫游系统能够流畅地按预设方案运行, 对漫游系统中的各个行为模块之间还需进行连接, 简称“行为连接”。在漫游系统运行的过程中经常会出现某个行为模块的参数输出是另一个行为模块的参数输入的现象, 这时需要进行“参数连接”来实现和维持数据的传递, 如图3所示:
三、虚拟场景漫游的关键技术和方法
3.1角色动作控制。在虚拟场景漫游, 一般是通过角色控制来达到虚拟视觉效果的。要想控制角色的基本动作需要使用两类行为模块:“角色控制 (Character Controller) ”和“键盘控制 (Keyboard Controller) ”, 通过对这两个模块进行参数设置, 即可用键盘、鼠标来操作角色的行进和运动轨迹。
3.2角色重力设置。在虚拟场景进行漫游时, 正常情况下需要使角色在地面上运动, 不能浮在空中或沉入地下, 这时需要将虚拟场景中的地面对象设置为“Floor”。同时, 为了让角色正确认识到“Floor”并在地面上走动, 还要添加一个行为模块“Enhangce Character Keep On Floor”在角色之上。通过这个两项设置即可实现角色在虚拟场景漫游时的重力控制。
3.3角色碰撞设置。在虚拟场景中漫游时, 角色经常会和一些对象如墙面、物体等发生碰撞。如果没有设置碰撞效果, 角色会穿过墙面或物体。
碰撞效果的实现有3种方法:建立对象的碰撞属性 (Obstacle attribute) 、建立组合对象 (Group) 、绘制碰撞范围 (Grid与Layer) , 一般情况下针对各个不可碰撞的对象使用建立组合对象的方法比较简单易用, 建立对象碰撞的属性侧重与单独碰撞的效果, 绘制碰撞范围则适用于大面积的管控。
Virtools是以“障碍物”或障碍物的范围来确定是否碰撞的, 所以如果要避免碰撞需要将不可碰撞的对象增加“Prevent Conllision”行为模块、“Object Slider”行为模块或“Layer Slider”行为模块。模块图如下:
3.4角色阴影设置。在虚拟场景中漫游时, 阴影设置主要包含两类对象, 即角色的影子或各类对象的阴影。要想实现阴影效果的控制, 必须对产生阴影的对象添加“Shadow Caster”行为模块, 并且为此类对象的“Attribute”设置添加“Shadow Caster Receiver”属性。
3.5门 (portal) 的开关控制。在虚拟场景中漫游时, 门的主要作用是显示摄像机当前面对的对象模型而不显示背面的场景模型, 减少漫游系统的负担。门按照类型可划分为自动门和手动门两种。
自动门的控制是通过判断门和进门角色之间的距离来实现的, 通常给门使用“Preximity”行为模块, 假定设置“Preximity”的距离参数为5, 当角色和门的距离小于5时门会自动打开, 大于5的时候门会自动关闭。
手动门的设置则是门对象添加行为模块“Wa i t Massage”, 在设置好参数后, 当角色碰到门时该行为模块会按照参数设置的时间被打开。
3.6摄影机设置。在虚拟场景漫游时, 观众们的视觉效果就像很多游戏一样, 采用的是第一人称摄像机或跟随摄像机。
第一人称摄像机的效果就像大家熟知的游戏反恐精英CS一样, 展示给大家的是角色眼睛看到的画面, 这是将摄像机放置在角色人物的头部产生的效果。
跟随摄像机是使用“Keep at Constant Distance”行为模块, 将摄像机放置在角色身后保持一定的距离, 随后用“Look At”行为模块来让摄像机始终跟随角色。跟随摄像机, 也需要首先调整好角色的位置和需要摄像机跟随的角度再添加一个摄像机。要让这个摄像机具有跟随的效果还需要设置如下图所示的脚本:
设置“Keep At Constant Distance”的“Referential”参数为角色本身, “Distance”参数为120个单位。
设置“Look At”的“Referential”参数为角色本身, “Following Speed”参数为80%。
若需要在第一人称摄像机和跟随摄像机之间切换, 可以在“Level”设置脚本如图7所示。“Switch On Key”用来设置控制摄像机切换的按键为“1”、“2” (按键可以根据需要添加或减少, 并可以设置任意键) , “Set As Active Camera”用来设置当前摄像机。用户在操作过程中按“1”可以用第一人称摄像机的视觉效果浏览虚拟场景, 按“2”则切换到跟随摄像机的视觉效果浏览虚拟场景。
四、总结
Virtools 篇3
随着虚拟现实技术的不断发展,人们已经不再满足于在单一的电脑上进行虚拟现实的操作,使用多台电脑通过网络连接,以实现多人联机互动,在虚拟现实系统中进行多人间的协作已成为虚拟现实技术应用中的重要组成部分,比如在工业领域,多人联机协同设计,有利于制造出更优秀的产品;在教育或游戏方面,多人联机更是增添了无穷的乐趣,让人有了全新的体验。[1]本文探讨了基于Virtools的双人联机协作系统的设计和实现(主要是在局域网环境中)。
2 Virtools技术
2.1 Virtools技术背景
Virtools是法国Virtools公司开发的一款虚拟现实软件(该公司在2005年被法国工业软件巨人Dassault Systemes集团收购),它方便易用,广泛应用于数字教育、3D动画多媒体、3D/VR电子商务、3D医学研究、工业协同设计、虚拟导览、3D游戏开发等领域。
Virtools具有灵活、易操作的特点,它提供了超过400个以上的行为交互模块(Building Blocks,简称BB),这些模块可以重复使用,极大的加速了生产过程,降低了生产成本。Virtools采用流程图式的编辑接口,开发人员只需要拖曳所需要的行为交互模块就可以构建出复杂的互动应用程序。Virtools的模型输入简便而且接近完美,它支持多款3D动画软件制作的模型,支持多种格式的图片、影片和声音文件的导入。Virtools的制作成果可以通过多种方式播放执行。可用Virtools专属程序执行,也可直接在网页中浏览;或者与任何支持ActiveX的产品整合;甚至可以编译成标准可执行档案。[2]Virtools可以使用脚本流程图、VSL、SDK三种方式进行开发,本文仅使用了脚本流程图的方式。
Virtools除了自身的3D/ VR开发平台Virtools Dev以外,还有5个可选模块:Virtools Server、Physics Pack、AI Pack、VR Pack和XBox Kit[3]。
2.2 Virtools的网络服务器(Server)模块
Virtools Server利用高效率的网络联机引擎协助使用者开发因特网或局域网的3D 多人联机内容, 可以轻松地完成与数据库整合、多人联机及数据串流等功能[4]。
Virtools Server下有四个子模块:Download module、Database module、Multiuser module、Download Component module。本文主要研究其中的Multiuser module,它可以简单高效地创建多用户环境,它使用的是基于标准的TCP/IP网络协议的客户端-服务器(Client-Server)结构,主要由Multiuser Authoring Pack和Multiuser Peer Server Pack组成。
Virtools Server提供两种多人联机服务器:独立网络服务器(Server)和点对点局域网络服务器(Peer Server)。独立网络服务器(Server)可以使用全部四个子模块,而点对点局域网络服务器(Peer Server)只能使用Multiuser module,它相当于独立网络服务器(Server)的简化版,不需要在固定的一台电脑上运行,在局域网中的任何一台电脑上都可以创建Peer Server,但它在同一时刻只能运行一个线程(Single Session),而且最多只能有32个客户端可以连接。[5]本文主要是针对局域网中双人联机协作的,所以使用的是Peer Server。
2.3 Multiuser module中的Session
Multiuser module允许客户端加入一个由Server主持的Session。Session定义了一个虚拟的空间,一个Multiuser应用的实例在其中运行。首先由作为Server的用户使用Creat Session BB 创建一个Session, 该用户就成为Session Master, 可以执行一般用户不能执行的操作。其他客户端用户在加入一个Session 之前必须得到Session ID(可由Get Session List BB得到),然后才可以申请加入该Session。若Session Master设置了密码, 则该客户端必须输入密码。客户端用户可以选择在任何时候离开一个Session, 但如果Session Master离开Session, 则该Session 就会立刻被删除。
2.4 Virtools联机中客户端间通信方法的选择
在Virtools的Multiuser module中,客户端之间的通信主要有两种方法:Network Messages和Distributed Objects。Network Messages方法是一种基本的通信方法,它在客户端之间主要通过Virtools中的两个BB-Network Send Message和Network Wait Message来相互传递信息,这些Message还可以附加上其他的一些数据(如物体的坐标等)一起传递。这种方法对于一些简单的信息传递比较适合,比如各客户端之间的聊天(Chat)信息的传递和显示,或者仅仅是发送某对象简单的位移信息等等。Distributed objects是另一种发送信息的机制。一个distributed object是跟一个本机控制的角色相关联的,它们之间是一一对应的关系,而distributed object的状态可以通过网络发送给其他客户端,至于所发送的状态包括哪些内容可以在Manage Distributed Classes BB中预先定义好,比如位置、方向、动画等等。这样就可以把本机所控制角色的一举一动,通过与它相关联的distributed object发送出去并显示在其他客户端上。这种方法适合于复杂的信息传递或是某些对象复杂的动作、运动的同步等。[6]这两种方法通常是相互配合使用,如在本文的双人联机协作中,采用Distributed Objects方法能比较好地解决角色动作同步的问题,而Network Messages方法则用于游戏场景中一些简单物体的状态信息的传递。
3 联机系统架构及设计
本系统是先在一台电脑上创建Server和Session,然后另一台电脑连接到该Server和加入该Session,同时这两台电脑都会创建一个在本机上操作的虚拟角色,还会创建该虚拟角色的Distributed Object,然后通过网络向对方发布,这两台电脑分别检测到对方发布过来的Distributed Object后,就会在本机上再创建一个新角色与对方的Distributed Object绑定(Bind),具体的架构图如图2所示。这样就可以在本机上看到对方同步的行为和动作。而且本系统也可以在电脑B上创建Server,而由电脑A来连接,也就是在局域网中的任何一台电脑都既可以做服务器,也可以做客户端[7]。
创建Server的流程:
(1)使用Start Embedded Server BB创建一个Server;
(2)使用Connect To Embedded Server BB连接到该Server;
(3)使用Create Session BB创建一个Session;
(4)激活“创建本机操作角色”脚本、“创建新角色”脚本和“删除角色”脚本。
连接Server的流程:
(1)使用Look For LAN Server BB查找网络上是否存在Server;
(2)使用Connect To Embedded Server BB连接到该Server;
(3)使用Get Sessions List BB来获得Session;
(4)使用Join Session BB来加入该Session;
(5)激活“创建本机操作角色”脚本、“创建新角色”脚本和“删除角色”脚本。
在“创建本机操作角色”脚本中,使用Object Copy BB从角色模板中复制创建一个本机操作的角色,使用Create Distributed Object BB来创建本机角色的Distributed Object,在这个BB的Setting中要设置Class为在Manage Distributed Classes BB中预先设置好的Class(这个Class用来管理Distributed Object的一些属性,如位置、动画等)。
在“创建新角色”脚本中,使用Distributed Object Created BB来获得对方电脑发布过来的Distributed Object,再使用Object Copy BB从角色模板中复制创建一个新角色,然后使用Bind Distributed Object BB把新角色和获得的Distributed Object绑定,在这个BB的Setting中同样要设置Class为在Manage Distributed Classes BB中预先设置好的Class。
在“删除角色”脚本中,使用Distributed Object Destroyed BB和Object Delete BB来删除在本机上显示的对方的角色(在对方角色下线时)。使用Get Session State BB和Delete Dynamic Objects BB来检测在Session关闭的时候,删除场景中所有对象。
4 双人协作系统设计
主要的设计思想是,通过判断一些中介物的状态(如场景中某物体的某个坐标轴的数值或角色与某物体的距离等)来确定分别位于两台电脑上的两个角色是否处于合适的位置,同时利用Network Send Message BB发送消息通知对方,当两角色都处于正确的位置时,用Network Wait Message BB 和Wait For All BB来判断是否可以进行下一步的操作。
比如:角色甲和角色乙要一起推开一个挡路的大箱子,首先要判断角色甲和角色乙是否靠近该大箱子(使用Proximity BB),如果两人都靠近了大箱子,而且都按下键盘的Space键(游戏中定义的动作键,在这里会执行一个“推”的动作,使用Key Event BB),就进一步判断角色的方向(使用Get Dir BB和Threshold BB),这时,如果两个角色都面对着大箱子,就能一起合作把大箱子推开(使用Wait For All BB和Translate BB),同时还用Get Z BB和Test BB来判断大箱子能被推到什么位置而停下来。推开大箱子以后,就可以找到原本被挡住的宝箱,从宝箱中获得一个游戏过关的关键道具,接着就可以继续探险了。
其他的双人协作设计如:①两人合作(一人推、一人拉)移开一个柜子;②两人合作拉动一辆挡道的拖车;③角色甲站在水井里悬吊的木板上,角色乙操作水井的轱辘,把角色甲降到井底拿一个道具,然后再把角色甲升上来;④两人合作锯木头;⑤两人合作踩踏车吊起一个宝箱;⑥两人一起操作弩炮车等等。
部分脚本流程图见图5和图6。
5 欧洲古城堡探险游戏设计中的一些关键技术
该游戏场景的模型是在3ds max 8.0中制作,然后导入到Virtools 3.0中。
(1)制作迷宫模型、角色模型、角色动作。
在制作模型时,主要是要注意控制多边形面数,在3ds max 8.0中可以打开Polygon Counter查看。这里的面数指的是三角面(Triangle)的面数,因为在实时渲染引擎中,对场景里的物体都是按照三角面进行计算的。过多的面数会严重影响程序的运行。所以模型要尽量精简,很多被遮挡的面要进行删除,比如墙和柱子的底部等。在角色动作方面,尽量使用CS骨骼,而且跑、走这类动作要有位移,而不能是原地的运动,否则导入Virtools中会出错。
(2)在Virtools中设置场景中各物体的属性。
主要是地板属性(Floor)和障碍物属性(Fixed Obstacle)。角色能在上面行走的物体,如地面、楼梯等都设置Floor属性,然后在角色的脚本中加入Enhanced Character Keep On Floor BB,角色就会在有Floor属性的物体上行走而不掉下去。角色不能穿过的物体,如墙壁、柱子、箱子、门等都设置Fixed Obstacle属性,而且要把各障碍物放置在一个组(Group)里,对应在角色的脚本中要加入Prevent Collision BB和Object Slider BB,进行碰撞检测[8]。
(3)关于Virtools中角色的控制。
首先是用Unlimited Controller BB指定角色各个动作(跑、走、待机、倒退、推等),这里要注意各动作的Order值,Order值越大,该动作的优先度越低,也就是说Order值小的动作会中断Order值大的动作,所以要把“待机”动作放在最后(Order值最大)。然后用Keyboard Mapper BB设置键盘的按键,比如按W键是前进,按S键是倒退等。跟随摄像机主要是使用几个辅助物体(设定父子关系)和Ray Intersection BB、Keep At Constant Distance BB,镜头会一直跟着角色移动,同时为避免视线被遮挡会自动调整摄像机与角色之间的距离[9]。
(4)角色换装。
因为这个游戏场景中的角色都是由一个角色模板复制创建出来的(默认是红色衣服),为了更好地区分本机操作的角色和对方操作的角色,就利用Attribute进行角色的换装。这个Attribute就是指定属性,但这个属性不是指定给角色,而是指定给Virtools中的一个虚拟物体(重命名为3DFrameCloth)。在连接Server的脚本中加入Set Attribute BB,给3DFrameCloth指定一个自定义的BlueColthes属性,意思就是连接Server的一方为蓝色衣服,而创建Server的一方为默认的红色衣服。然后在角色的脚本中加入Has Attribute BB,判断3DFrameCloth是否有BlueColthes属性(在创建Server的电脑上,3DFrameCloth是没有BlueColthes属性的),如果有,就用Set Material BB来给角色指定一个蓝色衣服的材质,如果没有,就是使用默认的红色衣服的材质。这样就实现了角色的换装。
图7~图10是该游戏场景的部分截图。
6 结束语
文章研究了在局域网环境中,使用Virtools进行双人联机协作系统的设计,基本上实现了局域网中的双人联机、角色动作的同步显示、角色的换装、双人协作操作等功能。因为是在局域网中,而且只有两台电脑互联,所以网速上比较理想,没有出现延迟的问题。但如果客户端比较多或者放在广域网的环境中,网速的问题将会变得比较突出,有可能会成为影响程序执行效能的重要因素之一。角色的动作虽然能在两台电脑上同步显示,但感觉动作还是比较生硬,而且在碰撞检测方面也还有很大的改进的空间,比如角色与固定障碍物和可移动障碍物之间的碰撞检测可以设置不同的规则等。在机关的脚本流程图的设计上还比较繁琐,所以将会考虑使用VSL进行优化。进一步的工作就是继续深入研究,解决以上提到的不足,同时努力实现更多人的联机和更复杂的协作操作。
摘要:多人联机协作功能已成为虚拟现实技术应用中的重要组成部分。为了实现这个功能,本文采用了基于Virtools的虚拟场景交互设计的方法,对多人联机协作功能的具体设计进行了初步的研究(主要针对双人联机)。首先介绍了Virtools的技术背景和Virtools中与联机功能密切相关的网络服务器(Server)模块,总结了Virtools联机中的通信方法的选择。然后,提出了局域网联机系统的联机方案和双人协作系统的设计步骤,分析了在Virtools中实现双人联机协作的技术路线和流程。最后应用在一个欧洲古城堡的探险游戏中,成功实现了所有的功能。
关键词:双人联机协作,虚拟现实,交互设计,Virtools
参考文献
[1]郭凤英,林锡渲.网上虚拟现实的开发.微计算机应用,2000,21(5):
[2]刘祥.虚拟现实技术辅助建筑设计.北京:机械工业出版社,2004.2.第1版.171~175
[3]王乐,陈定方,尹念东.基于Virtools的分布式虚拟现实技术研究.湖北工业大学学报,2005,6,20(3):
[4]王乐,陈定方,李勋祥.基于Virtools的分布式虚拟驾驶研究.交通与计算机,2005,6,23
[5]潘志庚.分布式虚拟环境综述.软件学报,2000,11(4):461~467
[6]刘晓明,李勤,王晓哲.基于Virtools的虚拟漫游系统的设计与实现.大庆石油学院学报,2006,8,30(4):
[7]尚慧萍,王宗陶,刘会平.网络虚拟现实系统综述.飞行器测控学报,2006,02
[8]刘明昆.三维游戏设计师宝典-Virtools开发工具篇.四川:四川出版集团,2005.5.第1版
Virtools 篇4
随着油田开采难度的增大,钻井开发过程中的各种作业工艺越来越复杂,安全生产问题日益突出,急需开发钻井仿真系统对钻井工程技术人员和现场工作人员进行安全操作技术培训。钻井仿真系统包括硬件仿真控制台、模型计算和三维场景显示三个子系统,其中三维场景显示子系统能否逼真地再现钻井现场的实际场景,对整个培训的效果影响非常大。
目前,钻井仿真系统中使用的三维场景要么是利用3D MAX、Flash等工具开发,要么是利用OpenGL技术开发,这两种方式都存在一定的缺陷[1,2,3]。采用3D MAX、Flash等工具开发的三维场景,画面固定,不能随时根据硬件仿真平台的操作灵活的变化场景,如正常钻进接单根场景中钻进速度及转盘的旋转速度就不能独立控制;采用OpenGL技术能够制作出具有良好的真实性、交互性和灵活性的三维场景,但是掌握OpenGL并应用它开发相应的场景难度大、复杂且不易扩充。针对上述不足,提出一种3D MAX和Virtools技术相结合的钻井三维场景开发方法,即用3D MAX构建钻井设备的3D模型和3D场景,然后利用Virtools平台下的行为控制模块对3D模型进行动态交互控制。结果表明,该方法不仅克服了上述方法的不足,而且开发的三维场景能给人以身临其境的感觉,从而加深学员对现场操作的理解,提高培训的效率。
1 虚拟现实开发工具Virtools
Virtools是由法国全球交互三维开发解决方案公司VIRTOOLS所开发,其三维引擎已经成为微软XBox认可系统,其特点是方便易用,应用领域广。Virtools在3D互动展示方面功能较强,具有完善的组成:一个创作应用程序、一个动作引擎、一个渲染引擎、一个Web播放器、一个软件开发工具包SDK。
VirtoolsDev是Virtools软件的的开发环境,其4.0版本具有450多个行为交互模块(Building Blocks,简称BB)。Dev环境下,只需利用拖放的方式将BB赋予在适当的Object(对象)或是Character(虚拟角色)上,然后以流程图的方式决定BB的前后处理顺序,即可实现可视化的交互脚本设计,编辑成一个完整的交互式虚拟世界[4]。目前,Virtoots技术已经开始应用在模拟仿真、虚拟实验室、建筑设计以及3D游戏的开发等领域。
2 钻井三维场景的建立方法
Virtools平台下钻井三维场景的开发方法可以分为如图1所示的三个步骤,分别是模型的创建、模型的导入和模型的控制。
2.1 模型的创建
钻井设备三维模型是整个钻井场景开发设计的基础,模型建立的好坏直接影响到运行的效果和场景的逼真度。由于Virtools本身没有建模的功能,所以在建模阶段采用功能强大,建模方法丰富,而且能够与Virtools实现无缝接合的专业建模软件3D MAX[5]对钻井设备进行三维建模。钻井设备模型的构建主要采用几何建模技术,设备模型的轮廓和形状采用了点、直线、多边形图形、曲线、曲面方程以及图像等方法表示。针对钻井三维场景中不同对象分别采用精细建模、次精细建模和粗略建模方式;在整个建模过程中,将层次细节技术和纹理映射技术结合使用,降低场景实时渲染的复杂度。
钻井三维场景中涉及的钻井设备模型较多,主要包括井架,钻井平台,转盘,吊卡,卡瓦,方钻杆,方补芯,钻杆,水龙头,大钩,游车,吊环,液压钳等,由于篇幅关系,这里仅给出液压钳的三维模型,如图2所示。
2.2 模型的导入
在3D MAX下设计好三维模型后,利用Max2Virtools导出插件将3D模型保存为NMO格式的文件,然后在Virtools平台中导入所生成的NMO文件,三维模型即可显示在Virtools平台下[6,7]。为使3D MAX环境下开发的钻井设备三维模型能在Virtools平台下有机地组织在一起,形成一个逼真的钻井三维场景,需在Virtools平台视口中按照实际井场的布局对导入的3D模型的位置、方向和大小进行调整,同时还要添加必要的灯光、摄像机及背景贴图,让人有身临其境的感觉,效果如图3所示。
2.3 模型的运动控制
Virtools中三维(或二维)模型的控制是靠Virtools内置行为模块实现的[8]。这些行为模块有500多个,能够对三维或二维模型进行各种基本操作如大小变化、旋转、缩放、颜色变化、光线变化、三维贴图等,复杂操作如行走、转向、后退等。实现对三维世界编辑区中的模型的控制的方法具体为:选择DataResource中Animations类中的行为,用鼠标点击所要的动作行为并添加到3D Layout中的设备模型上,然后在Schematic相应的Script中编辑各个参数,从而实现对设备模型的运动控制,构建一个逼真的钻井三维场景。
3 钻井三维场景系统的实现
3.1 系统的功能设计及实现
钻井三维场景系统能在硬件仿真控制台的配合下,利用Virtools平台下的行为模块和消息控制机制,使方钻杆、大钩、游车、吊环、卡瓦、吊卡、钻杆和液压大钳等钻井设备模型在虚拟场景中协同运动,逼真的再现实际井场的正常钻进、接单根、起下钻、上提方钻杆、起下钻挺关井以及压井等20种钻井操作流程,实现井场环境的动态仿真。
限于篇幅关系,下面以正常钻进接单根训练项目为例,说明Virtools平台下钻井三维动态场景的实现过程。正常钻进接单根场景主要包括转盘旋转,钻进,起钻,上扣、卸扣等功能模块。
3.1.1 转盘旋转模块
负责控制转盘的旋转方向和旋转速度,实现步骤:(1)添加TestBB到转盘模块Script上,并编辑参数,TestBB的目的是判断旋转的方向,输入参数“转盘转动方向”值为0,表示转盘正转,值为1,表示转盘反转;(2)添加MultiplicateBB参数运算,并与输入参数“转盘转速”相连,BB的输出参数为转盘转速;(3)分别添加两个BezierProgressionBB、RotateBB、MultiplicateBB到Script,并编辑参数,组成“转盘正转”、“转盘反转”两个BehaviorGraph,BG的输入与Test输出相连,并将经过运算的转盘转速与BG的输入参数相连,控制转盘的旋转方向和速度。转盘旋转模块部分脚本如图4所示。
3.1.2 钻进模块
负责控制方钻杆旋转、下放以及大钩、游车、水龙头等设备模型的下放,实现步骤:(1)添加若干个TestBB和GetPositionBB到Script,共同组成“是否钻进”BehaviorGraph,根据钻进条件,决定“是否钻进”BG输出端的输出信号;(2)添加BezierProgressionBB、TranslateBB、MultiplicateBB到Script,并编辑参数,这三个BB组成“钻进”BehaviorGraph,其中TranslateBB的目标对象为方钻杆、游车、大钩等模型,实现控制其下放的目的;(3)添加“速度控制”BehaviorGraph,“速度控制”BG由若干个运算模块构成,如AddBB、GetYBB、DivisionBB,“刹车”、“辅助刹车”参数控制钻进速度,通过“速度控制”BehaviorGraph,计算得到下钻的速度,输入给“钻进”BG。钻进模块部分脚本如图5所示。
3.1.3 起钻模块
负责控制场景中方钻杆、大钩、游车以及水龙头等设备模型的上提及上提速度,实现步骤:(1)添加TestBB到Script,判断是否进行起钻操作;(2)添加“起钻速度设置”BehaviorGraph,用来接收“绞车”、“滚筒”参数值后,计算起钻速度;(3)添加BezierProgressionBB、TranslateBB、MultiplicateBB,控制方钻杆、游车等设备模型的上升运动。起钻模块部分脚本如图6所示。
3.1.4 上扣、卸扣模块
负责控制液压大钳的上扣、卸扣动作,模块由三个Script组成,分别为大钳初始Script、大钳上扣、卸扣Script和大钳复位Script。由于硬件仿真控制台定时发送大钳信息,为了屏蔽重复信息,防止大钳运动混乱,所有采用三个Script共同控制的方法。如果大钳接收上扣或者卸扣信息,执行大钳上扣、卸扣Script,通过WhileBB和IdentityBB共同作用,屏蔽大钳复位Script,同时不再接收相同信号,直到大钳复位。液压大钳上扣、卸扣部分脚本如图7所示。
3.2 实例演示
实现的钻井三维动态场景效果如图8、图9所示。在硬件仿真控制台的配合下,方钻杆、转盘、大钳、卡瓦等钻井设备模型可在三维场景中连续、有规律地运动,真实地模拟钻井现场在正常钻进时的各种操作过程,如转盘正转、反转及转速0~400r/min连续可调,方钻杆空转(只旋转不钻进)、正常钻进(边旋转边钻进)、上提方钻杆、钻进速度0~40m/h连续可调及上提速度0~5m/min连续可调,液压大钳上扣、卸扣,自动旋扣器上扣、卸扣,卡瓦的上卡、去卡,方钻杆移到小鼠洞接单根、对扣等场景
4 结束语
针对目前采用3D MAX、Flash、OpenGL等工具构建钻井三维场景子系统的不足,文中采用Virtools技术对钻井三维场景的开发方法进行了探索,提出了一种利用3D MAX和Virtools技术相结合构建三维场景的方法,并采用该方法开发了一套钻井三维场景子系统,实现井场环境的动态仿真,该方法简单方便,技术难度小,与硬件仿真控制台配合使用,能够实现三维场景的动态交互及灵活变化,使培训者真正获得现场操作的临场感、真实感。该方法也适合于其他三维场景的开发,具有一定的推广价值。
参考文献
[1]刘湘晨,林顺英,戴静君,等.动画仿真技术在海洋钻井平台改造工程中的应用.北京石油化工学院学报,2006;14(2):52—54
[2]王武礼,王延江,杨华,等.三维可视化技术在钻井仿真中的应用.工程图学学报,2006;28(6):47—51
[3]贾月乐,陈汶滨,刘祖云,等.基于OpenGL的钻井模拟器图形程序开发.西南石油大学学报,2007;29(2):147—149
[4]刘明昆.三维游戏设计师宝典.成都:四川电子音像出版社,2005
[5]甘登岱,李弘,黄瑞友,等.3ds max6教程.北京:电子工业出版社,2004
[6]张雪鹏,陈国华,戴莺莺,等.基于3D的虚拟运动仿真平台设计及Virtools功能实现.北京化工大学学报(自然科学版),2009;36(4):93—95
[7]冯玉芬.基于Virtools的虚拟小区漫游系统的设计与实现.计算机仿真,2009;26(6):285—287
Virtools 篇5
关键词:虚拟展示,汽车个性定制,virtools
目前, 个性化定制已成为汽车行业的发展趋势。在国外, 高端汽车定制服务已经比较普及, 国内汽车企业虽已经起步, 但尚未发展成熟。个性化定制是一种近年来才产生的、利用信息网络技术来进行产品个性化定制的全新生产销售模式。目前的定制方式主要通过填写订单参数来实现。这种方式主要靠效果图、文字注解和动画为主要展示手段, 信息表达与交互方式比较受局限, 客户不能立即看到定制结果。尽管许多企业发开了电子商务网站提供在线订购, 但多数网站只提供既定产品的二维效果图, 不能反映整体产品的全貌, 缺乏人机交互感。随着虚拟现实、网络、数据库等技术的发展, 使客户通过互联网络在虚拟环境下进行汽车的个性化定制将成为可能。
本课题目标是设计一套可虚拟展示汽车且提供个性化定制功能的系统, 能够用于汽车销售大厅的客户信息终端, 同时考虑网络电子商务平台的在线展示及定制的可能。
1 汽车虚拟展示系统
1.1 系统架构
本课题基于virtools汽车虚拟展示及个性化定制系统设计, 经过分析系统应具备两大功能:一是汽车的虚拟展示, 即创建一个仿真汽车模型, 向用户展示360°汽车全貌, 用户可转换视角观察汽车外观及内饰, 可观察不同色彩方案、不同轮毂及玻璃的视觉效果, 可打开车门、车灯、引擎盖、后备箱等;二是定制功能的交互, 即用户可在系统中选择搭配相应汽车部件, 可实时查看定制结果, 如用户可实时观察并更换车身颜色、车窗颜色、车顶盖、轮毂、尾翼等定制效果。为增强用户体验, 系统还设计加入音效和车模来增强虚拟展示的逼真效果。 (见图1)
1.2 系统界面与交互的设计
在设计该系统界面时, 依人机交互原理合理布局, 做到按功能划分, 遵循用户的操作经验有逻辑、有条理布置各功能按钮。在考虑交互次序和对应效果时, 使用低保真原型多次迭代以求最佳体验。界面的视觉效果依照高品质、精致的写实主义风格进行设计。
2 基于virtools的技术实现
汽车个性化定制最佳交互方式是基于虚拟现实技术进行实时交互三维展示, 而这需要通过将三维模型数据导入虚拟现实工具来实现。系统的实现技术为:基于3Dmax构建三维模型数据, 基于virtools来实现其虚拟展示及交互。具体流程为: (1) 用3DMAX构建3D模型, 保存为.nmo格式导入virtools中; (2) 在virtools中添加行为模块, 编辑脚本, 加入界面设计元素, 实现预定交互功能; (3) 系统的发布。
2.1 基于3Dmax构建三维模型数据
为顺利实现与virtools的数据对接, 在构建三维模型时需注意: (1) 使用英文命名数据文件; (2) 尽量减少面片, 避免导入virtools后出现破面或缺损; (3) 为了降低引擎运算量, 尽可能将物体群组, 简化virtools阶层架构, 使场景管理更容易; (4) 合理使用贴图避免不必要的细节建模。
模型构建之后为了效果逼真需要添加材质, 然而virtools支持的材质非常有限, 且常常丢失材质, 使用烘培技术可解决这一问题。贴图烘焙技术 (Render To Textures) 即把光照信息和高光等效果渲染成贴图, 而后把这个贴图再贴回场景的技术。最终模型数据保存为.nmo格式导入virtools中。
2.2 基于virtool实现虚拟交互展示
以下分虚拟交互展示及虚拟定制两部分进行简述。
(1) 虚拟交互展示模块的技术实现。
针对鼠标控制旋转、缩放查看功能, 需以汽车为目标建立一个摄像机, 对摄像机进行远、近、上、下的位置限定, 旋转和拉伸摄像机的镜头。具体可以用mouse camera orit模块程序代码来控制, 可实现以摄像机为视角的交互浏览。mouse waiter是用来判断鼠标动作的外部摄像机脚本。
为了实现开关引擎盖的体验, 添加了发动引擎和关车盖的音效, 使用的模块程序代码主要有:sequencer、wave player、bezier progression、multiplication和rotate等。
(2) 交互定制模块的技术实现。
为了给车身、玻璃等部件换色, 即更换材质颜色, 用到的模块程序代码主要是switch on parameter、parameter selector和set diffuse。车体和车窗可以采用相同的模块程序代码, 只需设置两个set diffuse, 然后将颜色变换分别赋给车身和玻璃的材质。
车顶、轮毂和尾翼等部件的更换, 采用的模块程序代码有switch on parameter、show和hide。以轮毂为例, 先将全部轮毂模型都导入场景中, 让其中一组可见, 其余全部隐藏, 并set ic锁定初始状态。
3 结论
汽车虚拟展示及定制系统的设计, 为用户提供一种新的、即时的、交互的汽车个性化定制方式。该系统既能够用于汽车销售大厅的客户信息终端, 也为汽车行业的网络电子商务平台的在线展示及定制提供可能。
系统优点为: (l) 系统使用虚拟现实技术, 改善了现有的定制系统缺乏交互性与直观性的状况; (2) 模块化模型技术可以使文件量大幅减小, 利用贴图烘焙又能使效果比较真实, 同时减少即时渲染给硬件设备的运算压力; (3) 系统对操作流程做相应优化, 其交互界面给人良好的用户体验。
参考文献
[1]邓胜利.基于用户体验的交互式信息服务[M].武汉:武汉大学出版社, 2008.
[2]黄艳群, 黎旭, 李荣丽.设计.人机界面[M].北京:北京理工大学出版社, 2007.
Virtools 篇6
我国对虚拟装配的研究起步于20世纪90年代末期, 发展速度很快并取得了不少研究成果。虚拟装配基于虚拟现实, 模拟产品的拆装过程, 可为各类复杂机电产品的设计和制造提供产品可装配性验证、装配工艺规划和分析、装配操作培训与指导、装配过程演示等完整解决方案。该方案为产品设计过程的装配校验、产品制造过程的装配工艺验证、装配操作培训提供虚拟装配仿真现场。对虚拟装配的研究可以分为以产品设计为中心的虚拟装配、以工艺规划为中心的虚拟装配和以虚拟原型为中心的虚拟装配。其中, 以工艺规划为中心的虚拟装配, 以操作仿真的高逼真度为特色, 主要体现在虚拟装配实施对象、操作过程以及所用的工装工具, 均与生产实际情况高度吻合。因而, 它可以生动直观地反映产品装配的真实过程, 使仿真结果具有高可信度。本文阐述了基于Virtools的减速器装配系统, 通过本系统, 操作人员能够在虚拟仿真平台上观看减速器的装配演示过程及说明, 并操作零件模型进行装配, 有效促进了操作人员对装配过程的直观认识和感知, 可广泛应用于产品设计和人员训练过程。
1 装配模型的创建
装配模型是虚拟装配的基础, 其记录和表达了产品的装配体装配过程, 是零件信息和零件关系信息的集合。随着减速机构的发展, 其结构形式越来越复杂。目前, 常用的装配模型有图结构关系模型、层次结构模型和混合模型[1]。结合层次结构模型, 可较好地体现模型结构的特点。本系统选择层次装配模型, 并采用UG软件, 创建了模型实体及装配信息。减速器通常包括传动装置, 如增速装置、调速装置以及包括柔性传动装置在内的各类复合传动装置、减速器附件、箱体等。产品的层次结构表达了装配成员间的层次关系, 本文采用装配树模型来进行描述, 其结构如图1所示。
UG是美国EDS公司基于NX体系的CAD/CAM/CAE软件。它为用户的产品设计及加工过程提供了数字化造型和验证手段。用户能够在集成的数字化环境中, 模拟、验证产品及其生产过程, 具有强大的建模功能。完成的减速器装配模型如图2所示。
2 虚拟装配系统的构建
从系统功能角度考虑, 本系统由操作说明、模型浏览、装配演示和虚拟装配4个部分构成。
2.1 虚拟装配系统的开发流程
本系统选择Virtools作为虚拟装配系统的开发平台, 其开发流程如图3所示。
Virtools是一款具有强大三维交互功能的虚拟现实软件, 提供了可视化图形开发界面, 集成了超过600多封装好的BuildingBlock模块 (简称BB模块) , 用VirtoolsDev可以利用拖放的方式, 将BuildingBlocks赋予在适当的对象或虚拟角色上, 以流程图的方式, 决定BB行为交互模块的前后处理顺序, 从而实现了可视化的交互脚本设计, 逐渐编辑成一个完整的交互式虚拟世界。由于Virtools本身没有建模功能, 其建立三维模型的功能需要借助外部三维建模软件来完成。本系统借助UG完成三维建模, 并通过UG导出.3dxml格式的文件导入Virtools中, 然后在Virtools提供的图形开发界面中, 添加行为模块并编辑脚本, 实现各种预定的功能[2,3]。最后, 将系统输出展示。
2.2 虚拟场景及装配演示
装配演示及模型浏览模块使操作人员可在虚拟的装配环境中观看减速器的零件结构及正确的装配及拆卸方式, 帮助操作人员了解减速器基本结构及基本装配过程和步骤。在装配演示机装配模拟模块中, 都需要导入三维场景。三维场景用来放置三维环境和三维对象, 是系统的主要部分[4]。首先, 把场景导入到Virtools中, 调整好其位置和大小, 以其作为虚拟装配的基本环境;接下来, 利用Text Display显示模拟的装配和拆卸过程, 在一个零件装配或拆卸完成后, Counter将执行下一个零部件的装配或拆卸过程, 直到完成所有的零部件装配或拆卸[5]。
2.3 虚拟装配模块的开发
在交互式虚拟装配环境中, 用户可在类似于真实的环境中对产品的零部件进行各类装配操作。虚拟装配模块的作用是让操作人员使用正确的工具练习减速器的装配和拆卸过程。零部件的干涉检查是虚拟装配模块的开发过程中的重点问题, 按对象属性可分为机械可行性分析和几何可行性分析。机械可行性分析是指起零件之间装配关系的建立和装配操作是否充足的判定, 如操作手或工具是否进入作业点等。几何可行性分析是指装配体中几何元件或零部件的干涉检查, 包括检查元件在装配体中的静态空间位置的静态几何干涉检查和检查零部件相互性在构成产品装配过程中在空间上的几何干涉性的动态几何干涉检查。在减速器的虚拟装配过程中, 需要进行静态干涉检验和动态干涉检验。目前, 已有的干涉检测算法可以分为六大类:空间分割法、分离平面法、对象分解法、层次包围盒法、距离算法和图像空间法。虚拟装配平台Virtools的干涉检测算法采用包围盒算法, 支持层次包围盒检测, 完全能够满足虚拟装配的需求[6,7]。本文采用Virtools的PhysicsPack BuildingBlock将实体物理化, 并利用PhysicsPack中的Test、GetNearestInGroup和BinarySwitch模块优化检测精度及相应时间的优化干涉检查算法进行干涉检查[8], 最后利用Text Display和Counter来展示虚拟装配的过程, 直到所有零部件装配完成, 实现虚拟装配模块的开发。
2.4 交互系统的设计
交互技术是指通过计算机输入、输出设备, 在人与计算机之间有效传递、交换信息, 是计算机系统的重要组成部分。它与认知学、人机工程学、心理学等学科领域有密切关系。本减速器虚拟装配系统以用户为中心, 使用单击选择控制及直接操纵方式, 利用三维、多通道接口, 追求在减速器虚拟装配过程中的形象化、直观化、自然化。本减速器虚拟装配系统中交互性表现在:用户能对减速器虚拟装配场景中的零件进行装配操作, 使用户能实时得到减速器仿真部件的反馈信息, 从而继续或修改接下来的操作。减速器元件交互控制是依靠Virtools内置BB实现的, 也可以使用VC++通过手动编写BB, 从而形成3D交互动画。
2.5 系统的整合
采用Virtools技术开发的作品支持网页格式或可执行文件格式。Web格式适用于远程教学, 但需要较好的网络支持, 且维护不变。由于本系统资源较大, 所以采用利用Virtools生成.exe的方式, 其好处是不需依靠网络或特定的播放软件, 在MS-DOS和MS-WINDOWS下即可运行。最后, 完成的虚拟装配系统, 如图4所示。
3 结语
虚拟装配技术不断发展, 已经成为有效分析产品设计合理性的重要手段。本文对虚拟装配的模型结构、虚拟装配的干涉检查技术进行研究, 并完成了减速器的虚拟装配系统。利用本系统可方便对减速器装配过程进行模拟与分析、对产品零部件装配序列进行验证和规划, 在工程机械设计验证及高校课程培训中可广泛应用。
参考文献
[1]李山山, 宋正河, 陈越洋, 等.农业机械底盘机械式变速箱虚拟装配[J].农业机械学报, 2012, (10) :318-320.
[2]米小珍, 肖海涛, 孙屹博.基于Virtools的动车组转向架虚拟装配研究[J].机械制造, 2013, (8) :62-64.
[3]褚识广, 张志利, 李向阳, 龙勇.基于Virtools的齿轮泵虚拟装配训练系统[J].机床与液压, 2011, (3) :73-74.
[4]方利伟, 基于Virtools的三维虚拟实验室研究与实现[J].实验技术与管理, 2010, (5) :83-86.
[5]李仲兴, 丁家翔, 周孔亢, 等.基于UG的车辆电磁制动器虚拟装配系统开发[J].农业机械学报, 2005, (12) :126-128.
[6]孔祥彪.基于Virtools的特种车辆虚拟实训系统的研究与开发[D].青岛:中国海洋大学, 2014:37-40.
[7]付同庆, 陈清奎, 李英杰, 等.基于Virtools的塔式起重机虚拟装配系统的研究[J].山东交通科技, 2012, (3) :61-63.
Virtools 篇7
Virtools是达索公司的整合三维互动技术软件, 可以将现有常用的档案格式整合在一起, 如3D的模型、2D图形或是音效等。它具备丰富的互动行为模块能进行实时3D环境虚拟实境编辑, 可以制作出许多不同用途的3D产品, 如网际网络、计算机游戏、多媒体、建筑设计、交互式电视、教育训练、仿真与产品展示等。它是一个开放的平台, 内置500多个行为交互模块 (Building Block简称BB) , 利用这些BB组合可以定义各种场景和物体的运动方式。将BB赋予漫游场景中的Object (对象) 和漫游角色Character (虚拟角色) , 以流程图 (在BB之间建立连接线) 的方式决定多个BB行为交互模块的逻辑结构和执行顺序 (顺序、分支、循环) , 运用这种交互脚本设计实现可视化系统开发。除此之外用户还可以运用内置的VSL语言定义自己的算法和物体运动的方式, 也还能运用Virtools SDK开发特定需要的功能BB。详细内容见参考文献[1]。
2 三维模型的创建和效果处理
2.1 厂房三维模型的创建
三维模型是水电站厂房可视化系统开发的基础, 三维模型包含水电站厂房和厂房内部的发电设备。由于Virtools是一套整合软件, 不是专业的建模和视觉效果处理软件, 需要借助常用的大型三维建模软件和高效的渲染引擎进行三维模型的创建和视觉效果的处理, 通过分析比较笔者选用Auto CAD进行水电站厂房土建部分三维模型的创建, 选用CATIA对厂房内部重要设备水轮发电机的三维模型进行创建, 场景中虚拟人物模型和人物骨骼动画应用3Ds Max来创建。模型的创建过程在本文不详细叙述, 关于水电站三维模型的创建及优化见参考文献[2]。
2.2 模型效果处理
利用3Ds max对厂房模型各个不同的部分赋予与其相对应的材质和贴图, 如土建部分的墙壁、柱子、衬砌, 需要调节出相应的混凝土材质赋予, 机械设备需要调节出相应的金属材质赋予, 最后调节厂房模型内部的灯光效果和渲染参数进行渲染。
由于漫游场景需要对显示窗口中可视的内容进行实时渲染, 而漫游场景往往都是动态的, 这就需要拥有较快的反应速度。高分辨率的单帧静态渲染不能满足与用户进行交互的需求, 由此笔者运用烘焙技术, 将各部分模型的纹理、明暗、色彩等信息烘焙到与其相对应的位图上, 再将位图根据各部分模型的网格和三维坐标贴回模型上。用静态的位图代替光效和环境效果, 提高渲染速率, 又在最大程度上保持了原始场景的信息, 使得在虚拟现实的场景中的交互操作成为可能。烘焙技术介绍见参考文献[3], 三维模型通过烘焙后导入Virtools之后的效果如图1所示。
3 可视化系统功能设置与实现
厂房交互漫游主要目地是模拟现实环境, 用较少的资源消耗以适当的形式表现最真实的厂房内部环境, 让操作人员和观摩人员不必进入厂房就能了解到厂房的内部结构, 让进入过厂房的工作人员在观摩后能更加熟悉和了解厂房的构造。交互漫游三个基本要素为漫游场景、漫游角色、漫游视角。漫游角色在限定的漫游场景中运动, 漫游视角与漫游人物绑定, 漫游场景被漫游的视角投影到电脑屏幕的窗口上。
结合可视化漫游系统的三要素和现实需求, 对厂房漫游系统的框架设计如图2所示。
3.1 漫游角色交互控制
漫游角色在场景中漫游首先要通过人机交互实现对漫游人物的控制, 在系统开发中设置W、S、A、D这四个键分别控制人物前进、后退、左转、右转, 并在前进、后退、站立的时候分别播放人物向前走、后退、站立等待的动画。为了实现交互首先要让程序通过内置模块Switch On Key获取用户发出的键盘指令, 在接收到不同的键盘指令之后会触发不同的输出端口, 接下来运用Translate模块在给予运动向量之后实现虚拟角色的移动, 当输入不同的命令所对应的运动向量也不同, 比如W对应向前走的向量S对应向后走的向量, 当用户按下W键时虚拟角色会向前运动当按下S键时虚拟角色就向后移动。虚拟角色的左右旋转的实现与此类似。这些功能实现部分脚本代码如图3所示。
3.2 第一人称视角和第三人称视角的设计
第一人称视角和第三人称视角都是相对于场景中的虚拟人物来说的, 第一人称视角相当于虚拟人物的眼睛看到的影像, 第三人称视角相当于跟随着虚拟人物的“他”看到的影像, 这些视角影像是通过获取数字模型信息进行投影变换, 将三维模型投影到计算机的二维显示屏上得到的, 投影变换原理与程序算法实现见参考文献[4]。在Virtools中是用两个摄像机来表现这两个视角的, 第一人称视角的摄像机放置在虚拟人物的头部并随着人物运动, 而第三人称摄像机则跟随在虚拟人物的周围并以虚拟人物为焦点。这两个摄像机所呈现出的影像就分别为第一人称视角和第三人称视角的影像, 如图4和图5所示。
要实现视角的设想功能, 首先用Set position和Set orientation BB模块将摄像机与虚拟角色绑定, 让相机跟随虚拟角色, 并保证摄像机镜头的方向与虚拟角色的正前方一致;然后再调用Mouse waiter与Get mouse displacement BB计算出鼠标的运动轨迹合成旋转所需的四元数传递给Rotate BB实现用鼠标操作旋转摄像机的方向, 模拟现实中的人扭头上下左右查看的效果。
3.3 场景漫游的实现
在上述工作完成之后就可进行场景漫游的设计。该系统的场景是根据官地地下厂房的设计图纸按照高程数据划分为五个部分, 发电机层、电气夹层、水轮机层、技术供水室、排水廊道层。在系统窗口中采用目录列表的方式选择漫游的场景, 用户在任意时刻选择任何场景, 系统都能自动计算出虚拟角色从当前位置到达选定场景的最短路径, 并发出指令让虚拟角色按照这个路径走到所选定的场景。这个模块的功能和程序的实现过程比较复杂本文不详细叙述, 部分脚本程序如图6所示。
3.4 全景视角的设计
正常模式下的漫游功能实现之后, 为了更进一步了解厂房的结构就需要突破摄像机第一人称和第三人称视野的局限, 做一个全景视角, 并让这个视角的摄像机能围绕厂房按照操作人员的意图进行旋转、缩放和平移全方位的查看厂房的结构, 并能细致查看感兴趣的细部结构。选择背向模型法线方向透视的显示模式, 这种显示模式给全景视角下的交互带来了非常好的效果, 使得厂房结构一目了然, 最大程度得传递出了厂房内部结构信息。系统运行中全景视角如图-7所示, 实现脚本程序如图-8所示。
4 作品发布
基于Virtools平台开发的三维仿真系统有三种发布方式。一种是直接将整个系统以CMO文件格式保存, 这种文件只有载入Virtools中才可以进行单机的虚拟漫游;第二种是将整个虚拟漫游以VMO文件格式保存, 同时也可以HTML文件格式保存, 这种情况下用户只需要安装播放插件Virtools Web player, 就可以进行单机的虚拟漫游, 同时可以发布到网络上, 方便客户端使用;第三种是利用开发的移动打包器, 将系统文件打包成EXE格式的可执行文件, 从而可以在任何电脑上独立运行。
5 结束语
本文详细介绍了利用Virtools开发水电站厂房可视化系统的途径和实现过程。用这种方法进行水电站可视化系统开发可以收到开发周期短、系统运行流畅、沉浸较感强、厂房内部结构关系表达清晰明了、作品发布方便快捷等效果。因此本文对于从事水电站可视化开发的人员具有一定的借鉴作用。
参考文献
[1]刘明昆.三维游戏设计师宝典——Virtools开发工具篇[M].成都:四川出版集团, 四川电子音像出版中心, 2005.
[2]钟登华, 周锐, 刘东海.大型水利水电工程建筑物三维可视化建模技术研究[J].计算机仿真, 2003, 20 (2) .
[3]刘婧婧.3DS Max模型与动画导入Virtools时遇到的问题以及解决方法[J].现代电影技术, 2010 (7) .