基于VRML的虚拟场景的设计与实现
- 格式:pdf
- 大小:149.56 KB
- 文档页数:3
基于VRML的虚拟场景的设计与实现
陈华陈福民
(同济大学计算中 ,上海200092)
E—inall:hualluachen@21cn.eom
摘要文章结合VRML的功能,具体分析了基于VRML的三雏交互式虚拟场蒂设计的关键技术,并以虚拟演播室系
统为应用背景,培出了用VRML开发三堆交互式虚拟场景的整体解决方案
关键词VRMI 事件EAI虚拟演樯室
文章编号100 8331(2002)06-0127—03 文献标识码A 中国分类号TP302
The Design and Implementation of VRnL-Based Virtual Scene
Chen Hua Chen Fumin
(Computer Center of Ton ̄i University,Shanghai 200092)
Abstract;In this paper,combined wl山the function of VRML.the key technology of developing VRML—Ba..ed 3D in—
te-Fdetlve scene is analyzed in detail Furthermore,hased on the apphcation in Visual Stuclio Sys ̄m,a whole resolution of
developing 3D intemehve virtual scene by VRML is presented
Keywords:VRM1 .Event,EAI,Virtual Studio
l 引言
新一代的Web语言VRML(Virtual Reality Modeling Lan—
guage1,是一个三维造型和渲染的图形描述性语言,它的描述
构建r通过争球Intemet和wI’rld Wide Web上的超链接而
形成的虚拟世界。作为分布式、多媒体集成.平台无关,实时町
交瓦的一维造型和渲染的开发工具,VRML的应用范围不仅仅
在诸如导游导购等同络领域,而 在本地主机 运行时.由于
小再至网络传输速率的限制,运行效果更好,如3D游戏、多蝶
体制作 教学演示系统、实时训练系统、仿真系统等。由于
VRML综台r现有三维软件的景象描述语言的优点.因此利用
VHMI 将为虚拟场景的建立提供极大的便利。
2用VRML灵活高效地创建三维场景
VRML的场景图由一系列包古对象的形状和描述信息的
点构成。节点足组成3D场景的基本元素。VRML由6o多种
娄型的节点组成,每个节点用米完成某一特殊的功能 节点包
括一系列的域.这些域用来保存定义该功能所需参数的数值,
例如Cone节点定义如F: Cone{field SlaT1Qat bottomRadius 1
field SFl at Height 2I
其巾域‘bottomRadius 和“h 小t”分别定义 倜锥底而的
半径f】m)和高度(2m)。VRMI 场景图具有清晰的“场景图层
扶 ,类似于一棵倒立的树 所谓“场景罔层次 是指父节点与子
节 之间的关系。例如,要求在空间坐标(1,1.I)显币红色的嘲 锥,其场嚣图层次如图1所示 由于缺省状态下,VRML中的实
体以空间坐标系的(0,0,01为中 位置使用Transform节点可
实 平移.然后定义Shape子节 束描述实体的特征,宴倬的
持征义由Appearance子节点来描述实体的外观以及Cone子 节 来描述实体的几何形状 宴体的外观卫可用materlal子节
点米描述实体的颜色 通过上述的场景冈层次就可以定义~十 红色的圆锥并在其Trmls ̄rm父节点的作用下移动到目标位置
(1,1,1)。
图I VRMI_场景图层次示例
采用符合VRML规范的字符对节点进行描述,然后将这
些节点按照特定的场景图层次进行组台,形成ASCII文本格式
的VRML源文件( .wr1),并被VRML测览器解释执行,从而在
浏览器中显示所构造的3D场景 相比而言用典型的程序语
言最_十的方法(如OpenG1 )建立3D空间则要复杂许多 因此, 可以和用VRML文件灵活高效地构建三维虚拟场景。
3 用VRML建立场景的实时交互
VRML允许用户的行为能够实时作用于场景, 户不仅可
以在场景中随意漫步,甚至可“随时启动一个“事件 ,比如:碰
到了 个物体,发出了巨大的碰撞声;遇到了一个fq,亲自把它
打开,旋转灯钮来控制灯光的亮度等等 这种^机交互是建立
在事件基础上的。事件(Event)是包含一些数据的信包,它被用
来作为状态政变的触发器 产生事件的最初原因是环境变化、 用户交互或时问推移。场景节点通过事件八几(eventIn)接收事
作者简介:陈华.女,博士研究生 研究方向:网络多媒体以及虚拟现实拄术 陈福民,男,博士导师,教授,研究方向:高速通信及网络多媒体拄术
计算机工程与应用2002 6 127
维普资讯 http://www.cqvip.com 件,通过事件出口(eventOut)发出事件,一个节点的事件出口和
另一节点的事件凡u之间用于传递事件的通路称为路由
(Route).用此.通过路由将节点联系成为事件体系是使VRML 具有动奄交互能力的机制(见图2)
^事件 5
囤2 VRML的交互机}5I
3 l使用感应器节点的交互
VRMI 定义了9种感应器(sensorj节氟类 ,其中4种感
直环境变化(如时间推移),称为环境感应器,另外5种感应用
操纵指点 殳备(如鼠标)的动作,称为指点设备感应器一感腕
器感应到的事件一 发生,则由执彳亍引擎根据路由指示向目标
发送,并被目标节 处理,这种处理可能改变 点状态、产
牛其它事件,或者修改场景图结构,从而为场景提供了动志性
例如,为了使虚拟场景中的某个对象对鼠标的点取作山反应,
町以设1I感应器节 :F而以州户鼠标单击打开虚拟场景中的
-盏灯为倒:
DEF TS TouchSen ̄r{) 定卫个“接触感应器”节点 DEF lamp Dansfo ̄r,{-l_…} 定义被感应时象“#l”的节点 DEF lamplight DireetionalLight(#定义光源节烹
∞l0r【【0 光标l忭用r场景的颤色 帅FALSE 光楫是否作用于场帚,初值设为’芰闭光源
HOUTE TS i ̄ctive TO lamplight l_0Ⅱ#建立感应器输出到场
景节点改变的路由 由于“灯 节 被定义为感应器对象,占一FI被鼠标点取,
则激活该 接触感应器 (糠节点)发出“被点取 的消息
(eventOuts),然后按照路由指示.发送“灯亮”的消息(eventln. ̄) 到光源节点(甘标节点J,完成用户“升灯”这一与场景之间交
的动作。 3.2使用Script节点的交互
依靠感应器所能感应的事件来提供的交互行为毕竟有限,
为了支持更多事什的处理.VRML定义丁脚本节点Script。
Script节点包含一组利甩脚本描述语言(如V rrrdScHpt,
JavaScript和Java)编写的函数。Script节电收到事件后将执行
相应函数,函数能通过常规的路由机制发送事件.或直接向
Script节 指向的节点发送事件。脚本逆可 动态地增加或删
除路由,从而修改事件路由的拓扑结构。对于上述用户“开灯”
的交互.设计如下: DEF'IS TouchSen ̄r{}#定义一十”接触感应器”节点 DEF】amp Frans ̄rmfl_ } 定卫被感应对象”灯 的节点 DEF]ampllgh,肼 d;0n Li nIf#定义光潭节点 color I 1 0 光源作用于场景的颜色 On FALSE 光源是舌作用于场帚,初值设为 关闭光源”
l28 2o02.6计算机工程与应用 DEF ch Pe Script{#定义脚奉节点 eventOut SFB ̄I[ampset 定义执行脚事后的拄出事件 eventln SPTime totoueh 定义崩动脚牟的^事件 url”v ̄nlscrip!: 定义脚本的描述语 function totoueh() 定义脚奉中的执行函数 [ampset=TRUE;} #设定发出事件
I ̄OUTE TStcmchl'iale TO chmlgeIotouch 醴定感垃器触发脚车 执行的路由 ROUTE changelampset TO Iampllgh,set_on#世定脚车输出到场 景节点改耍的路由 用户鼠标点取 灯”节点.激活感应器节点盎出 件.并由
感庞时间触发r脚率的执行。脚l车中的执行函数使脚本输出 “打l什光源 所需的参数值.并将此事件发送到场景中的光蔼
点.从而建立r由Script节点构造的用』 与场最问的交互
3 3使用VRML EAl方法
VRMI 内部定义的感应器节点H能感应特定的事件, Script节点也只能设计按照预定规则改变场景 点数据的甬
数,然后将此甬数输出路由至目标节 由 实现外音【;一直 程 序的数据与VRM1 文件的节 数据进行交互 则需要采用
VRM1 的1 ^I(External Authoring Interface外部程序接口)方 }土 具体 言.谚力法依赖于一个与VRML浏览器 联系的
Java包的支持 饿Java包南Vrttd.external V rrtd.extema1.tield
Vml_externa1.exception三部分组戚.这 包装的娄提供r以下
一 种能力: (1)控制VRML浏览器的工作状态
l21发连事件到 ̄.q:tML场景节氨的事件凡E
1])接收来自VRMI 场景节点事件出u发出的事件
以带有VRMI 插件(如Cosmoplay2 1)的htternet Explorer
4 0的VRMI.浏览器为例,为r宴现用 从外郭应用程序束控
制 开幻”的交互.其执行函数如下: funetJon lUFntln()11设定执行交 的函数 { r l ̄npset=TRUE;//设定” 亮’的参数值 Ihel3rowser=Bn)wser eIH…er(1;//获取VRML蒯览器【场吊l对象 myobject=theb ̄wsergetNode( lampligh,”);/ 获取谈场景中的光
源 节点对象 myEvent=myobject.getEventln(" ̄1一on");//设定场景中藏节点内准
备接懂事件的域 叫Event setValue([ampset):}//设定政在场景中谊节点的事件 通过vRML EAI方浊.可以将VHML场景和其中的节点
视为对象.并以事件为基础,实现VRM1 场景与外部应用程序
之间的数据传递 当然,不同的VRML浏览器须采Hj不同的方
法来实现VRML EAI。具体情况需要参见该浏览器相麻的嚏明
文档。 乜之.事件为节点提供r接收外界消邑以厦向外界发送消
息的能力,因而基于事件的交互构成 VRML的交互场景,此 外,VRML的图形渲染是“实时”的,通过在VRML文件中接受
随时间而改变的一系列节点数据,就能在VRML浏览器中显
示实时交互的场景