虚拟现实新技术)_第1页
虚拟现实新技术)_第2页
虚拟现实新技术)_第3页
虚拟现实新技术)_第4页
虚拟现实新技术)_第5页
已阅读5页,还剩160页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、虚拟现实新技术虚拟现实新技术目录1 1、虚拟现实新技术简介、虚拟现实新技术简介2 2、MultigenMultigen、PerformerPerformer、OSGOSG基础虚拟现实仿真软件介绍基础虚拟现实仿真软件介绍3 3、Vega premiereVega premiere、Delta3dDelta3d虚拟现实仿真工具介绍虚拟现实仿真工具介绍4 4、OSGOSG基础虚拟现实仿真软件功能及结构解析基础虚拟现实仿真软件功能及结构解析5 5、OSGOSG基础虚拟现实仿真软件编程技术讲解与实战基础虚拟现实仿真软件编程技术讲解与实战6 6、Delta3dDelta3d虚拟现实仿真工具编程技术讲解与实

2、战虚拟现实仿真工具编程技术讲解与实战7 7、在、在OSGOSG与与Delta3dDelta3d基础上研发的虚拟现实仿真平台基础上研发的虚拟现实仿真平台3DVRI3DVRI介绍介绍()()8 8、三维制作软件、三维制作软件3 3dsmaxdsmax与虚拟现实平台的接口与虚拟现实平台的接口 ()()9 9、其它虚拟现实软件介绍、其它虚拟现实软件介绍( (包括包括QUEST3DQUEST3D、VRTOOLSVRTOOLS、EONEON、等等、等等) () ()1010、虚拟现实技术在各个行业中的应用及本课程结束语、虚拟现实技术在各个行业中的应用及本课程结束语 (1(1课时课时) )1 1、虚拟现实与

3、仿真技术简介、虚拟现实与仿真技术简介 VR(VRITUAL REALITY)虚拟现实,虚拟现实又称“虚拟环境”,是一项较早出现的计算机技术,是用高科技的手段构造出来的一种人工环境,它具有模仿人的视觉、听觉、触觉等感知功能的能力,具有使人可以亲身体验沉浸在这种虚拟环境中并与之相互作用的能力,人进入到虚拟的场景中,不仅有逼真的感受,而且能在其中进行各种活动如漫游用户可以在虚拟场景中行走,可以触摸物体,可以打开或关上虚拟的门,在虚拟的场景中您可以看到鸟在天上飞,汽车在公路上跑,也可以飞行的模式在高空进行俯视,这些都是模拟实际环境的各种情况,所以虚拟现实就是采用计算机等高科技技术,模拟真实的生活环境,

4、通过人机交互,使人产生一种身临其境的感觉。较早出现的虚拟现实软件有(VRML、X3D、CULT3D、VIRTOOLS、SHOCKWAVE3D、MULTIGEN等等)。2 2、 MultigenMultigen、PerformerPerformer、OSGOSG基础虚基础虚拟现实仿真软件介绍拟现实仿真软件介绍 三维仿真软件经过几十年的发展后,经历了OpenGVS,Vtree,SGI performer,Multigen等等多代软件的发展,目前已进化到先进基础仿真软件Openscenegraph(以下简称OSG)的时代,据世界权威的现代仿真网站()在2005年34月份的

5、调查统计,OSG在世界仿真软件市场的占有率已超过51%,附调查统计饼图(图零)。与老一代的基础仿真软件Multigen之类相比OSG具有的先进特性列表列举如下:1)产品的内核采用标准的场景图结构,通过对各类遍历场景图的算法进行优化,具备了最高效率的场景图结构与访问方法,通过对并行功能的加强,使得多个CPU可以对同一场景图进行硬件支持的高效运算。 2)直接从内核开始支持最新发布的OpenGL2.0版本的功能,目前极大多数仿真软件仍然停留在Opengl1.5或者更早期的版本的基础上,已经不能满足日益提高的仿真市场的需求。3)内置了对已经成为世界标准的GLSL的支持,使得仿真效果的真实性大为提高,老

6、式的仿真软件由于开发年代久远限于当时的硬件条件,在效果的视觉真实性方面一直存在让人感觉很不舒服的效果真实性问题,而仿真软件的一大目标就是要让人们能得到与真实接近的计算机仿真结果,不真实的仿真结果与这一目标是背道而驰的。4)内置块状地形分割与降解的高速算法,能处理以地球为规模的大地形仿真工程。5)直接与显示硬件相关联的二进制文件格式,可以快速的装入大量的数据到显示内存中。6)能直接处理大量模型数据的场景编辑器,老式的仿真软件受限于研发时的硬件条件,通常以少量的面片作为仿真场景编辑器的处理单位,现在随着显示硬件的飞速发展,仿真场景能处理的模型的复杂度与数据量都大幅度增长,老式仿真软件的模型与数据处

7、理能力不再与最新的仿真硬件相匹配,从而面临淘汰的命运。8)可以快速的提高仿真场景的制作效率与所得到结果的真实性,许多老式的仿真软件自带具备建模能力的场景编辑器,但由于这类场景编辑器不是主流的建模的软件,结果随着岁月的流逝当时确实非常领先的工具,经过N年后已不再先进,反而变成一个提高仿真模型与场景生产效率的阻碍因素,OSG通过专为当今最为先进的几大三维建模及动画软件3DSMAX、MAYA等等编写插件的方式可以直接支持与读入这些软件的工作结果,无论在模型的生产效率与场景的真实性方面都有一个质的飞跃。9)通过软件提供的外围数据库接口,可以非常方便的将仿真场景与外围的数据库中的内容进行动态挂接,甚至只

