基于VRML的三维虚拟场景的构建与优化

2009-01-06 04:55雒伟群
数字技术与应用 2009年11期
关键词:虚拟现实优化

[摘 要]本文对基于VRML的虚拟场景的设计与实现进行了研究,并从减少文件长度,提高渲染速度两方面提出了优化场景的方法。

[关键词]虚拟现实 虚拟场景 优化

[中图分类号]TP39[文献标识码]A[文章编号]1007-9416(2009)11-0036-02

The Construction and Optimization of a Three-Dimensional Virtual Scene Based on VRML

LUO Wei-Qun

(Information engineering college, Tibet Nationalities Institute, Shanxi 712082)

[Abstract] There has conducted the research of the design and implementation of a virtual scene based on VRML, and proposed some optimizations which reduced file length and improved the rendering speed.

[Keywords] virtual reality; virtual scene; optimization

随着网络技术的飞速发展,越来越多基于VRML的虚拟作品出现在互联网络中。对于规则场景利用VRML的对象建模较为容易,且定义虚拟场景的对象文件短小精悍,易于阅读。但随着虚拟场景复杂性的提高和应用的日渐深入,VRML在展现虚拟场景方面的不足也逐渐暴露出来,诸如程序代码庞大,视点位置不理想,交互性不足,稳定性和一致性不能满足某些特殊应用需求等问题。所以,开展基于VRML的虚拟场景的优化分析非常必要。

1 VRML技术

VRML(Virtual Reality Modeling Language 虚拟现实建模语言)是一种用来描述交互或3D对象和境界的文件格式。从VRML的定义可以看出,VRML设计初衷是想成为集成3D图形和多媒体的通用交换格式,而这一点已经成为现实。VRML文件格式成为在AUTO CAD等三维工业标准进行共享的唯一通用文件格式而得到了广泛的应用。

VRML可以作为一种形式化描述语言,对于采用模糊自然语言表达的系统通过建模,从而实现对系统确切的、通用的形式化描述。经过形式化后的系统模型即可直接用于计算机程序设计和编程。VRML同时可以作为一种编程工具,实现包括场景图、用户交互以及后台计算的程序,构造一个具有完整功能的虚拟现实系统。

VRML的应用平台是Internet和本地客户系统。这种应用极大地扩张了VRML的应用,如工程与科学、可视化计算、多媒体、共享式VR系统以及教育等。

2 三维虚拟场景的设计

本文以数字电路虚拟实验室为原型,通过建立一个虚拟场景对整个结构进行分析。

2.1 大型场景的树形结构组织

对象的几何建模就是用来描述对象内部固有的几何性质的抽象模型,因此场景中对象模型的组织结构对虚拟实验系统的运行质量起着关键性的作用,合理的模型组织结构是必须的,并且实验者需要与虚拟仪器进行交互操作,因此应该根据虚拟实验室中每个实体的几何空间位置,以及模型间的结构关系,确定虚拟场景中实体模型的树状层次结构。这种层次结构使我们可以使用自顶向下的方法将一个模型对象分解,也可以使用自底向上的构造方法重构一个模型对象,把所有对象用双亲、孩子和兄弟划分成最有效的树结构。这种树形结构不仅提供了一种简便的自然的分割复杂物体的方法,而且对模型的修改也十分有利。下图为虚拟场景的层次模型(简要描述了虚拟场景的层次结构)。

如图1所示。

对场景进行层次结构划分后,可以方便地进行实体模型的组织和管理,而实体模型内部的层次结构划分能将复杂模型自顶向下分解成若干基本单元,明确模型构建目标,大大减轻建模的工作量。

2.2 子场景建模

所谓几何建模,是指虚拟环境中可见的3D物体空间形状以及各种附属性质的描述。一般有两种方法可以建造虚拟环境中各种场景与对象的三维模型。

(1)采用三维建模软件手工绘制三维模型。这需要精通各种绘画技法和熟练掌握三维建模软件的使用方法与技巧。好莱坞电影特技往往采用这种方法实现的。这种方法需要用户承担高额的人工费用。三维建模软件一般选择3DS MAX,优点就是省时省力,大量的坐标计算交由建模软件完成,设计者只需按照自己的意愿进行设计即可。对于不规则对象模型,可考虑使用该方法进行。缺点就是对物体描述的精度较高,使得转换后的VRML文件中存在大量的垃圾代码,需要优化处理。对于虚拟实验室中的面包板、数字电路芯片等我们采用该方法。

