APP下载

基于X3D的虚拟场景设计方法

2013-12-06帆,兰

测绘工程 2013年4期
关键词:浏览者立体虚拟现实

杨 帆,兰 岚

(辽宁工程技术大学 测绘与地理科学学院,辽宁 阜新 123000)

20世纪80年代,Jaron Lanier提出“虚拟现实”(Virtual Reality,VR)的观点,目的在于建立一种新的用户界面,使用户可以置身于计算机所表示的三维空间资料库环境中,创造出一种“亲临其境”的感觉。虚拟现实以其多感知性、浸没感、交互性以及构想性等特征在房产开发、城市规划、工业仿真、医学等诸多方面均得到广泛的应用,已成为21世纪重要的发展学科及重要技术之一。

X3D是由Web3D联盟于1998年年底提出的,是一种专为万维网而设计的三维图像标记语言,是下一代具扩展性三维图形规范,并且延伸了VRML97功能。X3D是互联网3D图形国际通用软件标准,定义了如何在多媒体中整合基于网络传播的交互三维内容。为满足工业、农业、娱乐、虚拟社区等方面的内容提供了3D图形、2D图形、动画设计、用户交互、导航功能和脚本等新的特性。

目前,X3D在三维建模[1]、仿真[2]、虚拟场景漫游系统[3](虚拟校园[4]、虚拟图书馆等[5])、交互技术[6]等方面研究较多,也相对成熟。本文主要介绍一种以X3D三维图像标记语言和3DSMax建模工具为基础的,用来进行场景虚拟实现的设计方法。

1 X3D虚拟现实技术概述

X3D是XML和VRML97的结合,将XML的标记式语法定义为三维图形的标记语言,规范使用可扩展标记语言XML表达对VRML几何造型和实体行为的描述能力,其系统由内核、VRML97特性集、应用程序接口和扩展集4部分组成。

X3D坐标系统采用三维立体的笛卡尔坐标系,坐标设置方式如图1所示。在笛卡尔坐标系中,用米作为场景坐标系统的测量单位,其他坐标系统根据基准的场景坐标系统的变换确定坐标方位。X3D三维立体空间物体造型的定位,依靠X3D立体空间坐标系实现。其中x,y,z轴为每个空间物体造型定义了一个坐标系。从浏览者的角度来说,在三维立体空间中,x轴的正方向指向右边,y轴的正方向指向正上方,z轴的正方向指向前方。空间物体的造型在该坐标系中的位置由相对该坐标原点的三维坐标来确定。

图1 坐标设置方式

利用三维立体空间的笛卡尔坐标系统,模型的变换使用组件(Grouping component)中的Transform节点和Billboard节点类进行坐标定位;取景器变换,使用导航组件Navigation component中的Viewpoint节点改变观察视点角度和距离。

X3D开发环境包括记事本编辑器和X3D-Edit专用编辑器,是用来编写X3D源程序代码的有效开发工具,本文使用笔记本编辑器编写。

2 应用实例

2.1 技术流程

虚拟场景的设计主要包括建模、场景优化设计和用户交互3个部分,具体流程如图2所示。

图2 虚拟场景流程

2.2 虚拟现实三维场景建模

本文中三维场景建模主要采用3DSMax软件制作。

2.2.1 地面的建立

将CAD中的地面图导入3DSMax中,利用创建面板下的图形中的线形工具对地面图进行描线并挤出。

2.2.2 房屋模型的构建

本文中建筑模型的构建主要是反复采用线、矩形、样条线和挤出等命令,首先对建筑物实体进行轮廓的构建,用线条和矩形等命令构造,然后编辑样条线赋予墙体一定的宽度,再通过挤压命令赋予建筑物高度。墙体完成后可根据建筑物的样式确定窗户、门等的位置并进行布尔运算。根据建筑物的外观进行贴图,并渲染。最后将建筑物进行贴图后房屋模型图如图3所示,建筑物的部分代码如下:

图3 贴图后建筑物模型

