虚拟展示系统的设计与实现

时间:2022-10-13 01:16:54

虚拟展示系统的设计与实现

摘要:该系统利用虚拟现实技术,在计算机中模拟再现展览的真实场景,系统基于OSG开发,并集三维场景漫游、语音讲解于一体的虚拟场景展示系统。文中分析了该系统的实现过程及整体结构。为了保证交互系统的实时性,利用OSG中感知器进行区域划分,提高了系统运行的速度。

关键词:虚拟现实 虚拟展示 感知器 区域划分

中图分类号:TP391.9 文献标识码:A 文章编号:1007-9416(2012)11-0161-02

三维虚拟展示利用虚拟现实技术(Virtual Reality)再现展览的场景,虚拟现实强调沉浸感(Immersion)、交互性(Interaction)、构想力(Imagination)这个三个基本特征[1],VR是由计算机生成的、模拟人类感官的世界的实时表示,VR又称为“灵境技术”,它能够创建出逼真的三维虚拟环境,并使浏览者在视觉上产生身临其境的感觉。

目前,国内各种展销会和展览会举办的非常频繁,大到上海的世博会,小到一个公司的小型展销会,在这些展览会上各种新创意、新技术也都运用其中。但是也出现了一些很棘手的问题,譬如上海世博会期间,人山人海,一个场馆单单排队就要好几个小时,这对参观者来说是一件非常糟糕的事情。因为面对几十上百个场馆,人们并不知道该场馆中是否有自己感兴趣的内容。这时如果在场馆外建造一些虚拟交互设备,人们可以在设备上简单的浏览三维场馆以及展出的内容。这就给参观者节省了时间,使人们能利用有限的时间来参观更多感兴趣的展览,通过三维虚拟展示也可以给用户留下深刻印象。

1、虚拟展示与漫游系统总体分析

1.1 需求分析

场馆展览商需要建立一个虚拟的场景展示系统,该系统能够仿真真实场馆的展览情况,再现展览的场景。操作者可以在展馆中自由的观看各个展位的产品,当走到某个展位时会弹出小窗口播放该展位的图文信息,能够自动为操作者导航。

1.2 功能分析

通过展商的需求分析,本系统包含具体模块计划分如图一。

图一 虚拟展示中的设计原理和主要实现环节

2、虚拟展示相关技术

2.1 基于三维建模的虚拟现实展示设计(Geometry-based VR)

基于三维建模的虚拟现实展示设计是指以三维场景和三维物体模型为基础,譬如展览会中场景和产品都是借助专业建模软件(如Solidworks、3DMAX等)来完成,建成的模型是三维的,这样在搭建的场景中就能够方便、真实地表达现实世界,譬如打开立体显示也很容易,只需要自己加个立体显示或者从OSG(OpenScene Graph)库中调用此功能即可。本系统就是利用3Dmax建立三维模型,并通过XML文件读取模型的位置信息。

2.2 采用分层次的场景图组织形式

在展位的放置上要求场景的组织要有一定的层次结构,如用树或者图来组织场景。本系统采用OSG图结构来管理场景,优点是:对于三维场景的组织管理非常高效,并且OSG库中提供了很多常见的三维交互功能。

2.2.1 OSG技术介绍

OSG是一个基于C++语言的跨平台应用程序接口,它能够让程序员快速、便捷地创建高性能、跨平台的交互式图形程序[2]。该技术主要有两部分组成,一是组织、管理场景以及遍历技术;另一部分是对场景渲染以及实现场景模型的连续层次细节。

对于场景的组织与管理,OSG采用了场景图(Scene Graph)这种数据结构,通过场景图把各场景及其属性组织成图。OSG利用层次结构来表示场景,场景中的结点是构成场景图的基本单元[3]。

2.2.2 OSG的特点

