APP下载

VRML协同虚拟现实系统的研究与应用

2016-02-27许爱军

计算机技术与发展 2016年6期
关键词:虚拟环境虚拟现实物体

许爱军

(广州铁路职业技术学院,广东 广州 510430)

VRML协同虚拟现实系统的研究与应用

许爱军

(广州铁路职业技术学院,广东 广州 510430)

协同虚拟现实系统是在分布式虚拟环境基础上发展起来的一种智慧环境,在情景创设、协同工作、高交互性和实时性等方面具有明显优势。在梳理协同虚拟现实的定义与功能、模型与分类的基础上,研究了协同虚拟现实的建模技术和模型优化技术,重点探讨了协同感知的实现、用户替身的实现和协同通讯环境的实现方法。为解决多用户操作冲突,研究了采用对象锁和优先级控制法的并发控制技术。结合“协同搬凳”虚拟现实实例,阐述了协同虚拟现实的设计流程和关键技术。测试表明,基于VRML的协同虚拟现实系统能满足低带宽、实时性要求,提出的定时采集和发送数据的方法,满足多用户协同虚拟现实的需要。

虚拟现实;VRML;协同工作;协同并行控制

0 引 言

虚拟现实系统(Virtual Reality System,VRS)是由虚拟世界(环境)和与之发生交互的操作者(人)组成。与VRS相比,协同虚拟现实系统(Collaborative Virtual Reality System,CVRS)更加突出多用户间的“协同”,强调多用户间的“相互感知”,在情景创设、协同工作、高交互性和实时性等方面,具有明显优势。

对CVRS的研究,最初是在分布式虚拟环境的基础上开始的,经历了从概念梳理逐步向应用纵深推进的过程,研究的重点涉及用户替身描述、行为并发控制、多用户感知,以及协同工作的表现形式等方面。目前,CVRS已经广泛应用于生产和生活的诸多领域,如军事、医疗、娱乐、教育等,典型代表有NPSNET-IV系统[1]、DIVE系统[2]等。

VRML是基于Internet的三维虚拟场景描述标准。探讨基于VRML的协同虚拟现实系统的相关概念、实现技术,研究一套具有参考价值的实现方案是非常必要的。

1 协同虚拟现实概述

1.1 定义与功能

CVRS是将协同工作(Computer Supported Collaborative Work,CSCW)技术、虚拟现实技术、人工智能技术、多媒体技术和计算机网络技术等结合在一起,用户在一组互联的虚拟空间中以替身的方式相互协作,实现协同工作。与CSCW结合后,CVRS提供共享的极具真实感的虚拟空间,使人们能够更加自然、协调地与他人进行交互和协同,能打破时空限制,安全可靠,丰富了计算机作为交互和通信工具的职能和作用,已成为一种新型的数字智慧环境[3]。

1.2 模型与分类

由于VRML本身不支持多用户环境所必须的共享行为和环境状态的连续性,无法满足Internet上多用户环境的要求,但它提供了与外部程序(如Java)的接口,使得协同虚拟现实的实现成为可能[4]。基于VRML的协同虚拟现实系统模型如图1所示。

图1 基于VRML的CVRS模型

一般而言,CVRS又可以分为远程协同虚拟现实系统(Remote Collaborative Virtual Reality System,RCVRS)和面向本地的协同虚拟现实系统(Local Collaborative Virtual Reality System,LCVRS)[5]。其中,RCVRS主要面向远程(广域网)实现协同工作,研究的重点涉及DIS(Distributed Interactive Simulation)协议、体系结构、虚拟场景生成算法等,尽可能在降低网络传输数据的前提下实现协同工作。LCVRS主要面向本地(局域网)范围实现协同工作,研究的重点是如何把软硬件装置与CSCW技术相结合,提高协同虚拟环境的真实性和协同工作的高效性。

2 协同虚拟现实的实现技术

2.1 协同虚拟场景设计

