九成宫虚拟场景创建及其交互漫游实现
2015-12-23朱耀麟许嘉琳杨宇峤万韬阮
朱耀麟,许嘉琳+,杨宇峤,万韬阮,2,武 桐,田 蓉
(1.西安工程大学 电子信息学院,陕西 西安710000;2.布拉德福德大学 计算机信息与传媒学院,西约克郡 布拉德福德BD7 1DP;3.长安大学 建筑学院,陕西 西安710061)
0 引 言
九成宫虚拟场景重现对唐文化展示和保护有着非常重要的意义[1]。虚拟场景漫游技术作为虚拟现实技术的核心技术之一,遵循着 “高性能、低成本”[2]的原则,高速发展,取得了丰硕的研究成果[3-8]。文献 [3-6]采用OpenGL实现虚拟场景漫游,文献 [7]提出基于图像的虚拟场景漫游的实现,文献 [8]描述了利用鼠标、键盘来完成交互式漫游。但是,这些方法存在着一些不足,比如场景占用内存较大,运行缓慢;使用硬件设施较多,以至编写程序过程中对参数的设置复杂度增加、程序接入口的设置容易产生冲突等。本文将采用混合建模的方法解决场景复杂程度与创建时间之间的矛盾,提高其真实度,并采用Kinect动作捕捉技术使肢体动作控制代替原始的键盘、鼠标控制,从而使漫游过程更加自然、逼真。
1 系统设计总框架
九成宫属于大型宫殿群建筑,场景复杂,类似宫殿较多,主要采用基于图形的建模和绘制 (geometry based modeling and rendering,GBMR)和基于图像的建模和绘制(image based modeling and rendering,IBMR)混合技术对宫殿群进行三维建模,并合理使用纹理贴图对宫殿进一步修改,使场景更加逼真、自然。本文搭建OpenGL 系统框架进行虚拟场景的渲染和实时显示,为了增加虚拟场景的真实程度,对灯光、阴影等进行一系列设置,还采用Kinect动作捕捉技术实现人体姿势控制代替键盘控制场景来达到交互目的,使系统的更加生动,沉浸感增强。系统的设计框架如图1所示。
图1 系统设计框架
2 九成宫简介
有诗序记载: “九成宫者,天子之殊庭,群仙之一都也。五城既远,得昆阆于神京;三山已沈;见蓬莱于右辅。紫楼金阁,雕石壁而镂群;碧甃铜池,俯银津而横众壑。离宫地险,丹磵四周,徼道天回,翠屏千仞。”[9]
九成宫以隋朝仁寿宫为基础进行修建,集北朝雄浑大气与南朝温婉细腻为一体,将自然山水和宫廷建筑完美结合,在建筑史上有深远影响。不但大明宫的一些建筑仿效它,对兴庆宫的花萼相辉楼和勤政务本楼的创建也发挥了巨大的影响力。考古学家证明九成宫总体建筑采用纵轴陪衬手法,左右呈对称趋势,整体色调较为单一,主要殿阁屋顶为重檐歇山顶,其余为单檐歇山顶[10]。鸱吻呈鱼尾状。由于其斗拱布置疏朗,用料硕大,使出檐较为深远,有平缓的曲线,屋檐向上翘起。瓦片以板瓦,筒瓦居多,色调以灰瓦和黑瓦为主。柱子较粗且下粗上细,柱础石以覆盆柱础为主。门窗多用版门和直棂窗,门扇分上中下,上部高装直棂便于采光。石制栏杆,长砖铺地,青掍砖为散水[11]。
3 九成宫虚拟场景的构造
在九成宫虚拟场景的构建过程中,需要解决很多矛盾,如制作精细的模型与占用内存少之间的矛盾,场景复杂程度与创建时间之间的矛盾,场景渲染速度与逼真度之间的矛盾等。
3.1 三维建模
在九成宫模型创建过程中,尽量使用参数化方法构建,使模型单位统一、规范。另外,采用模块化建模来得到部分模块,对这些模块进行重组,从而得到不同宫殿模型,减少了模型创建所需要的时间,增强了模块的可重用性。
由于宫殿模型具有统一的特点,所以主要以几何建模技术为主,图像建模为辅。对于不同的模块灵活采用不同技术。对于宫殿墙体,台阶,台基等的创建,采用多边形建模。多边形建模的主要命令是可编辑网格和可编辑多边形,而几乎所有的几何体类型都可以塌陷为可编辑多边形(包括曲线)。该方式创建的模型占用系统资源少,渲染速度快,并且可以在较少面下创建较复杂的模型。而对于屋檐的创建,由于需要不规则的、光滑复杂的模型,所以采用NURBS建模方法。另外还采用了挤压建模、面片建模、复合对象建模等。
模型的创建过程中,细节程度越高,模型越精细,工作量就越大,并且在面与面的连接处存在许多多余多边形,这些都严重影响场景的渲染速度,使性能下降。为此,在不影响整体视觉基础上删除不必要面片,合理分配网格,移除不必要的点和线,点面对齐,焊接重合点,对模型的表面进行处理,合理使用纹理,用纹理代替复杂模型,比如瓦片,栏杆等,进而减少内存占用,给人以真实环境的感觉。创建模型过程中利用纹理贴图达到效果,如图2所示经过纹理贴图后模型更加逼真。
图2 纹理贴图效果
纹理映射技术不仅增加了模型细节水平和景物的真实感,而且减少了内存占用量,它可以保存其在模型上的三维坐标供模型渲染时使用。billboard技术[12]就是纹理映射技术的演变。比如由billboard技术创建的树的模型,就是将树的纹理贴图贴在一个多边形上,在漫游程序中定义多边形的法向量始终与视线方向平行,是树随视角的变化而变化,进而使用一个多边形得到最逼真的树模型,既节省了内存空间提高了场景渲染的效率,又生动形象的显示了树。
3.2 虚拟模型渲染
本文主要在OpenGL 函数库基础上进行虚拟场景的绘制和渲染。OpenGL 能够通过编程直接绘制模型,但复杂模型需要大量的程序代码。因此,本文通过读取由3.1 得到的3DS模型的数据,调用CLoad3DS 类中的show3ds()函数进行模型的绘制和显示。在模型绘制过程中,为了避免纹理坐标出现扭曲,采用glTexParameter()函数进行线性滤波。最终,对绘制的模型进行定位、旋转、缩放等操作得到与场景比例协调的九成宫三维模型。另外,与现实相近的虚拟场景不仅需要主要建筑物,还需要天空、地面、光照、雾化等来增加场景的真实程度。为此,采用天空盒绘制天空,采用读取高度图内保存的高度信息的方法来控制地面高度,利用glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,0×812F)和glTexParameterf(GL _TEXTURE _2D,GL _TEXTURE _WRAP_T,0×812F)语句消除天空盒裂缝,在方位145左右,x在310左右,y在320 左右,仰角为29 天空对比图,如图3~图4所示经过滤波裂缝消除。
图3 有裂缝的天空
4 场景的交互式漫游
本文主要采用了基于Kinect的动作捕捉技术来实现虚拟场景中漫游。Kinect是微软公司于2010年6月针对游戏主机Xbox360推出的一款体感设备,随后推出了Kinect for Windows,它功能比较强大、价格低廉,主要由麦克风和摄像头构成其输入系统,其中摄像头有包括彩色摄像头、红外投影机和红外摄像头。彩色摄像头可以直接拍摄彩色图片和视频,红外投影机主要用于发射近红外光谱,红外光谱照射到物体表面时会发生扭曲,从而随机形成反射斑点 (简称散斑)[13],由红外摄像头进行接收并分析,最终得到物体的深度信息。
图4 消除裂缝后的天空
Kinect的骨骼跟踪功能在深度信息的基础上进行的。首先,Kinect通过红外摄像头得到场景的深度信息,再将人物的深度信息提取出来,根据人体比例识别人体的部位,然后推断出关节点 (即骨骼点)的位置。随着人体做出不同的动作,骨骼点之间的相对空间位置发生改变,从而实现骨骼跟踪功能。
在场景漫游过程中,主要采用算法匹配的方法,通过跟踪骨骼点之间的空间位置,结合三角几何进行匹配来达到目的。本设计采用事件模式来获取数据,即定义双手骨骼点之间的距离和双膝骨骼点之间的距离,当人体开始做出姿势时,若双膝之间的前后距离大于定义的最小值MIN_KneeLeft_KneeRight时,触发前进事件,使向前漫游;当双手之间的垂直距离超过已定义的阈值rightThreshhold或leftThreshhold时,触发向左走或向右走事件,进而进行左转或右转操作;当双手处于同一平面且双手之间的水平距离大于已定义值backwardThresh--hold时,触发后退事件,使后退。另外,通过访问Window.Dispatcher属性调用了Invoke方法更新界面中的控件元素,使控件的变化随人物动作的指示变化,从而实现前进、后退、向左走、向右走标志的变换。具体动作设计见表1。
表1 现实动作与场景控制对应
5 实验结果
本文给出了隋唐遗址九成宫的虚拟场景漫游系统,它更具沉浸感,交互更加自然,满足了人们对古遗址游览的需要。本实验以OpenGL 为基础,以Kinect为捕捉工具,进行了平台搭建。仿真图结果如图5~图8所示。
图5 向左走
图6 向右走
图7 后退
6 结束语
通过对隋唐行宫九成宫考古资料的大量收集和分析,创建了虚拟场景漫游系统,其中通过混合建模和纹理贴映射等技术实现了九成宫的三维立体显示,并采用OpenGL系统框架对其进行渲染。采用Kinect动作捕捉技术使现实人体姿势控制代替原始的键盘、鼠标控制,从而使整个漫游过程更趋于自然化,相对于以前的由红外发射和接受,数据手套等设计的自然交互更加简单方便,有利于相关程序的开发。本设计系统中如碰撞检测,Kinect捕捉精度等方面还可以进一步改进。另外,本系统对古代文化的复兴具有推动作用,对文化的保护和传播有非常深远的意义。
图8 前进
[1]LI Zhixing.Jiuchenggong culture and its times’implication[J].Baoji Social Sciences,2010 (4):39-41 (in Chinese).[李志兴.九成宫文化及其时代意蕴 [J].宝鸡社会科学,2010 (4):39-41.]
[2]XU Wei.Virtual reality research status and development at home and abroad [J].Modern Business Trade Industry,2009,21 (2):279-280 (in Chinese).[许微.虚拟现实技术的国内外研究现状与发展 [J].现代商贸工业,2009,21(2):279-280.]
[3]ZHANG Rui.Establishment and implementation of OpenGLbased 3Dscene modeling [D].Wuhan:Huazhong University of Science and Technology,2010 (in Chinese).[张锐.Open-GL三维场景模型的建立与实现 [D].武汉:华中科技大学,2010.]
[4]ZHU Yingjun,LI Guoxiang.Virtual roaming system of Open-GL-based implementation technology [J].Science and Business,2011 (8):38-40 (in Chinese).[祝英俊,李国祥.基于OpenGL的虚拟漫游系统实现技术 [J].科技与企业,2011(8):38-40.]
[5]LIU Guodong,LI Hong.The design and implementation of a virtual history museum walking-through system based on Open-GL [J].Computer and Information Technology,2010,18(1):56-60 (in Chinese). [刘国栋,李宏.基于OpenGL 的虚拟历史博物馆漫游设计与实现 [J].电脑与信息技术,2010,18 (1):56-60]
[6]LIU Wei.Research and implementation of modeling and visual simulation of Chinese ancient buildings based on OpenGL [D].Chengdu:Electronic Science and Technology University,2011(in Chinese).[刘薇.基于OpenGL的中国古建筑的建模与视景仿真的研究和实现 [D].成都:电子科技大学,2011.]
[7]ZONG Yan.Research and application on the key algorithms in IBR-based virtual reality system [D].Lanzhou:Lanzhou Jiaotong University,2012 (in Chinese).[宗岩.基于IBR 的虚拟漫游系统关键算法研究及应用 [D].兰州:兰州交通大学,2012.]
[8]LIU Qiaohong.Construction of computer virtual campus and human-computer interaction technology [J].Computer Engineering and Design,2010,31 (19):4332-4335 (in Chinese).[刘巧红.计算机虚拟校园的建造与人机交互的实现[J].计算机工程与设计,2010,31 (19):4332-4335.]
[9]TAN Rui.Jiucheng palace and political history of sui and tang dynasty [J].Journal of Yibin University,2009 (2):62-64(in Chinese).[谭锐.略论九成宫与隋唐政治的关系 [J].宜宾学报,2009 (2):62-64.]
[10]ZHANG Xia,ZHANG Fangtao.A pair of excellence of wood-structure buildings in tang dynasty-nanchansi temple and the east temple of Fuoguangsi[J].Shanxi Science and Technology,2007 (1):22,25 (in Chinese). [张霞,张放淘.唐代木构建筑的 “双壁”—南禅寺大殿和佛光寺东大殿[J].山西科技,2007 (1):22,25.]
[11]LIU Yinliang.Comparison Daminggong with Jiuchenggong’architectural features[J].Journal of Sanmenxia Polytechnic,2012,11 (2):11-14 (in Chinese). [刘银亮.大明宫与九成宫建筑特点的比较 [J].三门峡职业技术学院学报,2012,11 (2):11-14.]
[12]HE Chen.The research of tree’s modeling and real-time rendering technology [D].Qingdao:Qingdao University,2009(in Chinese).[何辰.树木建模与实时渲染技术研究 [D].青岛:青岛大学,2009.]
[13]ZHANG Di.Discussion of the Kinect applications [J].Logistics Engineering and Management,2012,34 (6):39-41(in Chinese).[张荻.Kinect应用领域的探讨 [J].物流工程与管理,2012,34 (6):39-41.]