虚拟校园图书馆漫游系统的设计和实现
2011-11-07吕朝华程祥春
吕朝华,顾 容,程祥春
(浙江工业大学 教育科学与技术学院,浙江 杭州 310014)
虚拟校园图书馆漫游系统的设计和实现
吕朝华,顾 容,程祥春
(浙江工业大学 教育科学与技术学院,浙江 杭州 310014)
虚拟校园漫游仿真系统是虚拟现实技术在教育中的具体应用。本文通过虚拟场景的面片数、顶点数、帧速率(FPS)、系统容量四项指标,讨论了纹理映射、实例化建模、多细节层次和基于Lua语言的外部引入技术,并实现了虚拟图书馆的漫游。
虚拟校园;场景优化;Quest3D;Lua语言
一、引言
1990年由美国克莱蒙特大学教授凯尼斯·格林(Kenneth Green)发起并主持的一项大型科研项目“信息化校园计划”被认为是数字化校园概念的最早出现。[1]近年来,虚拟现实技术发展得十分迅速,被广泛应用到了军事、医学、建筑、教育、娱乐等领域。许多高校建立了虚拟校园仿真系统并放到了互联网上,任何人通过互联网都可以漫游虚拟校园来体会校园文化。场景建模是虚拟三维校园漫游系统的主要构成部分,是虚拟现实技术最重要的表现形式,它是使用户产生身临其境感觉的交互式仿真环境,实现了用户与该环境直接进行自然交互。[2]逼真的可视化虚拟场景给视景的实时绘制带来了巨大的压力。如何在不影响场景逼真度的情况下提高视景的实时性渲染,是当前研究的一个热点问题。本文以浙江工业大学屏峰校区图书馆为例进行讨论。
二、系统的构建
1.场景建模
现在很多高校建立了网上的虚拟校园漫游系统,大部分都是进行室外漫游,而进行室内建模的虚拟场景很少。室外模型只要制作建筑的外表轮廓,像窗户、玻璃、门等一些模型可以直接利用贴图来表示,而室内建模则要对各个模型进行制作,这样就加大了虚拟场景模型的数据量。模型的数据量越大,系统的渲染速度就会越慢。虽然现在的计算机软硬件发展迅速,但仍然不能满足实时渲染的需求。
使用3DS Max 2009对场景进行建模,大部分模型使用几何建模方法,也用到了放样建模,比如:楼梯、扶手。贴图是利用数码相机对图书馆内部物体进行拍摄,经过Photoshop软件修改,最后附加到建立的模型上面。在渲染方面,利用了3DS Max 2009自带的默认扫描线渲染器,因为是室内渲染,启用了高级照明中的光能传递命令,而室外渲染则选用光线跟踪命令。为了达到逼真的室内效果,配合光度学灯光中的光域网使场景的光线更加生动。烘焙的主要工作是将场景中模型表面光影存入文件,其文件格式为Targa(tga)。烘焙的基本原则:对于面积较大且平铺贴图的模型,使用LightingMap方式烘焙,如铺砖的地面;对于面积较大但没有贴图文件的模型,使用CompleteMap方式烘焙,如墙面;对于有贴图但没有平铺的模型,使用CompleteMap方式烘馆;对于植物、面片装饰物、金属、玻璃、镜子、自发光及细小物等物体,则不需要烘焙。[3]
2.交互设计
使用Quest3D引擎进行交互的设计。Quest3D引擎是由荷兰Act-3D公司开发,是一个功能非常强大的三维项目制作软件,最大的特点就是利用“channel”信道元件进行编程,极大地提高了开发效率。将3DS Max 2009中的制作的模型分批导入到Quest3D引擎中,利用“WalkthroughCamera”漫游像机信道实现漫游功能。在漫游的过程当中,漫游像机要和周围的物体进行碰撞检测。碰撞检测要进行大量的运算,如果碰撞的物体是简单的物体可以直接进行检测,如果是复杂的物体,为了减少系统的负担可以利用透明的面片和像机进行检测。
三、虚拟场景的优化
虚拟仿真系统中的场景要有一定的逼真度,但同时要满足视景的实时绘制,所以,虚拟场景的优化在大场景的情况下非常重要,在室内建模的情况下显得更加突出。
1.提高真实感
(1)纹理映射
纹理映射(TextureMapping)是一种将二维图像映射到三维几何形状表面的一种技术,是增强真实感的有效手段。使用纹理映射技术可以避免将场景中的每个细节都使用多边形来表示,因而可以大大减少场景的多边形数目,提高图形显示速度,增加系统效率。使用纹理时应该注意不能使用过于复杂的纹理,过于复杂会消耗较多的内存,降低显示速度,过于简单又会失去真实感,要在二者之间保持平衡。[4]在图书模型的制作过程中,只对BOX几何体前方和上方附加贴图,下方和后方的多余面片删除,分别对贴图的UV坐标进行调整,这样就可以表现出一本很真实的图书模型。 Mipmapping技术是特殊的纹理映射,就是将要贴的纹理准备好一组大小各不相同的规则图像,根据几何面与视点的距离来调用相应大小的纹理。几何面与视点的距离较近的时候显示像素较高的图像,几何面与视点的距离较远的时候显示像素较低的图像,加快了视景的实时显示。Quest3D支持图像的尺寸要大于8像素,并且最好是2的幂次。利用Photoshop的插件.DDS可以很容易生成带有层级的贴图,但同时也因为层级的增加会使图像的容量增加,增大了系统的运算量。
(2)光照、阴影的生成
在虚拟仿真的环境中,动态的光照和阴影会消耗很多内存,所以一般都是在三维建模软件中进行布光,通过烘焙以贴图的形式来存储光照、阴影的信息。静态的光照和阴影虽然没有动态的逼真、丰富,但是也达到了一般应用的要求。
有时为了突出主体,可以对主体人物运用动态的光照和阴影。在Quest3D引擎中,“SoftwareStencilShadowObject”信道可以支持各种物体的实时阴影,但消耗的内存较多;“FastShaderStencilShadowObject”信道效率较高,但不支持非闭合物体,也不支持蒙皮角色。
2.提高实时性
(1)实例化技术
实例化技术是计算机图形学里为节省计算机的运行负担而采用的一种算法。当构造多个相同形状和相同属性的模型时,如果采用正常的拷贝手段,每增加一个物体模型,多边形的数量就增加一倍,而采用实例化技术,可以在增加同类物体数量时不增加多边形数量。[5]应用Quest3D引擎中的“ForLoop”信道将一排书架模型进行实例化。根据需要,渲染出了十一排书架模型。通过坐标的空间转换将书架模型放到合适的位置。
“ForLoop”信道比较适合物体模型位置有规律的时候应用,比如系统中书架模型的实例化应用。Quest3D引擎中还有一个信道“NaturePainter”也可以应用于实例化建模并且绘制的方法灵活。一次可以绘制一个物体模型,也可以同时绘制多个物体模型。绘制物体的位置可以是随机摆放的,也可以是按照制作的需要有顺序地摆放。同时,还可以设置物体的可见范围。在场景中比较适合随机种植一些花草,树木之类的景观模型。进一步来说,可以应用到虚拟场景中的每一个模型物体,例如:房屋、人物等。要注意的是碰撞物体模型的设置,所绘制的模型都必须绘制在相应的碰撞物体模型上。碰撞物体模型的大小会影响到系统的运算速度。所以,一般都用平面作为碰撞物体。
(2)多细节层次(LOD)
LOD就是在不影响画面视觉效果的条件下,通过逐次简化模型表面的细节来减少场景的几何复杂性,从而提高视景渲染的速度。通常对每一原始多面体模型建立几个不同精度的几何模型,与原模型相比,每个模型均保留了一定层次的细节。当从近处观察模型时,系统调用精细模型;从远处观察模型时系统调用较为粗糙的模型。LOD有不同的算法,按照简化机制不同的分类可以分为:自适应细分型、采样型、几何元素删除型。
在 Quest3D引擎中, 含有 “Dynamic LOD”、“Static LOD”两个信道。在本系统中选用了“Static LOD”信道,就是在预处理过程中产生一个物体的几个离散的不同细节层次模型,实时绘制时根据特定的标准选择合适的细节层次模型来表示物体。首先,确定了细节层次的数目为两层:一层为没有贴图的半透明BOX,一层为书架模型。图书室中首先显示的是半透明的BOX,当摄像机与BOX的距离小于一个数值时,就显示为书架模型。当摄像机远离书架时,又会显示为半透明的BOX。在一定的距离范围内,摄像机附近的物体是书架,远处的物体是半透明的BOX,加快了视景实时渲染的速度。
但是,在原有场景的基础上增添了很多个半透明的BOX,场景的面片数增加了,内存消耗增大。所以,采用LOD技术也是要在能实现快速动态并行加载技术的基础之上的。[6]这和Mipmapping技术其实是同样的道理。同时,在不同层次模型的转换间,给视觉也带来了突变的效果。
“Dynamic LOD”即在动态LOD算法中生成一个数据结构,在实时绘制时可以从这个数据结构中抽取出所需的细节层次模型。从这个数据结构中可以得到大量不同分辨率的细节层次模型,分辨率甚至可以是连续变化的。当摄像机与物体的距离较近时,显示较多的顶点数和面片数,渲染的细节较多;当摄像机与物体的距离较远时,显示物体的顶点数和三角形的面片数越来越少,这样可以加快视景的渲染速度。这种算法比较适合表面比较光滑的模型,比如:远处的高山等,这种优化方式不能够用在带有面部动画的人物角色上。因为带有面部表情的人物动画是通过Morph(变形)动画产生的。这种情况要求面部不同表情的顶点数和面片数是相同的。
(3)外部引用技术
外部引用能够将复杂场景中的各个物体、单元地形等分别调入场景数据库中。采用外部引用的方式好处在于可以有效降低模型数据库的规模,节省内存空间和储存空间,提高系统资源的利用率,同时对场景的组织和管理起到一定的作用。可以将一个大的场景分成几小块,然后分别进行调用。在Quest3D引擎中集成了“Lua Script”信道,Lua语言实现了一个安全的运行环境、一套自动内存管理机制、优秀的字符串处理能力和动态大小数据的处理能力。
载入的时候,如果外部的文件是在本机,文件的路径使用相对路径就可以,如果要通过互联网从服务器上载入场景,就要用绝对路径。外部载入需要用辅助物体(透明的BOX),可以根据辅助物体和摄像机的距离判断物体的载入和移出。对于载入时视觉突变的效果,使用“透明”技巧,实现目标渐隐渐现的效果,也是一种有效的解决方法。[7]表中所示是对以上三种优化方法的比较(这些数据都是在摄像机运动的时候取得)。
表数据分析
采用实例建模的主要目标是节省内存,从这个意义上说内存占用少,显示速度会加快,但同时由于物体的几何位置要通过几何变换得到,所以当实例对象增多时,系统的运算量将明显增大,过多的计算会导致系统运行速度的降低,影响系统实时性。[8]系统增加了20个实例化的书架,数据量比较大,降低了系统的运行速度,所以FPS比较低,但生成的系统文件较小;静态LOD的面片数和顶点数很多,但是场景文件运行的时候,所有的模型都在内存中,加快了系统的实时渲染,FPS比较高,而且比较稳定,缺点是生成的系统文件较大;外部引用技术场景的顶点、面片数在实例建模和静态LOD的中间,但是FPS的数值却有偏差,这是因为所测试的场景太小,发生载入和移出的次数频繁,极大地增加了系统的运算量,影响了视景的实时渲染。所以,在应用外部引用技术的时候一定要注意同时载入和移出的物体模型不要太多,并且,这些物体模型的面片数和顶点数越少越好。
四、结束语
通过虚拟校园图书馆漫游系统的制作,以Quest3D引擎为交互平台,讨论了纹理映射、实例化建模技术、多细节层次和外部引用技术在虚拟场景优化中的应用,并总结和分析了实例化建模技术、多细节层次和外部引用技术的优点和缺点。
[1]毕晓佳,苗放,叶成名.基于数字地球平台的三维虚拟数字校园建设[J].地理空间信息,2008.
[2]王永梅,舒娱琴,胡伟平.虚拟华师校园网三维模型的构建[J].华南师范大学学报(自然科学版),2007.
[3]曹彤.虚拟博物馆的三维场景构造及交互漫游实现[J].计算机工程与设计,2007.
[4]桂伟峰,叶海智.基于VRML和JAVA的虚拟实验研究[D].河南:河南师范大学,2007.
[5]陆畅,孙俊,逢守文.船舶机舱虚拟现实仿真系统的实现方法[J].系统仿真学报,2007.
[6]潘吉.三维“数字苏州”建设与应用前景[J].中国建设信息,2009.
[7]吴宇飞,侯文君.多用户虚拟北邮校园漫游系统的研究与开发[D].北京:北京邮电大学,2006.
[8]翟丽平.基于MultiGen的虚拟现实三维建模技术研究与实现[D].重庆:重庆大学,2005.
(编辑:杨馥红)
G250.76
B
1673-8454(2011)03-0076-04