虚拟场景设计是实现协同虚拟现实系统的基础。虚拟场景设计的好坏直接关系到协同虚拟现实的逼真度和性能。协同虚拟场景设计的关键问题是如何在保证场景逼真度的前提下尽可能降低模型的复杂度、模型传输过程中的数据量。在实际设计过程中,模型越复杂,逼真度就越高,但模型数据量也越大。所以,协同虚拟环境的设计,往往要在模型的复杂度和系统能够承受的数据量之间取得平衡。

2.1.1 利用VRML原型节点建模

VRML提供了基本几何节点、复杂群节点、场景效果节点、动画节点、动态感知节点等基本节点。但光靠这些基本节点很难满足协同虚拟场景设计的需要。为此,VRML允许设计者自定义节点功能,来扩展建模能力。

VRML为用户提供的自定义节点的功能,就是原型。设计者可以根据需要,利用原型创建一种新的节点类型,通过对节点类型实例化建立新节点。如果想要修改新节点的属性,则可以添加各种域(通过域修改新节点的属性)和事件(包括EventOut和EventIn),用路由(ROUTE)将事件连接起来,实现协同虚拟环境与外界环境的动态交互。利用VRML原型节点建模的优点是建模简单、快捷,但建立的模型较为粗糙,并且只适合建立规则物体的模型,能提供的交互操作比较有限。

2.1.2 利用可视化软件建模

协同虚拟环境是由若干个三维虚拟物体构成的。三维虚拟物体的建立一般包含三维模型结构设计和表面属性配置两个步骤[6]。

对室外楼宇建筑,可以先用VRML可视化工具(如VRMLPad)建立简单的几何模型,然后对各个面拼接纹理来建立模型。对室内物体,可以先用复杂建模工具(如3DS Max)建立物体外围轮廓,然后采用外扩、挤出、拉伸及布尔运算等操作生成简单几何形体的组合,贴图后生成.WRL文件完成模型的建立。对地形和地表物体合成区域的场景模型,可以先将三维地形模型和复杂物体模型导入实时三维数据库生成系统(如Multigen Creator),利用强大的大型地形和三维场景产生器、道路产生器等功能,建立场景层次模型数据库。对有特殊要求的物体(如文物),模型非常复杂且真实度要求很高,也可以采取三维扫描技术获取物体的三维数据信息模型[7]。

2.1.3 三维模型优化技术

VRML是虚拟场境的三维描述格式规范,物体模型最终都以VRML文件形式存储。因此针对VRML的语法特性进行优化是十分必要的。主要优化方法有:重复物体的代码重用、相似物体的原型封装、VRML文件压缩等。

重复物体的代码重用(DEF/USE):在大型虚拟场景中,往往存在大量重复出现的物体,如树木、路灯、垃圾箱、石桌、长凳等。可以先用DEF语句对其节点命名,再通过USE节点引用来获得物体的完整复制,有时需要配合Transform节点对引用的物体进行平移、旋转或缩放等。DEF/USE实例引用技术能大大减少重复代码[8]。

近似物体的原型(Proto)封装:利用原型(Proto)封装机制可以在已定义节点类型的基础上重新定义出新的节点。因此,可以对结构相同但位置和属性(如颜色、纹理、长度等)各异的近似物体,先进行原型定义,然后利用原型构造技术(Proto和Externproto)创建扩展节点,快速构建近似物体,同时减少文件量。

VRML文件压缩:用3DS Max开发的物体模型保存为.WRL文件时会产生大量冗余数据,可以采用VRML Pad提供的压缩功能或专门的压缩工具gzip进行压缩,压缩过的VRML文件(*.wrz格式)体积只有原来的1/3[9],同时也不再是文本文件,在一定程度上增强了场景模型数据的保密性。当然,为了获得更大的压缩潜力,在压缩前需要将必要的注释和空格保留外,其他不必要的空白间隔都予以消除。

2.2 协同感知技术

感知是一切行为的开始。虚拟环境也不例外,实现多用户之间的协同感知,是协同虚拟现实系统的基础。对于协同感知的定义,M.Rounding和S.Greenber将其定义为:取得目前环境之信息,以便其他成员得知其所处的状态,并且据此决定如何进行接下来的工作[10]。