(2)使用建模软件实现自动三维。一般直接利用VRML定义虚拟实验室场景中的对象,包括三维模型、纹理、材质、色彩,以及对象几何体的平移、旋转、缩放等。这种方法的优点是对于规则场景对象建模较为容易,且定义虚拟场景的对象文件短小精悍,易于阅读。缺点就是定义的虚拟场景对象较为复杂时, 要书写大量的代码,并且要进行大量的坐标运算,非常繁琐。对于虚拟实验室场景中的实验台、地板、天花板、墙等采用该方法建立。

3 优化设计

在创建复杂的VRML场景时,除了创建大量的模型外,还必须考虑两件事,VRML文件的长度和场景的渲染速度。VRML文件的大小在两方面影响到场景,一方面是服务器与浏览器之间的传输时间;另一方面是将场景载入浏览器的时间。如果这些时间过长,浏览者将无法忍受。渲染的速度则直接影响浏览者浏览的速度,速度过低将使场景失去真实感。所以在创建场景的同时必须要考虑对场景的优化。

3.1 减少文件传输数据量

由3DS MAX输出的VRML文件有很多代码都是重复的,从而导致文件过大。比如面包板对应的VRML文件有近4万多行,达到2MB,如果直接将其加到实验室场景中将使得程序运行速度极其缓慢,所以必需对于建立的三维模型进行优化。

以下是一些精简文件大小的常用方法:

(1)利用DEF、USE和PROTO对实例进行重用

在场景中经常有部分节点有着相同或相近的特点,它们的外形相同,仅是位置上有差别,我们可以通过使用DEF/USE结构,先用DEF定义一个节点副本,然后多次利用USE引用,这种引用的效果就是产生该节点的多个副本。与DEF、USE相比,PROTO节点(原型结点)的使用更需要对场景进行组织,在场景中存在一些节点,它们有相同的功能,但有一些属性上的区别,如颜色、纹理等,这时便可通过原型设计来优化。利用DEF、USE和PROTO对实例进行重用可以达到减小文件长度,节约内存资源的效果。

例如,在面包板模型中,输入输出引线插口有128个,它们具有相同的造型,只是位置不同而已,3DS MAX在输出VRML文件时,对于这128个插口分别使用索引面集(IndexedFaceSet)办法生成模型,造成大量代码重复,可先将基本造型定义成原型节点Tube,然后通过在适当位置采用实例化Tube的办法可将大量的重复代码优化。

对于14脚芯片插座、16脚芯片插座、20脚芯片插座中的管脚重复代码也可进行优化,先对一个管脚节点用DEF定义成Tube节点,对于其它重复的代码用USE引用Tube节点即可。

(2)消除空白间隔

由于VRML文件是按文本方式保存的,也就是说所有的空行、空格都被保存下来,这样便增加了文件的长度,但浏览器在解释VRML程序时,并不需要这些空行、空格,所以这些不必要的空格应该删除。但并不是所有的空格都应删除,空格能保证文件的可读性。另外,必要的注释也应保留。

(3)数据的优化

当场景达到一定的规模,其间的数据量是相当可观的,数据的存储与运算也变得十分繁重,因此有必要对数据进行优化。一种方法是对数据取整。可以认为一个数据在取整后误差小于1%,那么它不会影响到场景的效果。另一种方法是对数据固定精度,多余的部分将被删除。精度的确定取决于场景与模型的本身,以不影响效果为准。数据的优化在使用导入模型时显得非常重要,一般的导入工具经常产生过高的精度,使数据过于庞大,像0.0000000000435这种数据许多时候都可以用0来代替。

(4)利用VRMLPAD压缩VRML文件

由于VRML文件是以文本的方式保存,它的压缩潜力是比较大的,目前大多数浏览器都支持直接压缩的VRML文件。通过VRMLPAD编辑环境主菜单File下的Publish命令,就可以把一般的VRML文件进行压缩至原来1/10左右,这将极大地减少网络传输时间。

3.2 提高渲染速度

当你进入一个复杂的3D场景时,随着里面的景物的增多,会明显地感到浏览的速度减慢,太慢时会严重影响场景的真实性与交互性。一般来说,如果浏览器者通过浏览器每秒看到的帧数少于10帧,就会觉得不自然。所以必须保证场景的渲染速度。可以通过以下技巧的使用,在不损失效果的同时,提高渲染的速度。

