杨 鹏,刘常新,刘甲强
(中电建第十一工程局(广东)建设投资有限公司,广东 广州 510407)
虚拟现实(Virtual Reality,简称VR)是指综合应用计算机图形学、人机交互技术、传感器技术以及人工智能等技术生成的一种人工模拟环境,用户能够以自然的方式与这个环境进行交互,从而通过视觉、听觉和触觉等获得与真实世界相同的感受。虚拟现实具有多感知性、沉浸感、交互性和构想性等特点[1-3]。
由于水利水电工程的特殊性,长期以来该行业虚拟现实技术的应用研究进展缓慢,主要体现在开发成本高、周期长,而且效果差、交互功能不足[4]。随着虚拟现实技术的日趋成熟和普及应用,水利水电工程虚拟现实技术的发展迎来了新的机遇。
当前虚拟现实技术应用最广泛和成熟的领域是游戏开发,本文通过借鉴游戏开发行业的先进经验和流程,将游戏开发理念引入水利水电工程虚拟现实研究,并通过Unity 3D 虚拟现实引擎,高质量地完成了基于Web 3D的水利水电工程虚拟现实案例。
基于Web 3D 的虚拟现实是“互联网+虚拟现实”技术的具体应用,它的实现原理是在B/S 架构下,由服务器提供数据,用户通过浏览器将相应的数据下载到本地构建虚拟现实场景,并与该场景进行实时交互,服务器根据交互情况对场景数据进行实时动态更新。与传统的虚拟现实技术相比,基于Web 3D的虚拟现实技术具有如下特点。
(1)广泛的传播性。基于Web 3D的虚拟现实成果通过互联网进行传播,拥有广泛的用户基础;互联网经过超过20 a 的发展,已经和人们的生活密不可分,并且仍在高速发展聚集用户。
(2)使用的便捷性。基于B/S 架构,用户无需安装客户端软件,只需连接互联网,无论何时、何地都能使用虚拟现实成果。
(3)更强的优化和压缩能力。虚拟现实数据通过网络进行传输,由于网络带宽的限制,数据必须经过优化和压缩,以保证用户端能快速下载。
水利水电工程枢纽范围通常达几十上百平方公里,场景内不仅有复杂的地形、地貌,还有各种水工建筑物、机电设备和管路系统等,如对工程进行整体仿真,将产生大量的数据[5]。
水利水电工程虚拟现实与“严肃游戏”开发类似,二者都是对客观现实进行仿真模拟,而不能凭借开发者的想象随意进行创造,如对自然地形、建筑物、机电设备的建模精度必须满足规定要求,各种交互式操作必须符合实际。
水利水电工程涉及测绘、地质、水工、交通、消防、电气等20 余个专业,要对工程进行全方位的仿真模拟,需要各领域大量专业人才的参与。
宏观方面包括山川、河流、水工建筑物等大尺度模型,微观方面小到一个按钮、一颗螺丝钉都可进行模拟,水利水电工程虚拟现实开发要同时兼顾宏观与微观两个方面的需求。
基于Web 3D的虚拟现实开发的关键,是对数据结构进行优化,以大幅减少数据量,并采用高效的算法满足虚拟现实引擎实时渲染的要求。针对水利水电工程特点,基于Unity 3D 平台,对大场景数字地形建模、模型重构、复杂水效果模拟、人机交互等关键技术进行了研究和开发。
传统的地形建模方法是采用Mesh 面对地表进行模拟,由于水利水电工程地形建模范围大,如采用传统方法进行建模,其数据量将非常巨大,无法满足虚拟现实技术对互联网数据传输和实时渲染的要求。为此,Unity 3D 内置地形引擎,采用地形高度图建模,并利用LOD(Levels of Detail,简称LOD)技术,将地形模型用多种不同的精度表示,根据观察点的远近选择不同精度的地形模型进行呈现,从而有效解决了数据存储和实时渲染的问题;此外,Unity 3D内置地形引擎还能方便地绘制地形纹理,采用对象实例化技术快速批量生成植物模型。但是,由于地形高度图采用固定的二维点阵数据记录地形的位置和高度信息,所以所建立的地形模型只能在高度上进行变化,可编辑性能差,如不能方便地在地形上修建道路、不能进行边坡和基础开挖等。
经研究分析,通过二次开发,利用地形叠加、遮罩、纹理映射等技术,将Unity 3D 内置的大场景地形与外部导入的小范围Mesh地形进行拼接,既充分利用了内置地形引擎的高效性,又满足了工程建设对地形建模精度和加工要求,其原理如图1所示。
当前国内大中型水利水电工程已普遍开展三维设计,如能将三维设计模型应用于虚拟现实开发,既能保证模型精度,又能提高虚拟现实开发效率。然而,三维设计模型并不等同于虚拟现实模型,而是需经加工处理后才能用于虚拟现实开发,这个对模型进行加工处理的过程称之为模型重构。模型重构的要点概括起来有增加、删除、合并、拆分、简化、替换等几种方式。
(1)增加。即查漏补缺,对三维设计中没有的模型进行补充建模,如第三人称角色模型等;另三维设计模型通常不含材质纹理,模型外观与实际物体不符,故应补充模型的材质贴图。
(2)删除。为减少数据量,需删除虚拟现实场景中不可见或不关心的结构模型,如混凝土预埋件、锚杆、止水等。
(3)合并。为便于模型材质贴图,物理属性相同的物体应尽量合并。
(4)拆分。含2 种及以上材质属性的物体应按材质类型进行拆分,交叉物体应进行拆分以减少模型面片数量。
(5)简化。即将高精度模型转化为低精度模型,在不明显改变模型外观形状的条件下,有效减少模型的面片数量;或者把高精度模型烘焙成贴图,然后运用在低精度模型上,使低精度模型拥有近似于高精度模型的细节效果。
(6)替换。即用Unity 3D 中的高效模型替换三维设计模型,如地形三维模型等。
水利水电工程是对水流进行控制并加以利用的工程设施,对水效果的模拟长期以来是水利水电工程虚拟现实研究的重点和难点;以下通过二次开发,对水利水电工程泄洪及河道水流进行模拟。
3.3.1 泄洪效果模拟
泄洪是水流沿溢洪道、底孔等泄水建筑物下泄所形成的高速水流和雾化效果,在虚拟现实引擎中通常采用粒子对泄洪进行模拟;其中,对雾化的模拟采用发散粒子即可,而泄洪所产生的高速水流由于受到水工建筑物的约束作用,水流形态比较复杂,一直是虚拟现实开发的难点。
高速水流的粒子模拟一般有2 种方式:一种是利用粒子与水工建筑物的碰撞自动计算粒子的运动轨迹;另一种是预先定义粒子的运动路径,通过设置粒子的路径跟随来模拟高速水流。第一种方式更接近实际情况,但粒子的碰撞计算量大,运行效率低;第二种方式虽然与工程实际有差别,但粒子的运算量小,运行效率高。经综合比较,下面采用第二种方式对泄洪高速水流进行模拟,模拟效果如图2所示。
图2 粒子路径模拟泄洪高速水流
关键代码如下:
3.3.2 水流模拟
本文模拟的水流是指大坝下游河道中的河水,其特点是水流同时向下游流动和沿竖向上下波动。根据水流的这一特点,在虚拟现实引擎中可利用Mesh 面对其进行模拟,即通过设置Mesh 面的UV 位移贴图来模拟水流向下游流动的效果;通过设置Mesh 面节点的竖向位移来模拟水流上下波动的效果,同一节点在不同时间以及同一时间相邻节点之间的竖向位移变化规律通常满足正弦函数关系。在Unity 3D 中,可通过脚本二次开发设置UV 位移贴图,利用着色器(Shader)设置Mesh面节点的位移。
UV位移贴图模拟水流代码:
人机交互是指通过计算机输入、输出设备实现人与计算机对话的技术。下面以第三人称为例,简要介绍Unity 3D的人机交互开发原理,该案例中用户通过键盘和鼠标控制人物动作与虚拟现实场景进行交互。
3.4.1 第三人称制作
第三人称一般包括人物模型和人物动作两个部分,通常在Maya、3DMax 等专业软件中完成后,再导入虚拟现实引擎进行调用。
3.4.2 在Unity 3D中使用动画控制器
动画控制器的作用是将动画和模型进行绑定,通过设置动画的触发条件控制状态之间的相互转换。首先新建一个动画控制器,并添加站立(Idle)、行走(Walk)、后退(WalkBack)和奔跑(Run)4 种人物状态,其中默认状态为站立;然后通过箭头连线设置状态之间的转换关系,点击箭头连线新建一个名称为ActionID 的整型控制参数,设置当ActionID 的值为0,1,2,3 时分别表示站立、行走、后退和奔跑,如图3 所示。动画控制器完成后,将其赋给场景中第三人称人物模型的动画(Animation)组件即可。
图3 Unity 3D动画控制器
3.4.3 脚本控制第三人称
动画控制器完成后,通过编写脚本由键盘控制场景中人物模型的行为状态,以下代码实现了分别按下“W”“S”键控制人物的行走和后退,按下“Shift”+“W”键开始奔跑。
基于Unity 3D 虚拟现实引擎,开发了水电站基于Web 3D 的虚拟现实系统。该系统对工程区15 km×15 km 地形以及大坝、厂房等进行了精细建模,包括路径动画、第一人称和第三人称漫游、泄洪模拟、天气模拟、主要建筑物结构及功能展示等功能。该系统发布后的成果文件容量仅85 M,可基于互联网发布使用,部分成果截图如图4—5所示。
图4 第三人称漫游界面
虚拟现实技术在水利水电工程规划、设计、施工、运维等全生命周期的各阶段均有较多应用。在工程建设之前,利用虚拟现实技术对工程进行全方位的模拟,用户可提前体验工程建成之后的效果,还可辅助用户进行工程决策;在工程建成之后,借助虚拟现实技术可大幅提升运维管理水平,节约人力和物力,如基于虚拟现实系统的资产管理、安全监测、远程集控、流域调度等。
图5 虚拟现实泄洪开发界面
基于Web 3D的虚拟现实技术具有受众范围广、使用方便等特点,符合信息化时代网络化、移动化的发展趋势,具有广阔的应用前景。本文所介绍的基于Web 3D的虚拟现实开发技术路线,在水利水电工程行业具有广泛的适用性,可供其他工程借鉴。