2.2.1 协同感知的实现方法

在协同虚拟环境中,形成感知信息需要经过三个步骤。首先是收集相关信息;然后是把收集到的信息分发给其他客户端;最后是将分发的信息在各个客户端呈现,并更新客户端的状态。当然,在收集、分发和呈现信息时,还涉及信息的选择与过滤问题。因为在协同虚拟现实系统中,不可能也不需要把感知到的信息全部分发,否则会造成信息风暴,严重降低系统性能。

远程指针(Telepointer)是协同虚拟环境中常用的感知方法之一,其基本思想是:利用指针的多光标形式,把协同感知的粒度划分到事件层,把键盘和鼠标事件都发送到其他客户端,从而被他人感知。这样,协同用户就可以知道彼此的位置、移动以及注意力焦点等。通过远程指针技术还可以实现在共享视图中的手势(gesture)效果。除远程指针技术外,其他常用的感知方法还有颜色标识、直观交互、WYSIWIS方法和感知部件等。

2.2.2 用户替身的实现方法

用户替身(Avatar)是协同虚拟环境不可分割的组成部分,用户替身的生成主要有四种方式:

第一种由系统默认。系统为用户设置默认替身模型,当用户第一次进入系统时,直接采用系统提供的默认替身进入系统。

第二种由用户自行选择。用户第一次进入系统时,可以根据个人喜好,选择自己喜欢的用户替身后进入系统。

第三种是自适应推理。用户进入系统时采用缺省替身,通过不断与系统交互,系统收集用户的习惯、兴趣等参数信息,根据自适应推理机制形成符合用户个性的替身和功能界面。经过不断收集用户参数信息,反复推理,逐步形成适合用户特征的替身模型。

第四种由用户手动修改。用户进入系统后,可以根据需要,自行修改界面参数信息和交互方式,系统根据用户需求生成相应的用户替身,以便有效地支持协同感知交互活动。

替身之间的交互通过行为机制来实现,实现的基本方法是:首先,为替身设定一套容易被人辨识的动作(如用户间的打招呼问候、挥手告别、拿起电话进行协商等),这些动作能对动作节点设置不同的位置插补器(PositionInterpolator)、朝向插补器(OrientationInterpolator)和一个共同的时间传感器(Time Sensor)来实现;其次,当用户之间有交互请求时,启动行为机制,通过EAI调用Java Applet分别控制用户来实现替身之间的交互行为。

2.2.3 协同通讯环境的实现方法

为了实现协同感知,需要在协同者之间传递用户状态信息和各种交互信息。VRML的网络通讯和分布式控制需要与Java语言结合来实现。一般有EAI(External Authoring Interface)和SAI(Script Authoring Interface)两种结合方式[11]。通过EAI可以调用Java Applet来改变场景内容,控制较为灵活,但比较复杂的协同交互通常采用SAI方式。通过调用Java脚本语言,将复杂的网络控制和文件访问功能引入协同场景,从而建立起协同虚拟通讯环境,如图2所示。

图2 协同虚拟现实的通讯环境

在图2所示的通讯环境中,利用VRML的临近检测器节点(ProximitySensor)感知用户的操作并输出位置(position_changed域)和方向(orientation_changed域)的变化值,利用视点节点(Viewpoint)接收到其他用户的操作信息来调整虚拟物体的空间位置和方向[12]。通过SAI接口启动输出线程,向服务器发送信息,调用其他客户端的接收线程,更新其他客户端的Viewpoint节点,从而实现系统的协同感知。

2.3 协同并发控制技术

协同并发控制的目的是防止参与协同的多个用户对同一个虚拟物体同时操作而引发操作冲突。解决这个问题的基本方法有对象锁方法和优先级控制法。

对象锁方法的基本思想是[13]:当用户需要对某个虚拟物体进行操作时,先向服务器申请操作这个物体的控制权。服务器检测到这个物体不被其他用户操作时,将权限分配给该用户。用户在对这个物体进行操作时,虚拟物体的操作控制权限设置为锁定。这种方法的优点是实现简单,每个用户按照先来先分配的原则平等申请,但要考虑由于网络中断或其他问题引起死锁现象的发生。