8、需写上几句Visual Basic语句就可以将场景中的物体与数据库挂接起来,而老式的仿真软件通常提供C+的数据库接口,这样将提高仿真软件使用者的技能要求,会将一大批懂专业但编程能力不是很强的很有价值的专业人士排除在仿真领域之外。10)OSG本身就具备了许多其他仿真软件目前并不具备的先进特性限于篇幅这儿不再逐一介绍,详细可以查看OSG官方网站的信息 。3 3、Vega premiereVega premiere、Delta3dDelta3d虚拟现实仿真工虚拟现实仿真工具介绍具介绍 Delta3D是一款由美国海军研究学院(Naval Postgraduate School)开发的全功能游戏与仿真引

9、擎,得到美国军方巨大的支持与丰厚的投资。该引擎应用领域极为广泛,如开发在培训、教育、娱乐行业和科学计算可视化领域等方面建模与仿真的软件。 Delta3D可以用在游戏与模拟仿真或其他图象处理软件上,最新版本Delta3D 1.1.0于2005年11月12日发布,修改了Delta3D 1.0.0版的许多错误,同时增加了许多新特性。它的标准化设计把一些知名开源软件和引擎如 Open Scene Graph(OSG), Open Dynamics Engine (ODE), Character Animation Library (CAL3D), 还有 OpenAL融为一体。Delta3D通过对这些底

10、层模块进行隐藏封装,整合在一起从而形成了一个使用更加方便的高级API 函数库,使得开发者在必要的时候能够使用底层函数进行二次开发。Delta3D在软件系列中,处于中间层(Middle layer)的位置上。 当前,Delta3D完全可以在Windows与Linux操作系统上使用Microsoft Visual Studio .NET (7.1)开发与测试的(其中Linux Fedora Core 4 使用gcc 4.0.0),所有底层内核良好实现多平台支持,只需对源代码稍加修改(只要是Win32 和 Linux系统 无需改动直接可以运行),就可以快速搭建适应任何平台的应用程序。 Delta3D

11、使用OSG 和OpenGL渲染而且可以导入众多完整的格式,如(.flt, .3ds, .obj, 等)。Delta3DDelta3D的主要特性:的主要特性: Delta3D主要目标是提供一套简单可行的API函数库,构成搭建任何可视化软件的基本要素。它不但提供了底层功能模块,而且提供了仿真、训练、游戏编辑器(STAGE),BSP 编译器,粒子编辑器,单机版模型浏览工具,以及内置支持美国军方标准的分布式仿真环境HLA通讯及仿真标准等多种实用工具。而且Delta3D提供了一套与引擎高度集成的庞大的仿真模块体系,包含用于系统初始化的基类模块(ABC),用于设置动态角色和道具的动态角色层(DAL),用于

12、直接方法连接的信号/跟踪支持,用于控制角色的游戏管理器(GM),用于读取、渲染、产生过程化地形的插件和用于角色通信的高级消息处理器,地形数据也采用美国军用的经纬度标准,可以直接根据卫星遥测图像自动生成地形,并能根据卫星遥测图像上的色彩标准用LCC算法自动产生出各种植被并且正确的分布到地形模型上,Delta3D的地景模块采用动态装载的算法,可以支持以一个星球为单位的超大型地形数据容量,在军方需要的高精度地形仿真领域具有很高的实用价值。 更重要的是,Delta3D是一个开放源码的引擎,研发开始于2002年4月,荟萃现有最先进的系列开源软件(Open Source projects),并经过全世界所

13、有Delta3D关注者的增补与完善,相对于购买一款价格很高又不开放源代码的引擎具有很大的优势,使用Delta3d你可以任意修改代码并且定制所有你想要的功能,这是不开放源代码的商业引擎无法做到的。Delta3DDelta3D的内部功能模块构成和应用程序的内部功能模块构成和应用程序 Delta3D的内部功能模块主要含有:dtCore:包含通用基本功能。dtChar:包含动画融合(Animation blending),角色步长与场景协调(Avatar feet correspond to world positioning)等功能。dtABC:高级程序基本类模块,对于某些应用程序的开发很有用处的。

14、dtHLA:HLA网络模块的界面,实现坐标系统转换等功能。dtTerrain:提供执行地形载入,渲染,装饰的插件体系框架。dtDAL:动态角色层模块提供一个生成、访问、控制角色的底层支持。dtGUI:包含Crazy Eddies GUI的简捷界面。dtGame:提供一个建立复杂的游戏,训练软件的体系。dtUtil:贯穿整个Delta3D的基本应用组件。dtBSP:将载入文件自动优化为BSP格式的组件。dtAudio:提供高级的音频处理函数库。dtNet:提供多用户网络操作的高级API函数库。Delta3D应用软件提供了多种实用工具:包含一个仿真、训练、游戏编器STAGE是一个完整的可视化3D地

