基于 Creator 的三维场景优化技术的应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Creator的三维场景优化技术的应用

陈永华1 王德成1 陈燕2

(1.郑州大学信息工程学院,郑州 450001;2.华北水利水电学院,郑州 450011)

摘要:高质量的三维场景是虚拟现实系统中重要的组成部分,在三维场景的处理中存在两个主要问题:一是载入场景文件要花费很多时间;二是即使在高性能的PC机上,浏览场景也是一件繁重而费时的事情。在三维场景数据未优化状态下,较大规模的场景变换通常会滞后几秒钟甚至几分钟。本文从算法、建模和渲染速度三个方面改进了几种场景数据优化技术,在应用中取得理想的效果。

关键词:虚拟现实;三维场景;Creator

中图分类号:TP391.9 文献标识码:A

1 引言

Creator软件作为美国Multigen公司新一代的实时仿真建模软件,它有别于机械CAD 等其它建模软件,主要考虑在满足实时性的前提下如何生成面向仿真的、逼真性好的大面积场景。其强大的建模功能可为众多不同类型的图像发生器提供建模系统及工具,它的诸如层次细节(Levels Of Detail)、多边形筛选、逻辑筛选、绘图优先级以及分离面等高级实时功能使得Openflight数据格式成为在实时三维领域中最流行的图像生成格式,并成为视景仿真领域事实上的行业标准。Openflight数据格式是Multigen Creator的基础,它的逻辑化层次场景描述数据库会使图像发生器知道在何时、以何种方式实时地以无可匹敌的精度及可靠性渲染三维场景[1]。

利用Creator可以建立复杂而吸引人的三维场景,再加上颜色、纹理、材质和光照,使它们更具有真实感。在三维场景的处理中存在两个问题:一是载入场景文件要花费很多时间;二是即使在高性能的PC机上,浏览场景也是一件繁重而费时的事情。当鼠标移动之后,场景变换要滞后几秒钟甚至几分钟。本文从算法、建模和渲染速度三个方面改进了几种对场景数据进行优化的技术,在应用中取得理想的效果。

2、运用可见性判定和消隐算法优化场景数据

由于视线的方向性、视角的局限性以及物体之间的相互遮挡,人眼所看到的往往只是三维场景的一部分。在城市仿真中,为充分利用绘制硬件的有限资源,就必须充分利用物体空间的相关性,加快可见性的判定,减小绘制深度。所以要对可视化数据库进行检索,检索出一部分,该部分经过坐标转换和透视投影所产生的图像是屏幕上可以显示的。这些图像有的可能超出屏幕,或部分超出屏幕,要对其进行裁减。这就是三维场景的可见性判定和裁剪。

20世纪70年代发展起来的对象分层显示技术大大加快了可见性的判定。层次表示的主要方法是包围盒技术和八叉树技术。这两种技术的主要特点是将场景组织成为一棵树,充分利用空间的连贯性以加速场景的遍历,从而大大减少了画面绘制过程的空间复杂度。

由于视点不同,在空间中只能看到三维物体的某些面(向前面),而有些面是看不到(背离面)的,将那些完全或部分被遮挡的面称为蕴藏面,消隐技术就是要消除那些相对于给定空间观察位置的背离面和蕴藏面,这样就能得到不透明物体图像的最基本的真实感。

消隐算法总的来讲可以分为两大类,即图像空间算法和物体空间算法。前者一般是指物体转化到显示屏的图像空间后,就屏幕上每个像素,检查所有的平面 ,以确定哪个面离观察者最近;后者是指在描述物体的空间中,根据物体的几何关系计算物体的哪些部分是可见的,目的是消去那些不可见的面或面的不可见部分。N.Greene等人于1993年提出了层次Z-buffer算法就是一种物体空间算法,采用层次遮挡图来加速对不可见物体的剔除[2]。 3、运用建模技术优化场景数据

3.1 纹理映射(Texture mapping)技术

在现实环境中,存在着大量不规则的物体,例如树木、路灯、雕塑等,对于这些环境装饰物,如果都用实体表示,所带来的资源耗费将是无法接受的。纹理可以用来简化复杂的几何体,纹理映射技术的使用将极大降低场景的复杂性,实现场景的逼真度和运行速度之间的平衡。纹理映射的意义可简单归纳为:用图像来替代物体模型中的可模拟或不可模拟细节,提高模拟逼真度和场景的显示速度[3]。

纹理映射是把二维的位图图像上的像素值映射到三维实体模型的对应顶点上,以增强实体模型的真实感。它本质上是一个二维纹理平面到三维模型表面的一个映射。从数学的观点来看,映射可以用下式描述:

(u,v)=F(x,y,z)

其中(u,v)、(x,y,z)分别是纹理空间和物体空间中的点

例如:将一纹理映射到一高为h,半径为r的圆柱面可用下面的参数形式表达:

x=rcosθ ,y=rsinθ,z=hФ

其中0<=θ<= 2π, 0<=Ф<= 1

通过下列线性变换将纹理空间[0,1]× [0,1]与参数空间[0, 2π]× [0,1]等同起来: u= θ/ 2π,v= Ф

如此就得到了从物体空间到纹理空间的纹理表达式。

3.2 实例化(instance)技术

实例是指数据库中三维模型对象的参考副本。实例和拷贝不同,实例仅仅是一个指向某个物体模型的指针,它并没有完全复制模型对象的几何形体,通过实例创建的模型副本并不增加模型数据库的实际多边形数量,所以,设计人员即使创建了某个模型的若干个实例,在内存中也只是存储了一个原始模型。在其它位置使用实例化方法显示模型其实质是对内存中的原始模型进行坐标平移、缩放以及旋转变换,这样可以节省大量的计算机内存、硬盘存储空间和处理时间,尤其是在分布式仿真中,使用实例化技术能够大大减少数据的传输量,改善实时系统的处理性能。如果要对构建的这些实例模型进行修改,只要修改其中的任何一个模型,其它的实例模型就会跟着进行改变,这样就加快了模型编辑的速度。对于虚拟城市场景中的路灯、树木、花草等重复多次或者具有对称性,并且只是由于所处的位置、方向、大小不一样的模型,如果把每个物体都放入内存,将造成极大地浪费,因此实例化技术是一种非常有效的优化技术。

3.3 外部引用(External reference)

Creator中的外部引用技术和实例化技术相类似,也只是一个指向要引用模型的指针,而不是直接对模型进行复制和粘贴。外部引用技术的使用同样也节省了内存和磁盘空间,加快了系统运行的速度及实时场景显示时的流畅性。外部引用和实例化技术的不同之处在于不能对通过外部引用技术显示的模型进行编辑修改,而必须返回到要引用的原始模型文件中,通过修改原始模型文件来达到改变外部引用显示的目的。

4、渲染速度的优化

大规模场景在绘制(渲染)过程中频繁和大量的内存交换影响着图像刷新速度,若图像的渲染不能满足10帧每秒以上的速度,图像就会失去视觉的连续性。因此要在保证场景逼真度的前提下,合理组织模型数据库中的模型,并且尽量减少调入场景中的多边形数目,以便减少交换的数据量。

4.1 细节层次 (Level of Detail,LOD)模型

LOD技术是为了解决可视化仿真建模过程中系统的实时性和模型的逼真度之间的矛盾而出现的。按照当前视点到模型对象距离的不同,数据库设置成不同的细节层次,距离近时调用复杂模型,显示更多的细节,距离远时调用简单模型,不必显示细节,以便减少交换的数

相关文档
最新文档