优先级控制法的基本思想是:为每个用户设置不同的优先级控制权限。在同一时刻,权限越高者,优先使用对某个虚拟物体的控制权限。这种方法的优点是能满足高级别用户的权限控制需求,但要考虑低级别用户长时间不能获得对某个物体控制权限的问题。

基于这两种常用的控制方法,也出现了“操作令牌”控制法[14]、基于客户端的并发控制法等。

3 协同虚拟现实的应用实例

3.1 实例开发

文中实现了一个“协同搬凳”虚拟现实测试用例。实例中的协同虚拟环境相对简单,包含一条长凳和两个用户替身。长凳直接采用VRML原型节点建模来实现,替身模型采用Metacreations公司推出的人体造型软件Poser建模,系统采用默认的方式为用户提供替身模型。

当两个用户登录系统后,系统为用户分配默认的替身模型,利用ProximitySensor节点跟踪用户的移动和转动操作,在position_changed和orientation_changed域获得用户的位置和方向值。然后将这些信息通过协同通讯环境输出给另一个用户,并改变这个用户端的替身状态信息。

控制用户替身位置变化信息的Java程序段为:

Nodebandengman=(Node)browser.getNode("Bandengman");

EventInSFVec3fbandengmanPos=(EVeritInSFVeC3f Obandengman.getEventIn("settranslation");

floatposition[]=newfloat[3];

position[0]=2.145 8;

position[l]=0;

position[2]=5.643 9;

bandengmanPos.setValue(position);

获取用户替身当前位置的基本方法是:

Nodebandengman=browser.getNode("andengman");

floatnewPosition[]=newfloat[3];

NewPosition=((EventOutSFVec3O(bandengman.getEventOut("translationchanged"))).getValue();

当bandengman节点定义的替身translation域发生变化(即位移发生变化)时,协同虚拟现实系统自动调用callback()方法来执行相应的处理,主要Java代码是:

Public class Observer implements EventOut Observer{

{Public void callback(EventOut value,double timestamp,Object data)

//对取得的EventOut的值进行相应处理

}

Observer observer=new Observer();

bandengman.getEventOut("translation changed").

advise(observer,null);

}

3.2 实例测试

在校园网络环境中,两个学生分别在不同客户端登录系统,系统默认分配用户替身后,两个学生先后走向待搬动的长凳,到达适当位置时,用户替身的右手自动与长凳吸附,并随着替身一起向前移动,如图3所示。

图3 协同搬凳实现效果

用户替身在运动过程中,位移信息在不断发生变化。如果将位移变化信息实时发送,容易使系统性能下降,甚至出现广播风暴。

为解决这个问题,系统采用定时采集和发送数据的方法,每隔一个时间间隔再获取虚拟物体的方位值,并启动发送机制。时间间隔的设置采用VRML中节点的时间戳。当Script节点收到EventIn后,从Event对象的Name、Value和Timestamp域中,用getsStamp()方法得到时间戳。这个方法大大降低了数据的传输频率,并能较好地保证虚拟物体协同感知的连续性。

4 结束语

作为一种新型智慧环境,协同虚拟现实一经提出就受到广泛关注。相比2D(或者2.5D)协同虚拟现实,基于VRML的3D协同虚拟现实系统更加具有挑战性。

文中通过探讨协同虚拟现实的定义和功能、模型与分类,重点研究了协同虚拟现实的场景设计、协同感知和并发控制技术,并实现了“协同搬凳”实例。测试表明,基于VRML的协同虚拟现实系统能满足低带宽、实时性要求,文中提出的定时采集和发送数据的方法,满足了多用户协同虚拟现实的需要。

[1] 何正伟,吴华意,陈 静.基于Internet的大规模城市建筑三维场景可视化研究[J].系统仿真学报,2009,21(10):2965-2970.

[2] 周博飞,李绪华,张学之.3维城市模型建模方法分类与建模流程探讨[J].测绘与空间地理信息,2012,35(6):138-139.

[3] 许爱军,张文金,黄正午.多用户共享虚拟环境中VRML系统模型[J].计算机系统应用,2010,19(1):27-30.

[4] 唐新明,张 过,祝小勇,等.资源三号测绘卫星三线阵成像几何模型构建与精度初步验证[J].测绘学报,2012,41(2):191-198.

[5] 林建明.CSCW环境下基于信息驱动的群体感知建模及实现方法研究[D].杭州:浙江工业大学,2001.

[6]FunkhotlserTA,SequinCH,TellerSJ.Managementoflargeamountsofdataininteractivebuildingwalkthroughs[C]//Proceedingsofthe1992symposiumoninteractive3dgraphics.NewYork,NY,USA:ACM,1992:11-20.

[7] 张瑞菊.SketchUp结合GoogleEarth在虚拟校园中的应用[J].计算机应用,2013,33(S1):271-272.

[8] 毕硕本,曾晓文,潘秋羽,等.基于粒子系统的卫星云图三维仿真与简化算法[J].系统仿真学报,2014,26(11):2630-2635.

[9] 庞存岐,丘 均,蔡声镇.大规模室外场景中漫游实时渲染技术研究[J].福建师范大学学报:自然科学版,2013,29(3):37-41.

[10] 许爱军,张文金,易 丹.基于虚拟现实技术的远程教育平台研究与实现[J].计算机系统应用,2007,16(8):23-26.

[11] 马延周.虚拟场景中协同感知技术研究[D].郑州:解放军信息工程大学,2008.

[12] 许爱军,张文金,易 丹.基于VRML的虚拟现实技术及应用[J].计算机与数字工程,2009,37(4):186-189.

[13] 行开新,田 凌.支持异地协同设计的异构CAD虚拟装配系统[J].清华大学学报:自然科学版,2009,49(2):226-231.

[14]WangJiaojiao,WangLei,CaoWenmin,etal.A'drift'algorithmforintegratingvectorpolylineandDEMbasedonthesphericalDQG[C]//ProcofIOPconferenceseries:earthandenvironmentalscience.UK:IOPPublishing,2014.

Research and Application of VRML Virtual Reality System

XU Ai-jun

(Guangzhou Railway Polytechnic,Guangzhou 510430,China)

Collaborative virtual reality system is a kind of intelligent environment based on distributed virtual environment,which has obvious advantages in scene creation,cooperative work,high interactive and real-time,etc.In this paper,it gets research on collaborative virtual reality modeling technology and model optimization technology based on the definition and function,and model and category of virtual reality,and focuses on the realization of collaborative perception,user’s avatar and collaborative communication environment.To solve multi user operation conflict,the concurrency control technology is studied using object lock and priority control method,elaborating design process and key technology of collaborative virtual reality combined with the “cooperative move stool” example of virtualreality.Tests show that the VRML-based collaborative virtual reality system has low bandwidth and real-time,which can meet the requirements of multi user virtual reality.

virtual reality;VRML;cooperative work;cooperative parallel control

2015-08-03

2015-11-05

时间:2016-05-05

广东省科技计划项目(2015A030401005);广东省教育科学“十二五”规划2014年度教育信息技术研究项目(14JXN018)

许爱军(1978-),男,研究生,副教授,CCF会员,研究方向为数据管理系统与智能算法、虚拟现实技术。

http://www.cnki.net/kcms/detail/61.1450.TP.20160505.0828.062.html

TP391.9

A

1673-629X(2016)06-0115-04

10.3969/j.issn.1673-629X.2016.06.025

猜你喜欢

虚拟环境虚拟现实物体
前庭刺激对虚拟环境三维空间定向的影响及与空间能力的相关关系
如何通过虚拟环境有效管理Python第三方库
深刻理解物体的平衡
我们是怎样看到物体的
虚拟环境下大数据智能并行聚类方法研究
REALITY BITES
风口上的虚拟现实
虚拟现实技术向科幻小说借灵感
为什么同一物体在世界各地重量不一样?
论高校思想政治教育网络虚拟环境的特征