汤君友,杨欣虹,李雪琼,郭 皓
(东南大学交通学院,江苏南京210096)
随着信息化社会的不断发展,“数字城市”逐渐被城市管理部门所接受并广泛地应用于城市规划、建设和管理之中,城市三维景观重建与三维可视化正成为当前地理信息系统研究的热点。城市三维景观动态仿真技术是一种非沉浸、可交互的三维可视化仿真技术,它能够为城市创建一个实时反映实体对象变化和具有逼真效果的三维虚拟环境。虚拟现实(virtual reality,VR)是一种可以创建和体验虚拟世界的仿真技术。将虚拟环境带入GIS将使GIS更加完美,GIS用户在计算机上就能处理真三维的客观世界,更有效地管理分析空间实体数据。目前虚拟现实GIS(VRGIS)在城市规划中的应用研究主要集中在城市三维景观动态仿真,即虚拟城市技术研究[1]。本文在研究城市三维景观动态仿真关键技术基础上,选用国产虚拟现实软件开发引擎VR-Platform(VRP),以南京东南大学四牌楼校区区域为案例区,探讨基于VRP的城市三维景观动态仿真系统的开发方法与技术思路,为虚拟城市建设工程提供相关技术方案。
要在计算机中模拟现实世界,就必须建立在外形、光照、质感等各方面都与真实实体相似的三维模型。城市三维场景实体模型可以分为地形模型、地物模型、背景天空模型和实体动态行为模型等。其建模类型包括几何建模和行为建模两种,城市三维场景数据建库流程如图1所示。几何建模一般用建模软件工具,如AutoCAD、3Ds max等创建。3Ds max可以对几何多边形添加材质、光照、颜色、表面纹理等属性,纹理的使用使得模型不必靠增加大量多边形就能提高真实感。要构造能够逼真地模拟现实世界的虚拟环境,必须采用行为建模描述物体的运动和行为。行为建模方法主要有基于数值插值的运动学方法与基于物理的动力学仿真方法[2]。
图1 城市三维场景数据建库流程
城市三维场景虚拟仿真中的多边形面片数量很大,一般城市小区场景就达60万个面片。计算机中三维图形生成和显示的实时性就成为产生现实感觉的首要条件。图形的生成速度主要取决于硬件加速器的图形处理能力以及图形生成所采用的各种软件加速技术,如通过三维场景实时生成与显示的优化策略来减少图形的复杂度[3]。下文是常用的几种场景生成与显示的优化策略相关技术。
(1)可见性判定和消隐技术
由于视线的方向性与局限性以及物体相互遮挡,人眼所看到的往往只是场景的一部分。在虚拟仿真中,为充分利用硬件的有限资源,就必须充分利用物体空间的相关性,进行可见性判定和裁剪,减小绘制深度。可见性判定一般通过场景对象分层显示实现,层次表示的主要方法是包围盒技术和八叉树技术[2]。这两种方法的主要特点是将场景组织成为一棵树,充分利用空间连贯性以加速场景的遍历,从而大大减少了画面绘制过程的空间复杂度。消隐技术就是要消除相对空间给定观察位置的背离面和蕴藏面。按照消隐算法确定的显示顺序,判别经透视投影变换的二维面元是否落在视窗范围以内,只对视窗范围以内的可见面元进行光照模型计算和显示处理。
(2)多细节层次技术
为三维场景库模型设立多细节层次(level of detail,LOD)是控制场景复杂度的一个十分有效的方法。细节层次模型是指对同一个场景或场景中的物体,使用具有不同细节的描述方法得到一组模型,供绘制时选择使用。如果一个物体离视点比较远,或者这个物体比较小,就可以用较粗的LOD模型绘制。反之,如果一个物体离视点比较近,或者物体比较大,就必须用较精确的LOD模型来绘制。在计算机图形学中,场景中的物体通常是用多边形网格描述的,因此LOD模型的自动生成就转化为三维多边形网格的简化问题。网格简化的目的是将一个用多边形网格表示的模型表示为一个近似模型,近似模型基本保持了原模型的可视特征,通常的做法是把一些不重要的图元(顶点、边或三角形)从多边形网格中移去。
(3)实例技术
在城市三维场景中往往有大量几何形状相同但其位置、大小、方向不一样的物体存在,可以采用实例(instance)方法,相同的物体只在内存中存放一份实例,将这份实例进行平移、旋转、缩放之后得到所有相同结构的物体,从而大大地节约了内存空间,显示速度会加快。因而实例技术在大规模场景的建造中有着十分广泛的应用。
(4)纹理映射技术
纹理映射(texture mapping)技术是用来简化复杂几何体的有效办法。在城市三维场景中存在大量不规则的物体,如树木、花草、栅栏、广告牌、路灯、雕塑等,这些环境装饰物并不是重点展示的物体,可以采取纹理映射技术来表达。采用纹理映射技术还可以使远方的周围环境(如高山、大海、森林等)简化为一幅纹理图像。因此,纹理映射技术的使用将极大降低场景的复杂性,实现逼真度和运行速度的平衡。另外,对城市三维场景中诸如霓虹灯、烟花、喷泉等动态景物,可采用动态纹理映射方法,用多幅纹理来模拟动态过程。
(5)实时碰撞检测技术
实时碰撞检测(isector)技术是为了保证虚拟环境的真实性,要求虚拟环境中的固体物体是不可穿透的,需要系统能够及时检测出各种碰撞,产生相应的碰撞反应,并及时更新场景输出。碰撞问题一般分为碰撞检测与碰撞响应两个部分,碰撞检测的任务是检测到有碰撞的发生及发生碰撞的位置,碰撞响应是在碰撞发生后,根据碰撞点和其他参数促使发生碰撞的对象做出正确的动作,以符合真实世界中的动态效果。现有的碰撞检测算法可划分为层次包围盒法和空间分解法两大类[3]。
目前城市三维场景管理模式可以分为以下3种,即源数据以文件的管理方式,直接在2DGIS基础上进行一定程度的扩展附加图像文件的管理方式和建立场景的三维模型并使用场景图结构管理方式等[4]。场景图是一种结构化的场景数据管理模式,它采用树状层次结构来描述场景的组合关系和层次关系,适合在虚拟漫游时按视点对场景进行动态的视锥体提取,提高系统渲染速度[5]。当前大多数虚拟现实开发工具和应用系统采用了这种数据管理技术,如 VRML、Open Performer、Cosmo 3D、Multigen Creator、VRP 等。其中,Multigen Creator的 OpenFlight场景图格式已成为视景仿真的标准数据模型格式。
虚拟现实开发软件工具较多,如美国MultiGen-Paradigm公司的场景建模工具Creator和视景仿真引擎VEGA、美国 SGI公司的 OpenGL Performer、中国适普软件公司的IMAGIS、灵图公司的VRMap等。基于三维模型的虚拟渲染引擎,除了VR-Platform外,还有 Quest3D、Virtools、VRML(X3D)、EON Studio、Java3D、Web max、Converse3D、Flash3D 等。VRPlatform是由我国中视典数字科技公司开发的具有自主知识产权的国产软件,它打破了国外软件在虚拟现实领域的垄断,是目前国内市场份额最大的虚拟现实软件开发引擎[6]。VRP实现了和3Ds max无缝联合应用,能模拟高效高精度物理碰撞,提供了完善的SDK开发接口,可以用键盘、鼠标、定时触发、事件触发来与三维场景中的物体进行各种方式的互动。VRP支持的动态效果包括动画贴图(可模拟火焰、爆炸、流水、喷泉、烟火、霓虹灯、群鸟飞行、花草树木随风摆动、电视等)、天空盒、雾效、太阳光晕、体积光、实时镜面反射、雨雪天气等。VRP可应用到城市规划、房地产、室内设计、文物保护、工业、交通、游戏、军事和教育等各个领域。
(1)建立三维场景和模型
3Dsmax软件拥有非常强大的三维建模功能,是VRP最主要的建模工具。VRP建模以“简”模为主,只表现主线条,配合贴图来完成整体和细节的表现,尽量减少模型的分段数和面数,尽可能把材质相同的模型合并起来,以减少模型的个数。
(2)设置模型材质和贴图
在完成场景模型建立之后,即可为该模型添加材质或者纹理贴图。3Dsmax材质编辑器提供了多种材质用于表现不同质感的物体,除了可以设置材质的基本属性之外,还可以指定各种类型的贴图材质以模拟真实的效果。
(3)布设灯光、渲染与场景烘焙
为三维虚拟场景布置灯光,灯光的色彩可以任意设定,并且所有的灯光都可以投射阴影。布设好场景灯光后,要选择合适的渲染器从不同视口渲染样图测试灯光效果。场景烘焙是在三维模型纹理、贴图制作完成且布置好场景灯光后,平展模型表面UV渲染贴图的过程,把在非实时环境中渲染完成的灯光材质等效果转换到实时交互的环境中去。因此烘焙纹理的质量直接影响最终场景的光影效果,可使用3Dsmax的“渲染到纹理”命令完成对场景烘焙。
(4)导入场景至VRP编辑器进行编辑
通过VRP-for-Max插件将烘焙好的模型导入VRP编辑器对场景进行编辑,如加载树木花草、人物、车辆和飞鸟等背景模型,重新设置材质贴图和灯光效果等。创建行走相机并设置碰撞检测效果,从而可以在场景里自由的走动。VRP支持行走相机、飞行相机、旋转相机、角色跟踪相机和动画相机等相机模式,用户可以体验到自由行走漫游、鸟瞰飞行、跟随汽车动画路径漫游、动画相机路线展示等功能。可创建实时二维导航图来进行二、三维联动浏览,有效提高了漫游的效率,并增强了系统的交互性。
(5)设置交互功能与特效制作
VRP编辑器可以编写模型鼠标事件脚本和距离触发脚本,集成了足够丰富且可扩充的动作库,可实现和每个对象的交互操作,如摄像机的切换、设置场景运行背景音乐、定位声源的音乐播放、模型移动或沿路径运动、模型贴图和颜色的变化、方案切换等。使用VRP中ATX动画编辑器可以用关键帧动画来表现火焰、水面、喷泉、爆炸等动态效果,如可以为一面片模型添加atx动画来模拟喷泉和水池流水效果(图2)。此外,还可以为场景应用天空盒和太阳光晕、添加雾效来烘托场景的气氛(图3),并可模拟体积光、实时镜面反射、雨雪天气等特效。
图2 在VRP编辑器中制作流水动态效果
图3 城市三维场景中天空盒和太阳光晕效果
(6)优化场景与发布运行程序
VRP中场景优化主要包括对三维模型的优化;应用贴图管理器优化贴图格式和容量;应用VRP资源文件管理器自动收集场景中所有模型贴图和视频等多媒体资源文件等。利用VRP二维界面编辑器可以设计程序运行界面,在运行界面中添加富有个性化的面板和按钮、设置热点和动作等。最后要将VRP三维场景编译发布成可执行的*.exe文件,以便在其他电脑上运行(图4),或者发布到互联网上直接通过IE浏览器访问,在客户端VRP插件支持下实现在线浏览与三维交互漫游。
图4 城市三维景观仿真系统运行时场景鸟瞰图
本文主要研究基于VR-Platform的城市三维景观动态仿真系统的开发方案和关键技术,重点将城市三维景观建模技术、实时场景生成的优化策略相关技术和城市三维场景数据管理技术应用于仿真系统开发实践,利用VRP开发的城市三维景观动态仿真系统可从任意角度,实时地看到城市三维效果,应用前景较好。系统开发中,数据处理、景观建模、纹理采集和贴图优化等耗费了大量的时间,因此迫切需要加强城市三维模型快速建模与自动化技术研究。
[1]修文群.地理信息系统GIS数字化城市建设指南[M].北京:希望电子出版社,2001.
[2]黄心渊.虚拟现实技术与应用[M].北京:科学出版社,2000.
[3]付帅.城市三维景观建模技术比较研究[J].地理空间信息,2003(4):24-28.
[4]王海鹰,张新长,康停军.面向城市规划的虚拟景观建设方法的探讨与应用[J].测绘通报,2011(3):29-33.
[5]李扬,刘增良,杨军.面向城市规划的三维GIS设计与实现[J].测绘通报,2012(6):74-76.
[6]梁智杰,李众立.VR-Platform校园漫游系统研究与实现[J].计算机系统应用,2010,19(9):124-127.