15、图编辑器,除此之外还有:1、可视化粒子效果编辑器:为粒子特效编辑提供一个使用与演示方便的操作界面。2、3D模型浏览器:是一个使用方便,独立运行的3D模型浏览工具。3、BSP编译器:是一个载入、编译和保存普通对象为BSP格式的工具。4、HLA阅读器:是一个对HLA网络所有实体对象进行3D描述的工具。 Delta3DDelta3D研发团队:研发团队: 如上图所示,Delta3D研发团队有三个项目组完成了Delta3D的内核(Core),编辑器(“STAGE”)以及应用系统(Testing)的研发。 Delta3D研发过程中,得到美国军方大量的资金支持,同时拥有人数众多的高素质研发团队,因此研发进展

16、大大加快,最后研发完毕时间比预计的进程至少提前半年有余。在2005年12月2日,Delta3D研发团队参加了2005年美国奥兰多仿真会议,大会一致认为Delta3D在仿真领域取得了最大的成就。“尽管没有像其他与会者有更大的展台,仅凭我们口头宣传与介绍,依然吸引无数人的关注。NETC, BMH, and DARWARS制作的Delta3D工程演示也吸引了一群又一群的人们。” Delta3D 1.1.0的CD很快就给拜访的人群发光了,最后会议闭幕时只留下两张CD作为珍品收藏。下面是部分会场图片。Delta3D最新应用推广大事:最近,纽约北港(Northport)的 AVI (Applied Vis

17、ions, Inc.) 公司获赠了美国商业创新研究计划(SBIR)提供的第二阶段高额基金,用以使用Delta3D来研发实战导弹武器控制系统TTWCS的操作及训练辅助系统。 AVI公司是第一家被授予使用Delta3D 进行软件开发的公司(不算Delta3D开发团队的合作公司BMH),AVI有限公司已经获赠一笔SBIR高额基金,这是为开发一套武器操作人员用于完成课程训练任务的战斧导弹武器操作仿真系统TTWCS而准备的。这表明Delta3D应用开发已经进入国防仿真软件市场的第一步,标志着Delta3D的发展进入一个重要的里程碑。该仿真软件的快速发展将取代Multigen在仿真界的地位。 实战武器控制

18、系统TTWCS使得海军战舰的武器操作人员能够利用他们掌握的技能操作和控制战斧导弹。在以前,战斧导弹是执行具体任务时发射的;现在战斧导弹能够发射出去并在指定的空间区域巡航,用导弹携带相机搜索目标,或者等待地面控制人员选定攻击目标。然而这项改进使得船上的导弹发射人员在决定哪一支导弹什么时候攻击哪一个目标的时候比以往更难于取舍。在该项目的第一阶段,AVI公司是三个SBIR基金受奖者之一,他们评估了几种引擎诸如UNREAL引擎和Torque仿真引擎后选用了微软飞行模拟器建立系统原型,最近AVI公司被授予继续进行第二阶段的系统研发,由于Delta3D更强大的物理学模拟功能和开源许可的便利,他们决定放弃微

19、软飞行模拟器,取而代之的是采用Delta3D作为第二阶段的系统底层引擎。从论文战斧导弹操作计划与训练中仿真技术的应用(作者:Ken Doris ,Mark Larkin ,AVI公司;Dave Silvia,美国海军水下作战研究中心;Perry McDowell,Delta3D研发团队)可以找到该系统更多的信息,该论文已发表在月刊Fall Simulation Interoperability Workshop第九期上。Delta3DDelta3D最新进展:最新进展: (1)、Version 1.0 新特性:3D 声音顶级游戏引擎角色动画天气特效HLA & 网络游戏运动处理模块(Ope

20、nGL)渲染界面高速物体动力学Python 绑定地形渲染粒子效果虚拟输入设备(2)、仿真、训练、游戏编辑器(STAGE)(3)、支持窗口拆分显示编辑,立体声表现(4)、集成地貌仿真软件GENETICS程序生成植物,自动建立/测试植物生成脚本;测试发布GENETICS更方便(5)、全面支持Fedora Core 4,跨平台构造支持基于基于Delta3DDelta3D已经开发和完成的部分工程项目:已经开发和完成的部分工程项目: (1)、the Nemesis Game-Based-Learning Project Applied Research Associates, Inc. (ARA)基于D

21、elta3D开发了一个游戏软件Nemesis原型,游戏目标是训练操作者获得善于决策和心理活动技能技巧,得到美国军方Humanitarian Demining Program的支持。(2)、SurfTacs水上作战指挥训练的仿真游戏项目 SurfTacs v1.0 是一个经过重新设计的用于水上战术训练的仿真游戏,可以用来作为一个水上战术指挥专业学员获取作战资格的额外辅助工具。SurfTacs可以在装有中等显卡的Windows平台上运行。 在虚拟战场领域中,至关重要的地形战术和地形状况了解方面,往往由于虚拟环境缺乏必要的植被而使得官兵训练没有发挥应得的作用。没有草木的遮掩,目标很容易被高空的飞机发