DEF Plane01Transform{

translation-0.7301 8 0.708

children[

Shape{

appearance Appearance{

material Material{

diffuseColor 0.5882 0.5882 0.5882

ambientIntensity 1.0

specularColor 0 0 0

shininess 0.145

transparency 0}

}}

geometry DEF Plane01-FACES Indexed-

FaceSet{

ccw TRUE solid TRUE

coord DEF Plane01-COORD Coordinate

{point[

-7.5 0 5,7.5 0 5,-7.5 0-5,7.5 0-5]

texCoord DEF Plane01-TEXCOORD

TextureCoordinate{point[

00,1 0,00,1 0,00,1 0,0 1,1 1]

]}

2.2.3 植被层模型的构建

2.2.3.1 树木层模型的构建

本文中树的建模采用十字造型法,前视图和左视图上分别创建一个长方形,并使2个长方形夹角成90°放置,然后进行贴图,树的图片格式可以是3DSMax中所包含的任何一种类型,如:jpg、png、tif等,其中选择png格式为最佳,这样可以省去制作alpha通道这一步骤,便于使图像透明化,这种方式制作起来相对比较容易。

2.2.3.2 草底层模型的构建

草底层模型的构建主要在3DSMax中建立平面模型,来代替复杂的形体,然后在模型表面贴入纹理,通过纹理表现绿地层,这种方法叫做采用网状建模法,这样可以在虚拟空间中比较真实地反映绿地层。

2.2.4 交通层模型的构建

交通层的构建和草底层大体相似,道路层主要是由路面、马路原石组成,形式较为单一,在3DSMax中路面的制作参照绿地层,即在模型表面贴入纹理,通过纹理表现路面,马路原石的制作可以通过轮廓和挤压功能给马路沿线赋予高度和宽度来实现,这样做可以使马路原石之间连接的更紧密,减少误差。

2.2.5 人物模型的构建

人物模型的构建采用的是广告牌技术(Bill-Board),Billboard节点是一个群节点,可以在全域坐标系之下创建一个新的坐标系。选定一个旋转轴后,无论浏览者如何行走或旋转这个节点下的子节点所构成的虚拟对象的正面会永远面对浏览者。它是一种用于节省时间、模型数量小的技术,在实际应用中,路边的人物模型一般采用这种技术构建。

模型建立后,按需要将同一图层的模型合并并导出.wrl格式。为了减少数据量,在建模时应尽量让面的数接近最少;在编辑模型时,应删除重叠面、看不见的面和相交面。导出的.wrl文件可以使用VrmlPad将导出的文件进行另存以压缩数据存储量。这些方法可以减少数据存储量,便于加快显示速度。

2.3 场景的优化设计

X3D支持.wrl文件,场景的优化设计主要是将建模后的房屋、植被、道路等模型导出为*.wrl格式的文件,之后使用inline节点将模型连接到一个文档中,并设置背景、灯光、视点,使之更为真实。

2.3.1 天空、地面和灯光的设置

X3D的虚拟空间背景分为天空背景和地面背景两部分,两部分间以地平线分割;而地平线则位于空间垂直方向上有原始坐标系XOZ平面向无穷远处延伸后与空间背景的相接处;XOZ平面以上的部分定义为天空背景,XOZ平面以下的部分定义为地面背景。

设置天空地面主要用background节点,可以通过对背景设定天空和地面角及天空和地面颜色来产生天空和地面效果,也可以在空间背景上添加背景图片,使用background节点所生成的空间背景可以带给用户相当程度的立体层次感。背景和灯光的设置代码如下:

<Background DEF="skycolor"groundColor=′0 0.6 0′

skyAngle=′0 0′skyColor=′0.3 0.4 0.5′

backUrl="image/sky_back.jpg"frontUrl="image/sky_front.jpg"

leftUrl="image/sky_left.jpg"rightUrl="image/sky_right.jpg"

topUrl="image/sky_top.jpg"

bottomUrl"image/sky_bottom.jpg"/>

<DirectionalLight direction="1 0 0"/>

……<!--对六个方向进行灯光设置

-->

<SpotLight intensity="1"color="0.9804 0.9725 0.902"location="-3985 9757 8019"

direction="0.4075-0.6483-0.6432"

cutOffAngle="0.7854"

beamWidth="0.7505"

on="TRUE"

radius="1.732e+030"/>

<PointLight intensity="1"

color="1 1 1"

location="2143 3467-1595"

on="TRUE"

radius="1.732e+030"/>

……<!--点光源设置-->

2.3.2 视点的设置

X3D视点控制使用viewpoint节点。Viewpoint节点用来设置浏览者在虚拟空间中的观察位置、空间朝向以及视野范围等参数。

Viewpoint节点代码如下:

<Viewpoint position="1823 97.47-2822"

orientation="-0.05157-0.9932-0.1045-4.053"

field0fView="0.6024"description="manyou"/>

此段代码描述了视点在场景中的空间位置、视角大小和视角名字,除此之外还可以定义视角朝向、是否跳跃等描述。

2.3.3 导航设置

虚拟场景中,用NavigationInfo导航信息节点作为供浏览者在虚拟世界的替身,并可使用替身在虚拟世界中移动、行走或飞行,Navigationinfo节点代码如下:

<NavigationInfo headlight="TRUE"

type="WALK"avatarSize="0.5 3 5"/>

此段代码描述主要设置了以行走的方式浏览虚拟场景以及浏览者替身的尺寸。

X3D中场景效果节点的设计除了以上所阐述的之外,用户还可以设置空间大气效果节点、音响效果节点等等,经过建模、贴图、优化设计等步骤后,通过BS Contact播放器进行局部、全景的浏览,场景优化后的效果如图4所示。

图4 场景优化后的效果

2.4 用户交互

用户交互功能是X3D的一个重要特性,利用虚拟现实硬件设备和鼠标在三维立体空间中对虚拟物体和造型进行选取和退拽,产生身临其境的动态感知交互效果[7]。X3D场景和用户的交互由静态或动态两种方式体现,静态方式主要是通过X3D中提供的交互节点如触摸传感器、亲近度传感器等节点,然后通过Route节点连接节点之间的域以传递事件实现的,静态方式只能实现一些简单的交互,例如灯和门的开关等。动态方式则是通过一段外部程序逻辑去决定事件的产生,可以通过内部Script节点和外部编程接口(EAI)两种方式。利用X3D中的Script脚本节点定义了一个包含程序脚本节点的域、事件出口和事件入口及描述了用户自定义制作的检测器和插补器所做的事情,Script节点可以让场景有程序化的行为,用field(域)标签定义脚本的界面,脚本语言可选择ECMAScript/JavaScript或Java语言。EAI则定义了与外部HTML页面中的Applet通信的接口。用户交互功能可以使用户实时地通过网络创建虚拟世界,更为方便快捷。

图5中自动门的交互是采用TouchSensor触摸传感器节点、TimeSensor时间传感器节点以及PositionInterpolator位置插补器节点,通过Route路由连接节点之间的域实现交互,当鼠标点击门时,通过平移产生开关效果。

图5 自动门的交互

Group{

children[

构建门模型

DEF Touch TouchSensor{…}

DEF Time TimeSensor{…}

DEF zy PositionInterpolator{

key[0,0.3,0.7,1]

keyValue[0 0.025 0,-0.5 0.025 0,-0.5 0.025 0,0 0.025 0

DEF yy PositionInterpolator{…}

ROUTE Touch.isActive TO Time.enabled

ROUTE Touch.touchTime TO Time.startTime ROUTE Time.fraction_changed TO zy.set_fraction ROUTE Time.fraction_changed TO yy.set_fraction ROUTE zy.value_changed TO ldoor.set_translation ROUTE yy.value_changed TO rdoor.set_translation

3 结束语

虚拟现实X3D网络三维立体设计的产生具有划时代的意义。本文主要介绍利用3DSMAX建模软件以及X3D三维图像标记语言实现场景建立与优化的方法,具体描述了各层模型的建立、如何减少数据存储量,背景、视点和导航节点的设置,介绍了用户交互的方式,达到了浏览的效果。用户交互建立了场景与用户之间的一种交流方式,用户可以实时的通过网页进行操作,节省时间,X3D的这一特点也是今后研究的重点。

[1]黄锐,谭佳佳.基于X3D的虚拟场景建模方法[J].内蒙古大学学报:自然科学版,2009,40(6):738-741.

[2]李妮,彭晓源,龚光红.基于X3D的仿真可视化支撑服务研究 与 实 现[J].系 统 仿 真 学 报,2009,21(22):7195-7198.

[3]王方雄,李洋,韩飞.基于X3D的虚拟三维场景漫游系统设计与实现[J].地理空间信息,2009,7(3):21-23.

[4]张金镝.X3D虚拟校园系统开发与设计[D].吉林:吉林大学,2011:1-66.

[5]何曲,杨洁,张红燕.基于X3D的三维虚拟图书馆的构建[J].电脑知识与技术,2010,6(16):4510-4513.

[6]李海庆,殷国富,胡瑞飞.基于X3D的虚拟场景交互架构的实现方法研究[J].系统 仿真学报,2006,18(2):383-385,393.

[7]张金钊,张金锐,张金镝,等.X3D三维立体网页设计虚拟现实立体动画游戏程序设计[M].北京:中国水利水电出版社,2009.

[8]吴义娟.3ds max 8建筑设计高级建模宝典[M].北京:清华大学出版社,2007.

[9]张永君.3ds max7建筑外观表现技法实例详解[M].北京:人民邮电出版社,2005.

[10]袁紊玉,李晓鹏,徐正坤.3ds max 7&Photoshop CS建筑效果图制作风暴[M].北京:红旗出版社,2005.

猜你喜欢

浏览者立体虚拟现实
基于视觉传达的公共空间色彩导视系统设计
浅析网页设计中色彩的运用
念个立体咒
新媒体界面设计中视觉传达的效率问题研究
立体登陆
REALITY BITES
Pop—Up Books立体书来了
风口上的虚拟现实
虚拟现实技术向科幻小说借灵感
浅析教学网站中视觉传达设计的体现