从性能上来说,OSG场景图所用的树状数据结构直观,底层具有非常优秀的框架;从效率上讲,对于程序员来说是一个解脱,如果与OpenGL相比,OSG对场景的管理让人们使用起来更为便利;最后是OSG的可移植性,也就是说不管是Windows平台还是Linux平台,同一基于OSG的程序只需在新平台上重新编译即可使用。

3、系统实现及结果

3.1 模型文件设置

在系统中,通过XML文件,向系统中输入模型文件的位置信息[4],通过OSG来解析3DS文件。对于OSG中模型的管理设置如图二。

图二 OSG中模型设置

3.2 虚拟漫游及区域划分

本系统可以以第一视角自由在不同的场馆中漫游,可以看到展示的产品。可以用OSG提供的操纵器控制人物漫游,也就是照像机的移动。对场景中的每一帧,计算照相机的水平位置,映射到平面图坐标上,然后检查是否处于该区域内,如果处于该区域位置内,则触发图文解说,如果不处于则系统无响应,该功能用感知器实现。

3.2.1 漫游与操纵器

漫游功能指人物的漫游规则,包括是否开启碰撞检测。是否开启攀爬功能(本软件主要是指楼梯的攀爬),本系统在实现漫游上采用操纵器来负责。

操纵器实现具体过程:

//系统自动调用操纵器,操纵器调用摄像机运动函数。

calcMovement();

calcMovement()函数负责摄像机的位置变换,其实现如下:

//计算摄像机将要移动到的新位置。_velocity人目前的行走速度,dt为行走时间。

distanceToMove=_velocity*dt;

//如果行走后,摄像机的高度低于海平面高度,则将摄像机放回海平面,防止摄像机钻入地下

if (_eye.z()

_eye.z()=_height;

//检查人物前往的位置是否会发生碰撞。

Bool b=Intersect(_eye,distanceToMove);

if(没有碰撞)

computePosition;//计算新位置。

_eye+=新高度;//将摄像机增加新的高度,如果前进的地方是楼梯等,则此高度就是台阶的高度。

3.2.2 区域划分与感知器

感知器实现原理如下(X0Y平面,Z为离海面高度):区域检查指判断人物是否处于某个展览区域内,本系统主要采用感知器来管理,感知器每一帧都会去感知人物是否进入某个展览区域。如果人进入这一区域就会激活相应的操作,播放图文解说,使展示的三维场景与某些展商需要强调的细节结合在一起。

感知器实现具体过程:

3.3 系统仿真结果

该系统以VC++,开发了基于OSG的虚拟展示漫游系统,其中界面是用MFC来完成。实验硬件环境:CPU是Intel酷睿I5,内存为4G DDR3,GPU:英伟达GT540m。系统界面如图三。其中(a)图是展馆的整体场景,(b)图是攀爬楼梯和小窗口解说的场景。

4、结语

本文介绍了以OSG为渲染引擎开发的三维虚拟展示系统,再现了展览中的的场景,使用漫游及区域划分技术,让观察者形象、直观的看到展览,听到解说。文中主要利用了基于三维建模的虚拟现实技术,采用分层次的场景图来组织数据,利用OSG中的操纵器和感知器分别实现场景的漫游与区域划分功能。虚拟展示给展览商提供了一种新的展示模式,对展览商来说是一个很好的选择。

参考文献

[1]潘志庚,姜晓红,张明敏等.分布式虚拟环境综述[J].软件学报,2000,11(4):461-467.

[2]Rui Wang,Xuelei Qian.OpenSceneGraph 3 Cookbook.[M].Published by Packt Publishing Ltd.2012:7-12.

[3]叶乐晓,王明,刚.家具虚拟展示和漫游系统设计与实现[J].系统仿真学报,2008,20(3):669-672.

[4]张晓琳,丁红,谭跃生,王国仁.基于面向对象XML的集中式和分布式存储模型.[J].计算机工程,2007,33(15):58-60.

上一篇:基于STM32多路电量检测系统设计 下一篇:基于Java的物流配送中心系统仿真模块研究与设...