22、现。用虚拟现实软件GENETICS实时合成草木植被改变了这一切,因此在虚拟战场中新兵的训练效果得到提高。得到美国军方Humanitarian Demining Program的大力支持。 GENETICS 用于实时处理高度数据点生成地图高度图, 坡面图(标有视线角) 以及相对高程地图,我们通过处理指定区域地形的土地覆盖物分类(LCC)影像数据来判定它们的最优相关系数。(4)、Surface Tactics Visualization: Plane Guard 该演示程序说明基于开源仿真引擎Delta3D开发水上战术仿真的巨大潜力。这是美国军方Humanitarian Demining Prog

23、ram的重要项目。CAVE Automatic Virtual EnvironmentDelta3D用于开发一个这样的处理程序,美国联邦航空局用来判定:通过直升机领航员引导并行互不干扰的航线是否使得GPS系统有助于领空利用的效率及安全性的提高。通过长期实践与运用,收到良好的效果,证明为行之有效的。(6)、National Geospatial - Intelligence Agency TerrainNational Geospatial-Intelligence Agency Terrian Platform(NGIATP)能够开发虚拟仿真程序来调用高程网格图,卫星影像和公路线路图等地理空间

24、数据,使用高级的NGIATP技术使得程序生成地形细节的数据进一步增强。这将创建更多的引人入胜的沉浸式环境。4 4、OSGOSG基础虚拟现实仿真软件功能及结构基础虚拟现实仿真软件功能及结构解析解析功能及特性功能及特性与老一代的基础仿真软件Multigen之类相比3DVR支撑平台继承了与发展了各类OSG具有的先进特性列表列举如下:1)产品的内核采用标准的场景图结构,通过对各类遍历场景图的算法进行优化,具备了最高效率的场景图结构与访问方法,通过对并行功能的加强,使得多个CPU可以对同一场景图进行硬件支持的高效运算。2)直接从内核开始支持最新发布的OpenGL2.0版本的功能,目前极大多数仿真软件仍然

25、停留在Opengl1.5或者更早期的版本的基础上,已经不能满足日益提高的仿真市场的需求。3)内置了对已经成为世界标准的GLSL的支持,使得仿真效果的真实性大为提高,老式的仿真软件由于开发年代久远限于当时的硬件条件,在效果的视觉真实性方面一直存在让人感觉很不舒服的效果真实性问题,而仿真软件的一大目标就是要让人们能得到与真实接近的计算机仿真结果,不真实的仿真结果与这一目标是背道而驰的。4)内置块状地形分割与降解的高速算法,能处理以地球为规模的大地形仿真工程。5)直接与显示硬件相关联的二进制文件格式,可以快速的装入大量的数据到显示内存中。6)能直接处理大量模型数据的场景编辑器,老式的仿真软件受限于研

26、发时的硬件条件,通常以少量的面片作为仿真场景编辑器的处理单位,现在随着显示硬件的飞速发展,仿真场景能处理的模型的复杂度与数据量都大幅度增长,老式仿真软件的模型与数据处理能力不再与最新的仿真硬件相匹配,从而面临淘汰的命运。10)OSG本身就具备了许多其他仿真软件目前并不具备的先进特性限于篇幅这儿不再逐一介绍,详细可以查看OSG官方网站的信息 。结构图结构图osg CoreosgDBosgFXosgGAosgParticleosgProducerosgSimosgTerrainosgTextosgIntrospectionosgUtilOSGOsg Core:osg内核osgDB:osg读写数据模

27、块osgUtil:osg工具模块osgSim:osg模拟模块osgText: osg字体模块osgTerrain: osg地型模块osgIntrospection: osg内部异常处理模块osgProducer: osg与producer的接口模块osgGA: osg界面相关的模块OsgParticle: osg粒子系统模块5 5、OSGOSG基础虚拟现实仿真软件编程技术讲基础虚拟现实仿真软件编程技术讲解与实战解与实战最简单的最简单的OSGOSG程序程序 目的:通过本教程,学会OSG工程属性的设置,加载并查看三维模型,熟悉Viewer类提供的用户操作。(1)、建立和设置工程、建立和设置工程 启

28、动Microsoft Visual Studio .NET 2003,建立一个Win32控制台项目,在应用程序设置选项卡里,选择空项目,点击完成。为了在工程选项里出现C/C+的选项,先给工程添加一个空的C+源文件。 OSG运行需要多线程DLL的运行时库和RTTI,所以,在建立每个OSG工程后,第一件事就是更改工程设置。 打开项目属性,在C/C+选项卡里,点击代码生成页,更改运行时库,对于Debug版,用多线程调试 DLL (/Mdd),对于Release版,用多线程 DLL (/MD)。 设置C/C+选项卡里的语言页的启用运行时类型信息为:是(/GR)。 OSG程序需要链接对应的库文件,打开链

29、接器选项卡里的输入页,设置附加依赖项,对于Debug版,是OpenThreadsWin32d.lib Producerd.lib osgd.lib osgDBd.lib osgFXd.lib osgGAd.lib osgParticled.lib osgProducerd.lib osgSimd.lib osgTerraind.lib osgTextd.lib osgUtild.lib,对于Release版,设置这些lib文件不带“d”的版本。 这样,工程属性就设置好了。2 2、编辑程序、编辑程序在刚才建立的空文件里输入如下内容:#include #include intmain(int, c