(1)减少多边形的数目

增加模型的多边形数目可以使几何体更具真实感,但不能无限制地增加多边形的数目,一旦多边形数目超过机器的运算能力,浏览器的画面将停滞。所以在创建模型时,必须减少模型的多边形数目。选择模型的构成节点时,尽量用Box、Sphere、Cone、Cyclinder这些规则几何节点。使用IndexedFaceSet、IndexedLineSet、Extrusion这些复杂节点时,应尽量减少顶点个数。

一般来说,模型的细节程度是影响其逼真性的重要因素之一。细节程度越高,模型越逼真。但是,建立模型的目的是为了给虚拟现实系统创造一个虚拟环境,并在其中实现交互等特定任务。因此建立模型时还需要考虑到整个系统的综合性能。如果在建模时过分强调细节,对于所有结构和表面特征都加以实现,而忽略了场景整体结构的优化设计,不仅会使工作量骤然增大,而且可能导致整个系统的运行速度下降,性能降低。因此,在建模过程中一定要有整体观念,意识到模型细节和系统性能之间的相互制约性,不可盲目追求真实而无限细化模型。在虚拟实验室系统中,可只将一些重要实验仪器进行细致建模,通过采用纹理映射技术来尽量避免细节模型的大量产生。

(2)光源的使用

光源对增强明暗效果有很大帮助,但过多使用光源将带来大量的运算量。光源的运算量各不相同,DirectionLight、PointLight、SpotLight运算量依次增加。在同一个场景中,不应使用过多的光源。一般来说,DirectionLight不要超过8个,PointLignt、SpotLight不要多于3个。光源的作用范围也要进行控制,如在Transform内部的光源就只对内部的几何节点产生效果。如果只对个别物体产生光照,尽量使用局部光源,避免使用全局光源。对于PointLight和SpotLight来说,可以减少光源的作用范围(radium)来减少运算。

(3)充分利用纹理

几何体要产生逼真的效果,很大程度上依赖于纹理的使用,因此在一个场景中通常会用到多处纹理。但如果纹理使用不当,也会给系统带来很大的负担。

在使用纹理时尽量使用简单纹理。首先考虑使用单元素纹理,单元素纹理只有亮度的影响,0xFF表示亮度最大,0x00表示全黑。通过单元素纹理与Material中的diffuseColor配合使用,能产生很好的效果,同时因为是单元素纹理,浏览器处理起来十分快。然后考虑使用小块的纹理。纹理是可以不断延伸与重复的,所以尽量使用小一点的纹理图,例如构成实验室场景中的地板,只要很小一块纹理图,再通过在各个方向上的重复便可铺满整个地面,这与使用大纹理图产生的效果是一样的。

4 结语

虚拟现实作为一门新兴的、发展中的技术,潜力是巨大的。本文介绍了构建虚拟场景的方法,并针对虚拟现实系统具有的数据量大问题,提出了一些优化方法。应用这些方法建立的电子虚拟实验室取到了较好的效果。对于建立其他场景构建,有一定的示范作用。

[参考文献]

[1] 雒伟群.基于VRML的交互式虚拟实验室的研究与实现[D].天津大学硕士论文,2004.

[2] 衣李娜,何丕廉,雒伟群.基于VRML的虚拟实验室设计方法 [J].曲阜师范大学学报,2005年10月第31卷第4期,P74-76.

[3] 衣李娜,雒伟群.基于VRML的虚拟实验室交互控制方法研究[J].微处理机,2006年8月第四期,P109-114.

[4] 韩定定.电子线路虚拟实验室的Java实现[J]计算机工程,2006年11月第32卷第21期,P264 -266.

[5] 李晓霞.基于VRML的交互式虚拟场景设计及其优化.[J]太原师范学院学报,2007年6月第6卷第2期,P61-66.

猜你喜欢
虚拟现实优化
超限高层建筑结构设计与优化思考
一道优化题的几何解法
由“形”启“数”优化运算——以2021年解析几何高考题为例
论虚拟现实艺术的“沉浸”
REALITY BITES
虚拟现实技术向科幻小说借灵感
虚拟现实:另一个真实世界
浅谈虚拟现实