虚拟展示系统的设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文介绍了以OSG为渲染引擎开发的三维虚拟展示系统,再现 了展览中的的场景,使用漫游及区域划分技术,让观察者形象、直观 的看到展览,听到解说。文中主要利用了基于三维建模的虚拟现实 技术,采用分层次的场景图来组织数据,利用OSG中的操纵器和感 知器分别实现场景的漫游与区域划分功能。虚拟展示给展览商提供 了一种新的展示模式,对展览商来说是一个很好的选择。
基于三维建模的虚拟现实展示设计是指以三维场景和三维物 体模型为基础,譬如展览会中场景和产品都是借助专业建模软件 (如Solidworks、3DMAX等)来完成,建成的模型是三维的,这样在 搭建的场景中就能够方便、真实地表达现实世界,譬如打开立体显 示也很容易,只需要自己加个立体显示或者从O S G ( O p e n S c e n e 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对场景的管理让人们使用起来更为便利;最后 是O S G 的可移植性,也就是说不管是W i n d o w s 平台还是L i n u x 平 台,同一基于OSG的程序只需在新平台上重新编译即可使用。
数字技术 与应用
设计开发
虚拟展示系统的设计与实现
王登科 (杭州电子科技大学 浙江杭州 310018)
摘要:该系统利用虚拟现实技术,在计算机中模拟再现展览的真实场景,系统基于OSG开发,并集三维场景漫游、语音讲解于一体的虚拟
场景展示系统。文中分析了该系统的实现过程及整体结构。为了保证交互系统的实时性,利用OSG中感知器进行区域划分,提高了系统运行的
图二 OSG 中模型设置 3.2 虚拟漫游及区域划分 本系统可以以第一视角自由在不同的场馆中漫游,可以看到展 示的产品。可以用OSG提供的操纵器控制人物漫游,也就是照像机 的移动。对场景中的每一帧,计算照相机的水平位置,映射到平面图 坐标上,然后检查是否处于该区域内,如果处于该区域位置内,则触 发图文解说,如果不处于则系统无响应,该功能用感知器实现。 3.2.1 漫游与操纵器
速度。
关键词:虚拟现实 虚拟展示 感知器 区域划分
Fra Baidu bibliotek
中图分类号:TP391.9
文献标识码:A
文章编号:1007-9416(2012)11-0161-02
三维虚拟展示利用虚拟现实技术(Virtual Reality)再现展览的 场景,虚拟现实强调沉浸感(Immersion)、交互性(Interaction)、构想 力(Imagination)这个三个基本特征[1],VR是由计算机生成的、模拟人 类感官的世界的实时表示,VR又称为“灵境技术”,它能够创建出逼 真的三维虚拟环境,并使浏览者在视觉上产生身临其境的感觉。
162
GetCamera()->getViewMatrixAsLookAt(eye,center,up); / / 计算照相机的地海平面的高度
floorheight=eye.z()-height; / / 因为该区域具有楼层关系。所有比较区域前先要计算出人
物所处的楼层。 for(int i=0;i<楼层数;++i)
操纵器实现具体过程: / / 系统自动调用操纵器,操纵器调用摄像机运动函数。
calcMovement(); calcMovement()函数负责摄像机的位置变换,其实现如下: / / 计算摄像机将要移动到的新位置。_ v e l o c i t y 人目前的行走 速度,dt为行走时间。
distanceToMove=_velocity*dt; //如果行走后,摄像机的高度低于海平面高度,则将摄像机放 回海平面,防止摄像机钻入地下 if (_eye.z()<_height)//_eye当前摄像机的位置, _height还 海平面高度
作者简介: 王登科(1 9 8 7 - 3 - 1 1 ),男,硕士在读,杭州电子科技大学计算机学院,主要研究方向:虚拟现实。
161
设计开发
数字技术 与应用
(a)
(b)
图三 系统仿真界面
漫游功能指人物的漫游规则,包括是否开启碰撞检测。是否开 启攀爬功能(本软件主要是指楼梯的攀爬),本系统在实现漫游上采 用操纵器来负责。
{ if(人物处于改楼层){ / / 与该楼层的所有区域进行比较,r e g 为区域结构体。 // FindChildrenRegion函数会查找m_reg_root_list[i]楼层内 的所有区域 / / 如果找到了就会返回该区域,否则返回空。
reg=FindChildrenRegion(m_reg_root_list[i]); / / 如果r e g 不空则播放多媒体,图文解说 if(reg)播放图文解说。}
_eye.z()=_height; //检查人物前往的位置是否会发生碰撞。 Bool b=Intersec(t _eye,distanceToMove); if(没有碰撞) computePosition;//计算新位置。 _ e y e + = 新高度; / / 将摄像机增加新的高度,如果前进的地方 是楼梯等,则此高度就是台阶的高度。 3.2.2 区域划分与感知器 感知器实现原理如下(X0Y平面,Z为离海面高度):区域检查 指判断人物是否处于某个展览区域内,本系统主要采用感知器来管 理,感知器每一帧都会去感知人物是否进入某个展览区域。如果人 进入这一区域就会激活相应的操作,播放图文解说,使展示的三维 场景与某些展商需要强调的细节结合在一起。 感知器实现具体过程: While(渲染未结束)//一直渲染 {//获取当采用的摄像机,并获取照相机的坐标(即人物的位 置就是照相机的位置)
}
} 3.3 系统仿真结果 该系统以VC++,开发了基于OSG的虚拟展示漫游系统,其中 界面是用MFC来完成。实验硬件环境:CPU是Intel酷睿I5,内存为 4G DDR3,GPU:英伟达GT540m。系统界面如图三。其中(a)图是展 馆的整体场景,(b)图是攀爬楼梯和小窗口解说的场景。
4 、结语
1 、虚拟展示与漫游系统总体分析
1.1 需求分析 场馆展览商需要建立一个虚拟的场景展示系统,该系统能够仿 真真实场馆的展览情况,再现展览的场景。操作者可以在展馆中自 由的观看各个展位的产品,当走到某个展位时会弹出小窗口播放该 展位的图文信息,能够自动为操作者导航。 1.2 功能分析 通过展商的需求分析,本系统包含具体模块计划分如图一。
目前,国内各种展销会和展览会举办的非常频繁,大到上海的 世博会,小到一个公司的小型展销会,在这些展览会上各种新创意、 新技术也都运用其中。但是也出现了一些很棘手的问题,譬如上海 世博会期间,人山人海,一个场馆单单排队就要好几个小时,这对参 观者来说是一件非常糟糕的事情。因为面对几十上百个场馆,人们 并不知道该场馆中是否有自己感兴趣的内容。这时如果在场馆外建 造一些虚拟交互设备,人们可以在设备上简单的浏览三维场馆以及 展出的内容。这就给参观者节省了时间,使人们能利用有限的时间 来参观更多感兴趣的展览,通过三维虚拟展示也可以给用户留下深 刻印象。
3 、系统实现及结果
3.1 模型文件设置 在系统中,通过XML文件,向系统中输入模型文件的位置信息[4], 通过OSG来解析3DS文件。对于OSG中模型的管理设置如图二。
图一 虚拟展示中的设计原理和主要实现环节
2 、虚拟展示相关技术
2.1 基于三维建模的虚拟现实展示设计(Geometry-based VR)
参考文献
[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.
基于三维建模的虚拟现实展示设计是指以三维场景和三维物 体模型为基础,譬如展览会中场景和产品都是借助专业建模软件 (如Solidworks、3DMAX等)来完成,建成的模型是三维的,这样在 搭建的场景中就能够方便、真实地表达现实世界,譬如打开立体显 示也很容易,只需要自己加个立体显示或者从O S G ( O p e n S c e n e 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对场景的管理让人们使用起来更为便利;最后 是O S G 的可移植性,也就是说不管是W i n d o w s 平台还是L i n u x 平 台,同一基于OSG的程序只需在新平台上重新编译即可使用。
数字技术 与应用
设计开发
虚拟展示系统的设计与实现
王登科 (杭州电子科技大学 浙江杭州 310018)
摘要:该系统利用虚拟现实技术,在计算机中模拟再现展览的真实场景,系统基于OSG开发,并集三维场景漫游、语音讲解于一体的虚拟
场景展示系统。文中分析了该系统的实现过程及整体结构。为了保证交互系统的实时性,利用OSG中感知器进行区域划分,提高了系统运行的
图二 OSG 中模型设置 3.2 虚拟漫游及区域划分 本系统可以以第一视角自由在不同的场馆中漫游,可以看到展 示的产品。可以用OSG提供的操纵器控制人物漫游,也就是照像机 的移动。对场景中的每一帧,计算照相机的水平位置,映射到平面图 坐标上,然后检查是否处于该区域内,如果处于该区域位置内,则触 发图文解说,如果不处于则系统无响应,该功能用感知器实现。 3.2.1 漫游与操纵器
速度。
关键词:虚拟现实 虚拟展示 感知器 区域划分
Fra Baidu bibliotek
中图分类号:TP391.9
文献标识码:A
文章编号:1007-9416(2012)11-0161-02
三维虚拟展示利用虚拟现实技术(Virtual Reality)再现展览的 场景,虚拟现实强调沉浸感(Immersion)、交互性(Interaction)、构想 力(Imagination)这个三个基本特征[1],VR是由计算机生成的、模拟人 类感官的世界的实时表示,VR又称为“灵境技术”,它能够创建出逼 真的三维虚拟环境,并使浏览者在视觉上产生身临其境的感觉。
162
GetCamera()->getViewMatrixAsLookAt(eye,center,up); / / 计算照相机的地海平面的高度
floorheight=eye.z()-height; / / 因为该区域具有楼层关系。所有比较区域前先要计算出人
物所处的楼层。 for(int i=0;i<楼层数;++i)
操纵器实现具体过程: / / 系统自动调用操纵器,操纵器调用摄像机运动函数。
calcMovement(); calcMovement()函数负责摄像机的位置变换,其实现如下: / / 计算摄像机将要移动到的新位置。_ v e l o c i t y 人目前的行走 速度,dt为行走时间。
distanceToMove=_velocity*dt; //如果行走后,摄像机的高度低于海平面高度,则将摄像机放 回海平面,防止摄像机钻入地下 if (_eye.z()<_height)//_eye当前摄像机的位置, _height还 海平面高度
作者简介: 王登科(1 9 8 7 - 3 - 1 1 ),男,硕士在读,杭州电子科技大学计算机学院,主要研究方向:虚拟现实。
161
设计开发
数字技术 与应用
(a)
(b)
图三 系统仿真界面
漫游功能指人物的漫游规则,包括是否开启碰撞检测。是否开 启攀爬功能(本软件主要是指楼梯的攀爬),本系统在实现漫游上采 用操纵器来负责。
{ if(人物处于改楼层){ / / 与该楼层的所有区域进行比较,r e g 为区域结构体。 // FindChildrenRegion函数会查找m_reg_root_list[i]楼层内 的所有区域 / / 如果找到了就会返回该区域,否则返回空。
reg=FindChildrenRegion(m_reg_root_list[i]); / / 如果r e g 不空则播放多媒体,图文解说 if(reg)播放图文解说。}
_eye.z()=_height; //检查人物前往的位置是否会发生碰撞。 Bool b=Intersec(t _eye,distanceToMove); if(没有碰撞) computePosition;//计算新位置。 _ e y e + = 新高度; / / 将摄像机增加新的高度,如果前进的地方 是楼梯等,则此高度就是台阶的高度。 3.2.2 区域划分与感知器 感知器实现原理如下(X0Y平面,Z为离海面高度):区域检查 指判断人物是否处于某个展览区域内,本系统主要采用感知器来管 理,感知器每一帧都会去感知人物是否进入某个展览区域。如果人 进入这一区域就会激活相应的操作,播放图文解说,使展示的三维 场景与某些展商需要强调的细节结合在一起。 感知器实现具体过程: While(渲染未结束)//一直渲染 {//获取当采用的摄像机,并获取照相机的坐标(即人物的位 置就是照相机的位置)
}
} 3.3 系统仿真结果 该系统以VC++,开发了基于OSG的虚拟展示漫游系统,其中 界面是用MFC来完成。实验硬件环境:CPU是Intel酷睿I5,内存为 4G DDR3,GPU:英伟达GT540m。系统界面如图三。其中(a)图是展 馆的整体场景,(b)图是攀爬楼梯和小窗口解说的场景。
4 、结语
1 、虚拟展示与漫游系统总体分析
1.1 需求分析 场馆展览商需要建立一个虚拟的场景展示系统,该系统能够仿 真真实场馆的展览情况,再现展览的场景。操作者可以在展馆中自 由的观看各个展位的产品,当走到某个展位时会弹出小窗口播放该 展位的图文信息,能够自动为操作者导航。 1.2 功能分析 通过展商的需求分析,本系统包含具体模块计划分如图一。
目前,国内各种展销会和展览会举办的非常频繁,大到上海的 世博会,小到一个公司的小型展销会,在这些展览会上各种新创意、 新技术也都运用其中。但是也出现了一些很棘手的问题,譬如上海 世博会期间,人山人海,一个场馆单单排队就要好几个小时,这对参 观者来说是一件非常糟糕的事情。因为面对几十上百个场馆,人们 并不知道该场馆中是否有自己感兴趣的内容。这时如果在场馆外建 造一些虚拟交互设备,人们可以在设备上简单的浏览三维场馆以及 展出的内容。这就给参观者节省了时间,使人们能利用有限的时间 来参观更多感兴趣的展览,通过三维虚拟展示也可以给用户留下深 刻印象。
3 、系统实现及结果
3.1 模型文件设置 在系统中,通过XML文件,向系统中输入模型文件的位置信息[4], 通过OSG来解析3DS文件。对于OSG中模型的管理设置如图二。
图一 虚拟展示中的设计原理和主要实现环节
2 、虚拟展示相关技术
2.1 基于三维建模的虚拟现实展示设计(Geometry-based VR)
参考文献
[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.