30、har*)osgProducer:Viewer viewer;viewer.setUpViewer();osg:Node* node = osgDB:readNodeFile(cessna.osg);viewer.setSceneData(node);viewer.realize();while (!viewer.done()viewer.sync();viewer.update();viewer.frame();viewer.sync();return 0; 编译运行后,就能看到一个飞机的模型。 NOTE:如果看不到模型,检查OSG1.0是否正确安装,即OSG_FILE_PATH是否设置正确

31、。 这个程序的核心是,osgProducer命名空间的Viewer类实例,这个类负责管理窗口的创建,控制投影矩阵,控制OpenGL的渲染,实现程序的主循环。它还具有控制场景渲染状态,查看帧速,抓图等功能。OsgDB命名空间的readNodeFile函数负责从文件里读入三维模型及其纹理等数据,它返回读入的节点,可以加到场景图中。主循环分三步,同步,更新和绘制,当用户按下ESC键时,osgProducer:Viewer:done()返回true,主循环结束。(3)(3)、程序的操作、程序的操作鼠标:摄像机操作器 Trackball Flight Drive Terrain 左键 旋转视图 加速 加

32、速 旋转视图 中键 平移视图 停止 停止 平移视图 右键 缩放 减速/倒退 减速/倒退 缩放 键盘:Escape退出程序Space重置摄像机位置1选择“轨迹球(Trackball)”摄像机操作器2选择“飞行(Flight)”摄像机操作器3选择“驾驶(Drive)”摄像机操作器4选择“地形(Terrain)”摄像机操作器5选择“不明飞行物(UFO)”摄像机操作器b开关背面剔除f全屏/窗口切换h显示帮助H在摄像机控制器是 UFO 时,重置到起始位置l开关灯光o将当前场景的场景图保存到文件saved_model.osgO抓图,保存为文件saved_image*.rgb 总结:总结:OSG的Viewe

33、r类本身提供了很多功能,所以,只需要简单的几句代码,就能有一个不错的程序,这些功能如果用OpenGL实现,需要很多的时间。当不再为这些基础功能操心的时候,我们就能把精力放在我们要实现的功能上面。s显示帧速等信息t开关纹理v开关垂直同步w切换多边形、线、点显示模式z开始记录摄像机路径Z如果正在记录摄像机路径,保存路径到文件saved_animation.path,然后开始播放这个路径文件节点的更新回调和位置姿态控制节点的更新回调和位置姿态控制 目的:目的:通过本教程,学会将自定义节点添加入场景图,并控制节点在每一帧的运动。(1)、添加自定义节点 OSG提供的节点类(Node及其子类)实现了通用的

34、场景图结构,但是不可能提供每一个用户需要的类,比如我要做一个飞行模拟程序,OSG不会给我提供一个Aircraft类。所以要实现自己的应用程序逻辑,就要自定义自己的类,这个类以OSG提供的类为基类,并能添加到场景图中,实现自己的特定功能。 一个飞机的运动,最简单情况是我们要考虑飞机的位置和姿态,而要想在OSG里控制一个模型的位置、旋转或缩放,需要在这个节点上面添加一个Transform的子类,这要用到矩阵运算,矩阵运算非常复杂,对于控制位置姿态这个经常用到的功能,OSG提供了类PositionAttitudeTransform,通过它可以方便控制位置姿态而不用理会复杂的矩阵运算。 飞机需要导入一

35、个模型,在场景图中,我们就把这个模型加为这个类实例的儿子,这样,这个类可以这样定义,飞机类CCessna:class CCessna :public osg:PositionAttitudeTransformpublic:CCessna(void);CCessna(void);private:osg:ref_ptr _Model;成员变量_Model是保存模型的指针。这样,在构造函数里,将_Model加为儿子:CCessna:CCessna(void)_Model = osgDB:readNodeFile(cessna.osg);this-addChild(_Model.get();继续使用第

36、一个教程的源码,将这一句:osg:Node* node = osgDB:readNodeFile(cessna.osg);viewer.setSceneData(node);改为:CCessna* cessna = new Ccessna();viewer.setSceneData(cessna);就能看到效果了。(2)、给节点添加更新回调并控制节点运动为了控制飞机的运动,我们应该在每一帧根据速度等条件计算飞机的位置,并更新飞机节点,但是我们的更新代码应该加在哪里呢?在程序的主循环里,可以看到这句:viewer.update();在这个方法里,OSG会遍历场景图,调用每个节点的更新回调,我们只

37、要把自己代码放在更新回调里,就能保证每帧代码得到运行,也就能实现我们要求的功能了。在OSG中,每个回调都是类NodeCallback的子类,我们只需要继承它,就能实现功能了。为了保证飞机更新的时候能得到需要的足够信息,又不让飞机的内部实现暴露于外,我们让更新回调只进行一个转手的操作,而实际的更新函数放在CCessna类里。更新回调代码如下:class CCessnaUpdateCallback :public osg:NodeCallbackvirtual void operator()(osg:Node* node, osg:NodeVisitor* nv)CCessna* cessna =

38、 dynamic_cast(node);if(cessna != NULL)cessna-update(); ;这个类覆盖了基类对操作符()的重载,所以说它实际上是一个函数对象,因为这个重载是通用的,在函数里我们要先动态转换成 CCessna 类的指针,然后调用她的更新成员函数。为了让这个回调起作用,不要忘了在 CCessna 类的构造函数里设置更新回调:this-setUpdateCallback(new CCessnaUpdateCallback();下面设计让飞机绕圈飞行,同时让飞机横滚,代码都是写计算操作,需要注意的是PositionAttitudeTransform类提供的设置姿态的

39、方法不是使用通常习惯的HPR为参数,而是一个四元数,关于四元数数学请参考相关书籍,但是HPR向四元数的转换还是很直接的,这就是我们的setRotation方法:void CCessna:setRotation(osg:Vec3& rot)osg:Quat q(rot.x(), osg:Vec3(1.0f, 0.0f, 0.0f),rot.y(), osg:Vec3(0.0f, 1.0f, 0.0f),rot.z(), osg:Vec3(0.0f, 0.0f, 1.0f);this-setAttitude(q);在update方法里,通过设置位置和旋转来控制飞机运动,具体请查看代码。(3

40、)、完善程序由于Viewer类在程序开始会根据模型的包围盒调整视点初始位置,这样能保证程序开始能看到模型,但是因为我们的模型是运动的,运行一点之后飞机会飞出视线,所以我们给飞机提供一个场地,这个场地就是一个正方体,代码如下:osg:Group* root = new osg:Group();osg:Geode* geode = new osg:Geode();geode-addDrawable(new osg:ShapeDrawable(new osg:Box(osg:Vec3(0.0f, 0.0f, -20.0f), 200.0f, 200.0f, 2.0f);root-addChild(g

41、eode);CCessna* cessna = new CCessna();root-addChild(cessna);viewer.setSceneData(root);这里用到了Geode 类和Drawable类的子类ShapeDrawable, Geode 是场景图的叶子节点,所有的几何体都包含在 Geode 里,而一个 Geode 里可以有多个Drawable的子类,我们看到的图像真正是Drawable画的,这个后面在讨论。总结:总结:要想实现自己的功能,加入自己的代码,就要定义自己的节点类,由于OSG使用了组合设计模式,我们自己定义的类在OSG看来和它自己的类是一样的,OSG的这种场

42、景图结构,基本上是业界的一种标准,很多程序都实现了类似的结构。6 6、Delta3dDelta3d虚拟现实仿真工具编程技术讲虚拟现实仿真工具编程技术讲解与实战解与实战最简单的Delta3D程序(1)、建立和设置工程启动Microsoft Visual Studio .NET 2003,建立一个Win32控制台项目,在应用程序设置选项卡里,选择空项目,点击完成。为了在工程选项里出现C/C+的选项,先给工程添加一个空的C+源文件。 OSG运行需要多线程DLL的运行时库和RTTI,所以,在建立每个OSG工程后,第一件事就是更改工程设置。 打开项目属性,在C/C+选项卡里,点击代码生成页,更改运行时库

43、,对于Debug版,用多线程调试 DLL (/Mdd),对于Release版,用多线程 DLL (/MD)。 设置C/C+选项卡里的语言页的启用运行时类型信息为:是(/GR)。 OSG程序需要链接对应的库文件,打开链接器选项卡里的输入页,设置附加依赖项,对于Debug版,是dtABCd.lib dtCored.lib dtUtild.lib osgd.lib osgDBd.lib 对于Release版,设置这些lib文件不带“d”的版本。 这样,工程属性就设置好了。(2)、编辑程序#include #include #include #include #include int main() d

44、tCore:SetDataFilePathList( dtCore:GetDeltaRootPath() + /examples/testApp/; + dtCore:GetDeltaDataPathList() ); dtCore:RefPtr app = new dtABC:Application( config.xml ); /加载山体 dtCore:RefPtr terrain = new dtCore:Object( Terrain ); terrain-LoadFile( models/terrain_simple.ive ); app-AddDrawable( terrain.g

45、et() ); /加载一个物体 dtCore:RefPtr brdm = new dtCore:Object( BRDM ); brdm-LoadFile( models/brdm.ive );app-AddDrawable( brdm.get() ); osg:Vec3 brdmPosition( 0.0f, 0.0f, 3.5f ); osg:Vec3 brdmRotation( 90.0f, 0.0f, 0.0f ); dtCore:Transform trans; trans.SetTranslation( brdmPosition ); trans.SetRotation( brdm

46、Rotation ); brdm-SetTransform( &trans ); /调节相机位置 dtCore:Transform camPos; osg:Vec3 camXYZ( 0.f, -50.f, 20.f ); osg:Vec3 lookAtXYZ ( brdmPosition ); osg:Vec3 upVec ( 0.f, 0.f, 1.f ); camPos.SetLookAt( camXYZ, lookAtXYZ, upVec ); app-GetCamera()-SetTransform( &camPos ); app-Config(); app-Run()

47、; return 0;编译后运行程序就可以看到以下画面:7 7、在、在OSGOSG与与Delta3dDelta3d基础上研发的虚拟现实基础上研发的虚拟现实仿真平台仿真平台3DVRI3DVRI介绍介绍1.1. 3DVRI 3DVRI虚拟现实仿真系统是一款功能强大的虚拟现实仿真引擎,具有虚拟现实仿真系统是一款功能强大的虚拟现实仿真引擎,具有广泛的应用领域广泛的应用领域:教育领域的辅助教学,如教学课件的制作,使用虚拟仿真的形式可以生动形象的向学生展示一些难以理解的基本原理的讲解,采用互动的形式,可以加快学生的理解和记忆,同时也方便了老师的讲解。医学行业:VR在医学方面的应用具有十分重要的现实意义。在

48、虚拟环境中,可以建立虚拟的人体模型,借助于跟踪球、HMD、感觉手套,学生可以很容易了解人体内部各器官结构,这比现有的采用教科书的方式要有效得多。建筑领域的效果演示、辅助设计,在通常的情况是的使用效果图或CAD图的方法,但是效果图或CAD图不直观,没有什么立体性,而且介绍的也不直观,一般没有专业知识的人很难看懂,如果使用虚拟仿真的形式,不紧可以让客户一目了然,而且采用三维的效果,客户容易理解,只要制作时严格按照实际的尺寸,这实际就是实际建筑物的缩影版,同时在场景中具有互动性,这样客户只要点击相关物体即可显示此物体的一些基本属性。使用户具有身临其境的感觉。工业领域的可视化辅助设计与可视化辅助制造,

49、通常的都是采用机械设计图的方式,但如果采用可视化的形式来设计,这样会大大的减小设计上的复杂性,而且也会减小出错率,能够做到所见即所得。3DVRI软件介绍软件介绍军事与航天工业:模拟与练一直是军事与航天工业中的一个重要课题,这为VR提供了广阔的应用前景。美国国防部高级研究计划局DARPA自80年代起一直致力于研究称为SIMNET的虚拟战场系统,以提供坦克协同训1练,该系统可联结200多台模拟器。另外利用VR技术,可模拟零重力环境,以代替现在非标准的水下训练宇航员的方法。管理工程:VR在管理工程方面也显示出了无与伦比的优越性。如设计一新型建筑物时,可以在建筑物动工之前用VR技术显示一下;当财政发生

50、危机时,可以帮助分析大量的股票、债券等方面的数据以寻找对策等等。艺术:作为传输显示信息的媒体,VR在未来艺术领域方面所具有的潜在应用能力也不可低估。VR所具有的临场参与感与交互能力可以将静态的艺术(如油画、雕刻等)转化为动态的,可以使观赏者更好地欣赏作者的思想艺术。另外,VR提高了艺术表现能力,如一个虚拟的音乐家可以演奏各种各样的乐器,手足不便的人或远在外地的人可以在他生活的居室中去虚拟的音乐厅欣赏音乐会等等。科学计算等领域的建模与仿真软件,如卫星轨道的计算,通过仿真的形式可以实时的计算并显示卫星所在的位置。火星3DVRI虚拟仿真系统内核部分采用纯C+语言编写,保证了软件具有良好的可移植性,只

51、要稍加修改就可以在微软Windows操作系统,苹果OS/X操作系统,Linux操作系统,SGI IRIX操作系统,Solaris和FreeBSD等操作系统运行。火星3DVRI虚拟仿真系统提供对外的接口,同时提供SDK开发包,为那些支持3DVRI平台且具有单独开发能力的客户提供了方便,可以使客户能够高效率的开发相关的虚拟仿真软件及产品,同时缩短了客户的开发周期和降低了开发相关虚拟仿真软件及产品的成本。2. 3DVRI2. 3DVRI产品结构图:产品结构图:3DVRI虚拟现实核心技术城市规划与三维GIS软件3DVRI多通道展示系统3DVRI虚拟现实内容创作系统3DVRI虚拟现实内容出版系统3DVR

52、I互动仿真系统2.1 2.1 城市规划与三维城市规划与三维GISGIS系统系统由于城市规划项目的关联性、复杂性和前瞻性要求较高,城市规划一直是对全新的可视化方案需求最为迫切的领域之一。运用3DVRI城市规划仿真系统可以使政府规划部门、项目开发商、工程人员和各界人士可从任意角度,实时互动真实地看到规划效果获得前所未有的直观感受,这是传统手段如沙盘、效果图、平面图等所不能达到的。 2.1.1 提高项目的评估质量 由于虚拟现实系统能够实时地对规划项目进行真实的“再现”,很多不易察觉的设计缺陷能够轻易地被发现,大大减少由于事先规划不周全而造成的无可挽回的损失与遗憾。 2.1.2 提高项目管理能力和效率

53、 我们知道传统的一些表现形式如效果图、模型等,很容易在某些方面如间距、高低、光照、材料等被人为地修饰以误导评估人员,尤其是对于非专业人员,从而作出有利于一方的判断和决定。如果城建部门建立一个标准的虚拟现实系统总平台,要求开发机构或设计单位将他们的方案(可作为子系统)以相同的细节精度、尺寸比例和视觉质量直接导入,那么方案评估才更为准确、公正。另外,如果总系统需要增加新的项目,或其中的项目遇到方案修改,可以随时导入或更新系统的数据信息,并且可供日后存档,极大地方便了政府规划管理部门的管理工作,提高了效率,节省了成本。 2.1.3 提高公众参与度和部门协同作业 由于虚拟现实打破了专业人士和非专业人士

54、之间的沟通障碍,使得各部门能通过统一的仿真环境进行交流,能更好的理解设计方的思路和各方的意见,能更快的找到问题,达成共识和解决一些设计中存在的缺陷。2.1.4 提高方案设计和修正的效率 应用虚拟现实系统,我们可以很轻松随意的进行修改,改变建筑高度,改变绿化密度,改变外立面的颜色即看即所得,只要修改系统中的参数即可。大大加快了方案设计的速度和质量。 2.1.5 提高市民公开展示和城市形象宣传的效果 虚拟现实系统的沉浸感和互动性不但能够让用户获得身临其境的体验,同时还能随时获取项目的数据资料,而且更可以导出视频文件用来制作多媒体宣传资料,进一步提高项目的宣传展示效果。 2.1.6 数字化城市 随着

55、我国加入WTO,国家改革开放步伐不断加快,城市的发展以前所未有的速度向前发展,伴随着新技术的推广,城市信息化管理已成为各大、中城市高层管理者的首要工作,其投资力度也不断加大,为新时代、新经济注入了活力。遥感、地理信息系统、卫星定位系统在城市信息化管理中发挥着极其重要的作用,将成为今后二、三十年数字城市科技发展的主导技术。国家已明确提出,今后城市建设要把信息化管理纳入首位,提高数字城市的科技含量,让遥感、地理信息系统、卫星定位系统在数字化城市管理中发挥重要作用,而虚拟现实“VR”技术则是这项工作的主角注:以上为曲江规划项目2.2 3DVRI多通道系统多通道系统为提高展示效果,可使用多通道系统,目

56、前最高端的技术就是360度立体环幕,而一般人体的视野最多也只是180度,因此市场普遍是采用小于180度的多通道的显示拼接技术,目前性价比较高的是采用双通道或三通道的所模拟的环幕,而且一般的软件系统升级到三通道系统所化的成本也比较低,视觉效果却有质的飞跃。它不但有着宽阔的视野,而且带上立体眼睛在视觉感官上和看立体电影一样,加上V R的互动,会使人们产生完全沉浸在虚拟场景中的感受! 2.3 3DVRI2.3 3DVRI虚拟现实创作系统虚拟现实创作系统3DVRI虚拟现创作系统是新一带的三维创作软件,她能使三维创作人员方便的在个人电脑中创建虚拟场景。新增了许多新的功能:.可以在场景中调节雾效,提高了场

57、景的真实性。.可以添加与真实世界视角完全相同的天空盒,让您在漫游的时候感受到真实的天空。.易用的节点编辑使制作完成的场景不用重新制作就可以二次加工。.利用硬件shader制作特效,完全实现实时反射、折射、凹凸及多种绚丽效果。.具有撤消与重做功能使制作人员不用担心操作失误。.自定义水印的添加,充分维护制作人的知识产权与版权。.方便的快捷键,方便制作人员的操作,提高工作效率。扩展功能:.对用户制作好的场景使用创作系统直接就可以发布成可执行文件。.支持三维树木和镜头光斑等。注:以上为3DVRI的虚拟仿真内容创作系统软件界面2.4 3DVRI2.4 3DVRI虚拟现实出版系统虚拟现实出版系统在传统的展

58、示方法中,效果图、动画二者泾渭分明,多媒体展示在设计院获得了很大的认可,因为多媒体的制作周期很短而且同时包容了效果图、动画、文本等内容,制作成本不高,而且对电脑的要求很低,因此多中小型的项目来说是很适合的。传统的VR他的制作成本高昂与周期长决定了所承接的项目额度必须实在几万元甚至在几十万元以上,否则是没有利润可言的,而且制作周期长,周期一长中间出现各种问题,能否将项目款收回也成了问题,中间的变数较大。VR与效果图、动画、多媒体他们之间的衔接更是泾渭分明,很多包括我们VR软件的生产厂商在内,目前的观点和事实VR等价于漫游,当前VR的纯漫游就是建筑漫游,以至造成了VR的承接者将大量的单子拒之门外的

59、现象,所剩可以承接的项目要不是非常大就是需要针对特定编程的一般没有研发实力的公司是无法承接的,在这种情况下自然有人会想到能否将效果图、动画、多媒体及VR技术无缝的融合起来的表现形式,虽然是一种非常好的想法,但是受限于技术难度和要求,多书人都是以失败而告终。经过我们的努力,及时的推出了一款将效果图、动画、多媒体及VR技术融合的3DVRI虚拟现实出版系统,他具有如下的特性:.通过技术革新在多媒体制作方面比传统的Autorware方法的成本与周期上再降低30%左右,易用性高,即使是一个新手的学习和上手的周期也远远低于Authorware。.无缝融合效果图、动画、多媒体及VR的建筑表现,在以前受技术上

60、的限制无法表现,通过技术革新后,将无缝融合的产品推荐给客户甚至无须讲解,客户只要观看或者操作一遍就能理解,这是一种全新的表现形式,客户不仅容易理解而且也不用话大量的时间为客户讲解什么是VR。. 所承接的项目的动态范围很大,由于基本上是动画、效果图、FLASH、电影、VR硬件渲染、VR交互简单数据库连接的形式,对于那种想要享受新的表现形式但有只想花费少量的制作费用的客户,可以通过这种增加一些FLASH及廉价的表现形式成分来满足要求,这样制作人员只要集中精力将VR部分制作成小而精,这样方案实施后我们的产品就带上了精致的VR表现,而且通过我们控制制作内容,可以将制作成本与周期保持在一个很大的动态范围之内。.产品本身带有数据库功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论