绘制、建模及软件工具光电信息技术与颜色工程研究所刘越(liuyue@bit.edu.cn)•图形、触觉绘制流水线•几何、运动、物理、行为建模•模型管理•VR工具包•小结•图形、触觉绘制流水线•几何、运动、物理、行为建模•模型管理•VR工具包•小结VR引擎•定义:是VR系统的关键部分,从输入设备中读取数据、访问与任务相关的数据库、执行任务要求的实时计算、实时更新虚拟世界的状态、把结果反馈给输出显示设备•VR世界是实时创建和实时删除的,平滑显示需24-30fps(33ms)•与其他任务(与I/O通信和存储)并行处理的计算负载非常大VR引擎•VR系统的延迟是传感器延迟、传送延迟和计算显示新的世界状态的时间之和。•延迟大于100ms时仿真质量下降,产生仿真病•低延时以及快速图形、触觉、听觉刷新率要求VR具有强健的计算机体系结构•VR系统结构的设计通常围绕绘制流水线进行图形绘制流水线•根据给定的虚拟摄像机、三维物体、光源、光照模型、纹理等绘制一幅二维图像。应用程序阶段光栅化阶段几何处理阶段CPUFIFO缓冲区GEFIFO缓冲区RU输出缓冲区图形绘制流水线–图形绘制流水线的各阶段使用并行体系结构–应用程序阶段:多个CPU并行处理–几何阶段:采用一组几何处理引擎GE分别处理场景的一部分–光栅化阶段:采用双缓冲减少由于显示硬件刷新引起的闪烁CPUFIFO缓冲区GEFIFO缓冲区RU输出缓冲区图形流水线瓶颈•当流水线每一阶段的输出与下一阶段的输入速度不匹配时,会造成系统瓶颈•理想情况,刷新频率与场景复杂度成反比•场景复杂度较低时瓶颈出现在应用程序阶段•减少场景中光源的数目并增加图像帧的刷新率,瓶颈出现在几何处理阶段•降低显示窗口的尺寸或分辨率增加流水线的输出,瓶颈出现在光栅化阶段图形流水线优化–采用高速CPU–增加CPU数量–减少三维模型的复杂度–优化仿真软件–使用低精度的算术运算–减少显示的像素数触觉绘制流水线ForceTactileTraversalDisplay力计算力平滑力映射触觉纹理碰撞检测•图形、触觉绘制流水线•几何、运动、物理、行为建模•模型管理•VR工具包•小结VR建模建立I/O设备到仿真场景的映射-开发虚拟世界的对象数据库(对象的形状、外观、运动学约束、智能行为、物理特性的建模)VR制作工具物理建模智能行为模型管理运动建模几何建模I/O映射实时仿真几何建模描述了虚拟对象的形状(多边形、三角形、顶点和样条)及外观(表面纹理、表面光强度和颜色)几何建模•虚拟对象的形状:由三维表面确定,大多数对象表面由三角形网格组成–所需存储空间小(共享顶点)–绘制速度优于独立的多边形–适合几何变换和细节等级优化(LOD)–不适合于非常弯曲和凹凸不平的表面12几何建模•参数表面:由高阶函数表示–存储空间小–能提供较好的表面光滑度–只能通过改变控制点改变其形状(B样条)参数样条几何建模•使用工具包编辑器–过程复杂–需要大量的人年•导入CAD文件–可重用已存在的模型–用户可交互式的创建对象的模型–需转换成与VR工具包兼容的格式•三维数字化仪创建对象表面,例如由Polhemus笔获取三维点信息•缺点:–工作范围有限–一次只能处理一个点–精度在1mm(手颤抖,跟踪器误差)几何建模•使用三维扫描仪快速创建对象表面,采用数字照相激光装置,通过三角测量计算出到对象的距离–非接触测量–能在给定时间内获得连续多个测量点几何建模PointcloudfromscannerPolygonalmeshPolygonalsurfaceNURBS(non-uniformrationalβ-splines)patchesNURBSsurfaceWRAP软件几何建模使用在线三维对象数据库几何建模几何建模对象的视觉外观•建模后需要照亮场景,使得对象能够被看到•对象的视觉外观取决于虚拟光源的位置和对象的表面反射系数•表面纹理:决定场景的复杂度和真实感•场景光照:决定对象表面的光强度,分为局部光照和整体光照场景光照•局部场景光照孤立的处理对象和光源之间的交互,忽视了对象间的相互依赖关系•整体光照模拟对象间的相互反射和阴影效果,得到真实感更强的场景•在图形流水线的光栅化阶段执行的一种技术,其目的是更改对象模型的表面属性,如颜色、漫反射率和像素法向量等•在不增加表面多边形数目的情况下提高图像真实感的一种有效方法。•刨光的木材表面上有木纹等通过颜色色彩或明暗度变化体现出来的表面细节称为颜色纹理。桔子皮表面的皱纹等由于不规则的细小凹凸造成的称为几何纹理。可以用纹理映射的方法给计算机生成的图象加上纹理。•纹理映射纹理映射•将二维的纹理映射到三维的物体表面,必须建立物体空间坐标(x,y,z)与纹理空间坐标(u,v)之间的对应关系。纹理映射•纹理的创建:画图程序、扫描所需纹理图案的照片、专用工具、商业纹理数据库•优点–增加了场景的细节等级和真实感–基于透视变换提供较好的三维空间线索–减少多边形数量,提高刷新率运动建模•确定三维对象在世界坐标系中的位置及在虚拟世界中的运动•运动受父子层次关系的制约•设置观察世界的方式(虚拟相机)•相机图像经变换投影到二维显示窗口,提供视觉反馈运动建模物理建模•综合体现对象的物理特性,包括重量、惯性、表面硬度、柔软度和变形模式等•与行为建模共同为虚拟世界的模型带来更大的真实感•包括碰撞检测、受力计算、力平滑、力映射和触觉纹理碰撞检测•确定两个或多个对象是否互相接触•分为近似检测和精确检测两类•近似检测又称为包围盒碰撞检测,使用三维区域进行检测•精确碰撞检测准确知道两个对象在何处发生接触•碰撞响应取决于发生碰撞的虚拟对象的特性以及具体应用的要求,若发生碰撞的是非刚性的,则碰撞响应表现形式是表面变形,需在图形流水线中处理对象使用参数表示,则需通过修改表面周围的控制点的位置进行修改,较困难对象使用多边形建模,则可通过顶点操作直接进行表面变形对不依赖于用户动作的对象的行为建模在超大规模仿真环境中,用户不可能控制环境中发生的所有交互.通过访问外部传感器对对象建模Systemclock自动滑门–reflexbehavior行为建模行为建模•虚拟对象在一定程度上与用户的动作无关,具有一定的智能。•虚拟人(agent)是具有人的行为特征的三维角色。一组agent称为人群,具有群组行为。•虚拟环境的自主程度取决于各个组件的自主程度,组件有三个级别:被指导的“guided”(lowest),程序控制的“programmed”(intermediate”)和自主的“autonomous(high)Agent的行为模型包括情绪、行为规则和动作感知使agent能感觉到周围的环境感知情绪行为规则动作Virtualworld行为建模一组agent形成了群体;群体可以是被指导的、程序控制的或自主的;群体的自主级别不一定与群体中的agent一致;群体具有一个共同目标,每个agent能够通过某些方法感知周围的环境并作出反应行为建模•图形、触觉绘制流水线•几何、运动、物理、行为建模•模型管理•VR工具包•小结模型管理•对象细节等级选取•单元划分•离线预计算•数据库管理用于帮助VR引擎以交互速度绘制复杂虚拟环境,对仿真质量不会产生重大影响的技术,细节等级管理Treewith27,000polygonsTreewith27,000polygons(detailsarenotperceived)定义:通过选择对象相应的细节等级来提高图形流水线吞吐量的技术当对象离人很远时,人眼只能观察到非常少的细节等级,用高细节等级的模型是一种浪费单元分割•较大的模型需要采用某种绘制方法,使得存储器交换对仿真帧速的影响最小。•如将大模型划分为较小的模型,通过静态或自适应LOD管理进行绘制。•将虚拟世界划分成较小的空间和单元,只有当前空间中的对象才被绘制,降低了绘制复杂度。•图形、触觉绘制流水线•几何、运动、物理、行为建模•模型管理•VR工具包•小结VR工具包•为VR设计的可扩展的面向对象的函数库。被仿真的对象是类的一部分,能继承这些类的默认属性,因而可以简化编程任务•函数库可扩展,因此可使用相同的仿真内核编写应用程序专用的模块•可用于各种硬件平台VR工具包•VCToolkit1993•CyberspaceDeveloperKit(CDK)1993•VirtualRealityToolkit(VRT3)1993•Rend3861993•受当时昂贵的低性能图形硬件的限制。被设计成不需要图形加速卡就可单独使用•只允许面片明暗处理和较低的场景复杂度VR工具包•Java3D•虚拟现实建模语言VRML•WorldToolKit•GHOST•PeopleShop•Creator/Vega•Unity3DVR工具包•几何建模•将对象与输入设备连接起来•定义智能行为•提供网络连接WTK•90年代初开发•支持大多数商业I/O设备(跟踪器,立体眼镜,传感手套)•具有多平台可移植性(Windows,Unix,Sun)•包含丰富的实例代码•要求系统的RAM存储器中装载整个虚拟世界,适合中小规模的开发JavaandJava3DJava面向对象的programminglanguage分布式应用程序平台无关性速度较C/C++慢Java3D是JavaAPI中的一种用于开发面向对象的交互式三维图形应用程序使用了OpenGL,Direct3D底层图形库函数免费PeopleShop•WTK和Java3D是基于脚本的语言,使用它们来创建和编排多个替身时需要很强的编程能力;实时驱动这些替身需要来自数据衣的数据•PeopleShopAPI是建立在OpenGL和Direct3D基础上的一个C/C++可链接对象库;允许任务级编程•提供图形编程环境,可简单通过鼠标从角色菜单、动作菜单和仿真模式菜单进行选择来创建仿真,对创建大量替身的民用和军事训练场景非常有效3DGameStudio•3DGameStudio是具有代表性的游戏引擎,已经有上百种使用该引擎的游戏公开发行•结合了高端的3D引擎、2D引擎、物理引擎、地图和建模编辑器、脚本编译器和大量的3D物体库、工艺品和半成品的游戏。可制作第一人称游戏、第三人称游戏,角色扮演游戏,滚屏游戏,飞行模拟器,棋类游戏,运动类游戏,战略游戏以及虚拟展示应用程序Creator/Vega•完整的视景/声音仿真、虚拟现实系统的开发工具;•功能强大,使用简洁、高效,减少了大量编程的工作。•实时三维建模工具;•OpenFlight格式(.flt)已成为视景仿真业界标准。•精确测绘数据三维生成;•用户控制面片数及误差;•地形LOD自动生成;•根据图片灰度信息生成三维地形………地形/地貌数据库生成实时三维模型仪表盘自动创建道路模块AASHTOStandardsMultipleLOD“Drive”FeatureLOD(LevelofDetail)分布式(Distributed)Vega特殊效果模块平面和三维的烟爆炸、水面爆炸及碎片导弹尾迹枪、炮开火闪光光点跟踪旋转的螺旋桨旋翼水流用户自定义粒子特效海洋模块三维动态海洋模型风吹海面的效果海浪拍打海岸舰船的尾迹和船头的波浪浮标、旗帜等海面标志物落水人员及漂浮物在仿真环境中,添加逼真的动画人物;可以选择不同的人物、服装和设备;可以定义其行为和移动路线;可以提供的人物包括士兵、普通市民等;仿真人物模块云景模块完全三维的多边形模型;可以生成各种天气条件下的云、武器效果、炸弹生成的灰尘和其他的战场环境烟云效果;可赋予不同波段、不同辐射度的云;与传感器模块紧密结合。导航和信号灯(NSL)创建、配置和控制光点系统;–类型–位置–颜色–强度–可见角度提供了多种预定义的标准的光点系统,如进场灯、信标台、ALDIS、FLOLS等;光束模块清晰而逼真的投射光显示,如打开飞机着陆灯的驾驶员,或打开汽车前灯的司机等;从光束中心,随距离不同,光强度衰减;可以加入任意多的光束,模拟探照灯、舞台灯效果;动态仪表盘模块创建和控制各种不同图