浅析月球车仿真系统中若干视景真实感实现技术

举报
资源描述
浅析月球车仿真系统中若干视景 真实感实现技术 论文摘要:虚拟现实技术的出现为月球漫游车的设计、优化等提供了新的有效手段。为在虚拟现实环境下开发月球车仿真系统,视景真实感实现技术在其中具有重要地位。研究了真实感地形生成技术、仿真过程中的粒子系统特效技术以及车轮沉陷和车轮轨迹生成技术。基于分形技术和月面特征地形生月面高程数据;利用 Muhigen Creator构建和渲染了月面几何模型;基于 OpenGL Performer开发 了仿真程序并 应用到一种月球 车运动仿真系统中。系统可在微机和SGI图形工作站运行,仿真结果显示具有良好的真实感。   1 引言   进入 21世纪后,世界各国掀起 了一股新的探测月球的高潮,对月球车的研究也不断深入。作为一个复杂的系统,月球车的设计和优化需要经过大量的试验验证。仿真无疑是提高设计效率、降低设计成本的有效手段…。在计算机中对月球车运动性能进行仿真,除了需要一个理想的地形、一个完备的动力学模型和一个准确的车轮一地面作用模型,同时也需要能给予设计者直观和具有真实感的反馈。虚拟现实技术的出现,无疑为仿真注人了新的活力,为月球车系统的设计、优化提供了更加有效的手段。虚拟现实技术的一大特点是沉浸性(Immersive),而沉浸性是指用户对虚拟世界的真实感,此种真实感将使用户难以觉察、分辨出其 自身正处于一个由计算机生成的虚拟环境中。真实感的形成对于仿真的效果非常重要。只有逼真的仿真输出效果使得仿真结果更加直观,更容易被理解,也就提高了仿真的实用性和意义。   在以往的仿真研究中,比较注重的是对月球车运动学和动力学的分析,缺乏经过三维渲染的视景输出,使得仿真结果不易观察和比较。本文即在一个月球车视景仿真平台基础上,着重研究了视景真实感的若干实现技术。   2 系统基本架构介绍   本文中的视景仿真建立在一个虚拟仿真平台中,其系统架构如图 1所示。      系统主要包括三个大的功能模块。模块的功能分述如下 :   1)几何建模模块,负责系统几何模型的建立。主要是用于生成真实感数字月面模型。。   2)动力学模块主要定义月球车仿真系统中的作用力模型与约束关系等。   3)可视化模块。主要功能为根据导入的几何文件建立场景树,并利用三维视景渲染技术(场景管理,光照,三维文字,纹理映射以及实时阴影等)输出一个具有沉浸感和立体感的虚拟环境,并能够处理用户与场景之间的所有交互。可视化模块在整个系统中具有重要的地位,可视化的效果直接影响到仿真结果的表达和用户与系统的交互 ,因此实现具有真实感的可视化效果有着十分重要的意义。本文主要介绍在可视化模块中为实现仿真真实感的若干实现技术。   3 真实感实现技术   月球车仿真中显示模型的真实感主要包含两部分:一是真实感几何模型的生成和渲染,主要包括月面地形和月球车模型等;二是在仿真动态循环中的真实效果生成,比如用粒子系统来模拟尘埃以及在仿真过程中实现车轮沉陷效果和车轮轨迹生成等。 3.1 真实感地形   整个月球表面覆盖着一层松散层,由岩石碎块,角砾状岩块、砂和尘土组成的松散层,称为月壤。月球表面起伏不平,高差悬殊,可以划分出不同地形,如月海、月陆、环形山月谷和月溪等,图2是真实的月面照片。      根据月球车仿真平台实时的需要,首先利用分形技术生成随机月面基础地形。然后,在生成的月面基础地形上根据真实统计规律添加月而特征,如陨石坑、石块等,建立了一个符合月球表面特征的基础地形,详细设计过程见文献[1]。 要使数字地形具有如同照片般的真实感 ,需要综合运用包括光照,纹理,材质,阴影在内的计算机图形学技术。本文基于 Multigen Creator,提出了一整套地形渲染技术方案。   3.1.1光照与材质处理   在处理月面的光照时,本文主要考虑了以下因素:   1)由于月面并不是理想的漫反射体,也不是镜面反射体,而是介于两者之间的物体。所以,要创建逼真的月面地形,二者都必须模拟。所以需要考虑月表地面上任意点光的反射强度与光源及地面特性之问的关系。   2)充分考虑影响光照效果的因素,在设计光照时考虑各种光源之间的关系及相互影响。这样,模拟月面的地形才能在光照条件下显示更加逼真的效果,更加接近真实的地面环境。   所以该地形选用了无限光源(Infinite),即从无限远处照亮整个模型数据库的光源,无限光源的光线是相互平行的可以达到了与太阳光类似的照明效果,从而在光照效果上达到真实的程度。   同时为了体现月面地形与光照的关系,必须在建模软件中对模型的材质进行恰当设定.Creator软件中模型材质设定的基本步骤是:使用材质窗 口来设置材质球的属性 ;然后将设定好的材质球属性应用到模型上,从而控制模型表面的光照效果.材质球的属性包括 Ambient,Diffuse,Specular,Emissive及 Shininess,Alpha等 6个分量.Ambient分量设置模型表面环境光反射的强度和颜色,相当于环境光反射系数.Diffuse分量设置模型表面漫反射的强度和颜色,相当于漫反射系数.Specular分量设置物体高光的亮度和颜色,相当于镜面反射的系数;Shininess分量设置物体表面的高光质量,该分量相当于镜面反射参数,Specular和 Shininess共同作用来控制物体表面的镜面反射光照效果.本文通过计算以及不断的测试调整参数设置的组合 ,使之达到了一个逼真的效果.   3.1.2 纹理映射   纹理映射(Texture Mapping)是通过将数字化的纹理图像覆盖或投射到物体表面,从而为物体表面增加表面细节的过程。纹理映射图像可以通过采样得到,也可以通过数学函数生成。物体的很多表面细节是多边形逼近或其他几何建模的方法是难以表现的,因此纹理映射技术能够使得计算机生成的物体看起来更加逼真。   本文在处理纹理映射时,可以简单的归纳为以下几个步骤:   1)准备纹理图像。本文采用的图像是经过处理的真实的月表图片,使生成的月面更加具有真实感。   2)将纹理的U、v坐标映射为屏幕空间坐标。   3)将纹理颜色与三维地形模型颜色和材质颜色融合。   4)进行适当的纹理过滤处理,优化纹理映射的效果。   本文综合使用了 Creator和 Openflight API完成了地形的纹理映射。   用 Openflight API编写的给几何模型添加纹理所采用的关键代码如下:   mgSetCoord3d (tmRec, fltTM3PtOriginUV,0.0, 0.0, 0.0);//设置参考点   mgSetCoord3d(tmRec,fltTM3PtOriginXYZ,zxO,zyO,zzO); ∥设置图形中的映射点坐标   mgUpdateTextureMapping(tmRec);//更新纹理调板   mgSetAttList(precl,fltPolyDrawType,1,fltPolyTexture,He-windex,fltPolyTexmap,newindex,MG— NULL);//为所选 面片贴纹理 3.1.3 阴影设置   Creator提供了 Flat(平面模式)、“t(动态模式)、Gouraud(高氏模式)、Lit Gouraud(混合模式 )四种不同的着色模式(即阴影处理模式)。本文利用模式来处理月面地形的阴影。模式利用顶点的法线方向跟光源相对,同时也考虑面的颜色和材质以及光照条件的影响来进行着色处理,可以产生逼真的光影效果,能够进行动态的着色处理。   3.2 粒子系统特效   月球车在松软的月面上行驶时,车轮会带起月面上的尘土,显示出一种“尘土效果”。为在仿真中再现和模拟这一效果,用基于 SGI OpenGL Performer的编写的粒子系统程序来模拟这一过程。   SGI OpenGL Performer是一个可扩展的高性能实时三维视景开发软件包,构建于工业标准 OpenGL图形库基础上,可以用于开发实时仿真应用程序和其他专业的基于高性能的三维图形应用程序。OpenGL Performer提供了一组标准 C和C++语言绑定的编程接 口,通过一个便捷的三维图形工具集提供高性能几何图形渲染功能。   粒子系统(particle system)是三维计算机图形学中模拟一些模糊现象的技术 ,而这些现象用其它传统的渲染技术难以实现真实感。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘 、流星尾迹或者象发光轨迹这样的抽象视觉效果等。通常粒子系统在三维空间中的位置与运动是由发射器控制的。发射器主要 由一组粒子行为参数以及在三维空间中的位置所表示。粒子行为参数可以包括粒子生成速度、粒子初始速度向量、粒子寿命、粒子颜色、在粒子生命周期中的变化以及其它参数等等。本文即利用 Performer建立了一个发射器,仿真流程如图3所示。      3.3 车轮沉陷特效   月球表面是松软的沙土,在月球车的行进过程中,会有部分车轮陷入到沙土中(沉陷量),同时,月球车走过的月面会留有车辙。这一效应的模拟对于实现月球车行驶的真实感具有重要意义。本文应用动力学模块与视景仿真模块几何模型间的相互对应关系,模拟车轮沉陷特效。   3.3.1 车轮沉陷效果的实现   在本文的仿真系统中,动力学模块实时计算沉陷量,同时通过数据交互将数据传给可视化模块,从而在可视化模块中可以实时根据沉陷量数据更新显示模型的沉陷效果。此处沉陷量 z。依据 J.Y.Wong给出的理论公式 :      其 中, 为土壤粘性模量,k 为土壤剪切模量为车轮载荷,b为土壤粘性模量,k 为土壤剪切模量为车轮宽度,n为承压指数,k 、k 为土壤粘性模量和土壤剪切模量,D为车轮直径。   3.3.2 车辙的实现   车辙的模拟是记录月球车车轮每一时刻与月面的接触位置,根据车轮走过的路面情况,在月面上加载--/J,段带有车辙纹理的图片累积而成。车轮的实时位置数据由动力学模块计算并通过数据交互提供给可视化模块。   依据几何模型相互对应关系,在视景仿真模块内建立与bodyTrack对应的显示模型:   ∥载人贴有车辙图片的车辙分段   pfNode pfdLoadFile(“track”);   ∥将车辙分段加入动态坐标系中   pfDCS::addChild(pfNode child); 在月球表面分布着大小不一的碎石,因此在月球车的巡视过程中,会越过一些体积比较小的碎石,此时月球车的某些车轮会脱离沙土月面,如果此时仍旧显示车辙,则会看到车辙悬空的情况。为了避免这种情况的发生,在车轮上设置碰撞检验条,实时监测车轮与月面的接触情况。主要代码如下:   ∥碰撞检测条的设置   struct pfSegSet   {   ∥设置碰撞的类型,包括检验针对面片的碰撞还是包围盒的碰撞;设定检验模型的正面或反面;是否返回接触点的法向量   int mode;//用户 自定义的数据   void userData;//设置检测条的方向、长度信息   pfSeg segs[PFIS—MAX—SEGS]; ∥是否激活检测条   uint activeMask;//设定是否监测碰撞   uint isectMask;   //Performer特有的绑定在振动物体上的检测条,此处并未用到,设为 NULL   void{ bound:   ∥碰撞检测的增强功能,可
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 办公文档 > 总结/报告


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号