淤地坝水资源调控三维仿真系统

2021-03-22 02:56汪子涵董维华
电脑知识与技术 2021年6期
关键词:淤地坝水资源

汪子涵 董维华

摘要:淤地坝对水资源调控过程是一种动态变化的过程,只用文字描述,无法给研究人员形象直观的展示,本文提出一种基于Unity3D的降雨过程与淤地坝调控水资源过程的模拟方法。采用3DsMax对淤地坝系主要模型进行三维建模,使用Unity3D引擎进行场景交互设计,采用粒子系统进行降雨的模拟,设计并实现了水资源收集仿真算法,利用多层次细节技术和剔除遮挡技术等进行渲染优化。借助这一方法,开发了淤地坝水资源调控虚拟再现仿真系统。实例表明,该方法可以形象逼真的再现降雨径流过程,还能表现淤地坝等组件对于水资源的调控过程,使展示的效果更加逼真。

关键词:淤地坝;水资源;Unity3D;三维仿真

中图分类号:TP391.9   文献标识码: A

文章编号:1009-3044(2021)06-0205-04

Abstract: The regulation and control process of water resources by warping dams is a dynamic process, which can not be displayed visually and intuitively by researchers. This paper proposes a simulation method of rainfall process and warping dam regulating water resources process based on unity3d. 3DsMax is used to model the main model of Warping Dam System in the scene, unity3d is used for scene interaction design, particle system is used for rainfall simulation, and simulation algorithm for water resource collection is designed and implemented, and multi-level detail technology and occlusion removal technology are used for rendering optimization. With the help of this method, a virtual reappearance simulation system for water resources regulation of warping dams is developed. The example shows that the method can reproduce the rainfall runoff process vividly, and can also show the regulation process of warping dam and other components on water resources, which makes the display effect more realistic.

Key words: rainfall runoff; water resources; unity3d; 3D simulation

我国干旱半干旱地区进行生态环境建设所面临的主要问题就是严重的水资源短缺与水土流失。黄土高原是我国水土流失极其严重的地區之一,同时也是黄河淤积泥沙的主要来源。黄土高原地区有效防治水土流失的措施之一就是建设淤地坝,不仅可以减少水土流失、拦泥淤地,还能够高效存蓄并利用水资源。因此研究黄土高原区的降雨径流过程以及水资源的高效利用是至关重要的。王丽云等[1]分析了十大孔兑现状淤地坝数量与时空分布, 并计算了近10年淤地坝拦沙量, 估算了未来拦沙潜力和剩余拦沙寿命。高雅玉等[2]通过对司家沟流域淤地坝建设情况分析,认为充分高效利用淤地坝拦蓄利用雨洪水资源的潜力,对缓解半干旱地区水资源危机有至关重要的作用。党维勤等[3]对淤地坝及其坝系的试验研究进行了系统梳理,可以为今后淤地坝的进一步研究提供参考。

三维可视化技术是虚拟仿真领域的重要应用之一,构建了现实世界与虚拟世界的桥梁,通过渲染管线对现实数据处理,再通过三维引擎开发模拟,不仅给用户提供逼真的视觉效果,还能够为用户的决策提供帮助[4]。何隽等[5]针对船舶火灾成因的特殊性、消防训练的局限性和危险性, 构建了船舶虚拟消防训练系统, 供船员进行安全有效的人机交互船舶灭火训练。刘标等[6]针对现有电力系统仿真教学系统存在的事故仿真不足、缺乏真实感以及开发难度大的问题,以220KV变电站为仿真对象,利用Unity3D 提供的丰富的功能,搭建了一个完整的电力仿真教学系统。严雨灵等[7]通过研究虚拟现实的应用和开发,以飞机起落架为例设计了一套基于Unity3D虚拟现实引擎的虚拟维修教学系统,该系统实现了飞机零部件的展示、拆装等功能。通过对西柳沟流域重点示范区刀劳庆的调研,设计了基于Unity3D的三维可视化系统,形象逼真地再现了降雨径流水文过程,表现了淤地坝等组件对于水资源的调控过程,实现了淤地坝水资源调控过程的三维模拟。

1 示范区实景仿真方法

西柳沟位于内蒙古河套平原的中部,发源于鄂尔多斯市东胜区,是黄河的一级支流[8],刀劳庆示范区是西柳沟流域综合治理的重点建设示范区。示范区实景仿真方法首先利用无人机航拍地形数据,经GlobalMapper处理后得到可以导入Unity3D的三维地形文件,然后使用建模软件3DsMax为示范区内淤地坝及其组件建立三维模型,利用Unity3D引擎设计三维仿真场景,通过C#编程语言实现了水资源收集仿真算法,还有基于粒子系统的降雨特效技术[9]、碰撞检测技术[10]等共同实现示范区特殊功能仿真。

1.1开发流程

2019年5月15日于刀劳庆示范区现场采集当地地形地貌真实数据、淤地坝及其相关组件的位置信息和各类需要建模的物体实体尺寸信息等,对现场采集到的真实数据进一步处理,建立基本信息库和实景图像库,用于3DsMax建模贴图,将已经建立好的三维模型导入到Unity3D引擎中,使用C#语言编写应用程序,设计相应仿真算法,导入建立的三维模型,开发降雨和水资源收集利用仿真场景,生成降雨过程和淤地坝水资源调控过程再现应用案例。经过反复对应用案例的仿真体验、测试、改进,最终完成了淤地坝水资源调控三维仿真系统。

1.2 3DsMax技术

Autodesk公司所开发的3DsMax是一个专业的三维建模软件,也是目前最受欢迎的三维建模工具之一,不仅可以创建各式各样的三维模型,还能制作出形象逼真的三维动画,并且能对模型进行渲染,输出各种格式的三维模型,其中包括Unity3D中常用的FBX格式。

3DsMax对于使用者来说非常方便,采用多边形对象建模方法,可以单独对点和边进行编辑。对于场景以及物体材质的设置,我们则可以通过编辑材质颜色纹理、设计贴图和调整参数等操作来实现物体特质效果。所以对淤地坝水资源调控场景及场景中模型的制作,选用3DsMax是非常合适的。

1.3 Unity3D技术

淤地坝水资源调控过程虚拟再现系统中需要对3D虚拟场景进行渲染、设计交互仿真功能,将创建好的模型添加到三维场景中,采用Unity3D 渲染技术来实现这部分功能。

Unity是由Unity Technologies开发的一个多平台综合性工具,用户可以利用Unity开发游戏、创建三维动画、进行可视化仿真等。Unity开发采用C#和JavaScript编程语言,脚本编写较为简便,并且还给用户提供了大量的第三方插件。Unity是一个层级式的3D应用综合开发环境,主要提供了场景面板、游戏面板、层次面板、项目面板、检测面板。在Unity3D中,由写好的脚本程序操控实体对象,各种不同的实体对象组成一个场景,每个场景展示的内容都不相同,这些不同的场景共同构成了Unity3D应用程序,场景中的摄像机实现了场景的实时渲染功能。

Unity 采用C#编程语言来编写脚本程序,在实现具体功能时,只需在物体上添加一个脚本程序,当程序运行时。物体会发生相应的变化。常用函数有: Awake()、Start()、Update()、FixedUpdate()、OnEnable()、OnDisable()、OnDestroy()。Unity 常用的API接口是Transform 类,用于描述和控制物体的三维或二维位置、旋转、缩放属性[11]。

2 三维场景的建立

2.1三维地形的建立

采用无人机倾斜摄影三维建模技术来建立刀劳庆示范区的三维地形,利用无人机对刀劳庆示范区进行多角度拍摄采集影像数据,再使用GlobalMapper进行影像数据处理,输出格式为RAW的三维地形文件。在Unity3D中新建一个三维地形Terrain,导入处理好的RAW文件,设置地形的尺寸大小,无须其他复杂设置即完成了三维地形的创建。Terrain 地形工具主要有: 地面高度的提升与降低,地形的平滑、给地形添加纹理,在地面上种树、种草等。利用Terrain工具对创建的地形进一步修改美化,给地形加上预先处理好的贴图,完成虚拟三维场景中三维地形的建立。使用该方法能够在短期内生成大范围、高精度的三维地形,与传统手动建立三维地形相比,不仅大大提高了效率,而且模拟的效果更加真实。

2.2 三维地物的建模

创建卧管、排水管、蓄水池、截流渠等淤地坝系建筑物,需要采集相关的建筑信息。首先对需要三维建模的建筑物尺寸进行测量,记录相应组件的测量数据,然后利用相机等设备拍摄淤地坝的照片,利用图像编辑软件Photoshop对拍摄的照片進一步处理,经修改后得到相关模型的材质贴图,最后利用三维建模软件3DsMax根据场景中物体的大小按比例创建对应的三维模型,并为模型添加材质贴图。将建立好的三维模型导入在Unity3D已经建立的Terrain中,通过旋转、移动、缩放等将各建筑物模型摆放到合适的位置。

树木、玉米、野草等三维植物采用3DsMax 建立三维模型,表现出各种植被的形态,并利用处理好的图片进行纹理贴图,建立的植物模型越精细,数据量就会越大,当场景中同时存在大量植物时,可能会造成系统的卡顿。在Unity中利用预制体,每一种植物只保留一个,防止数据量太大引起卡顿,以便实现实时动态仿真。

2.3 降雨效果模拟

为了能逼真地模拟出示范区的降雨过程,使用了粒子系统来进行仿真,大部分三维仿真软件为了实现复杂的动态特效都会使用粒子系统,常见的特效包括雨、云、雾、爆炸、雪花等。粒子系统的仿真步骤一般如下:

(1)粒子的生成。粒子生成的位置,时间以及数量都需要根据仿真对象的不同来具体设置。

(2)粒子的属性。粒子的属性一般包括:形状,大小,颜色,生命周期等等,通过设置粒子的属性,可以模拟不同的仿真对象。

(3)粒子的运动。新的粒子产生后,粒子会根据初始化时的速度和方向运动,粒子的相关属性也会处于动态的变化中,粒子的空间位置主要由粒子的前一位置、速度和加速度来决定。

(4)粒子的消亡。生命周期结束的粒子会被系统除去。

(5)粒子的渲染。当某一帧的粒子状态全部确定后,绘制并显示由有生命的粒子组成的图形。

Unity3D中的粒子系统检视器用来控制粒子系统,其中的一些参数如图3所示,用于控制粒子系统的参数众多,通过对各个参数进行调整可以得到各种不同的效果。

首先新建一个材质球New Material 赋给粒子系统Render下面的Material ,修改粒子系统的Shape,使其变为圆柱形,调节参数Emission下的Rate,调整雨滴密度,Rotate by Speed下的Angular Velocity可改变雨滴的下落方向。Prewarm表示预热系统,先让粒子充满相应的场景中,然后继续发射粒子,这样做的好处是更加真实,不会因为粒子发射太慢而显得呆板。Start Speed设置粒子发射时的初始速度,Start Size设置粒子的初始大小。Start Lifetime表示粒子的生命周期,当粒子的生命周期结束时,粒子会自动消失。如图4所示为粒子系统模拟的降雨效果。

3 水资源收集与利用过程仿真

3.1 水资源的收集仿真算法

在发生大规模降雨时,淤地坝坝前的雨水会通过坡面漫流和地表汇流的形式汇集。在降雨结束后,坝前收集的雨水中的泥沙会慢慢沉淀,水逐渐变清,沉淀后的清水通过卧管自上而下逐级排放到坝后的蓄水池中被收集起来备用。为了重现雨水资源的收集过程,研究了水资源收集仿真算法,实现了雨水资源收集的动画效果。水资源收集仿真算法如图5所示。

3.2水资源收集仿真算法的代码实现

根据水资源收集仿真算法,三个主要函数的代码实现及解释如下:

(1)水面上涨函数WaterRise( )

public class WaterRise : MonoBehaviour

{public Transform transformWater;

public float addHeight = 5;

IEnumerator Start()

{   yield return new WaitForSeconds(1);

float waterY = transformWater.position.y;

transformWater.DOMoveY(waterY + addHeight, 5);}

void Update()

{}}

该函数通过调整水面的高度以及水面上涨的时间来实现水面的上涨效果,模拟出在经过降雨后水面不断上涨的一个过程。

(2)水变色函数ColorChange( )

public class ColorChange : MonoBehaviour

{ public Material material;

public Color waterColor;

IEnumerator Start()

{   yield return new WaitForSeconds(1);

material.DOColor(waterColor, "_BaseColor", 6); }

void Update()

{  }}

该函数通过改变水面的材质来改变水面的颜色,模拟出收集到浑浊的雨水经过沉淀后慢慢变清澈的过程。

(3)排水函数PourWater( )

public class PourWater : MonoBehaviour

{    public Transform[] transformGaizi;

public Transform transformWater;

IEnumerator Start()

{ yield return new WaitForSeconds(1);

float waterY = transformWater.position.y;

for (int i = 0; i < transformGaizi.Length; i++)

{  Transform _transform = transformGaizi[i];

float y = _transform.position.y;

_transform.DOMoveY(y + 1, 1);

yield return new WaitForSeconds(1);

waterY -= 0.44f;

transformWater.DOMoveY(waterY, 3);

yield return new WaitForSeconds(3);

_transform.DOMoveY(y, 1);

yield return new WaitForSeconds(1);  }  }

void Update()

{  }}

该函数通过获取盖子的位置和水面的高度,计算每打开一个盖子水面下降的高度,不断更新水面的位置,模拟出了打开卧管盖子排放淤地坝坝前所收集清水的过程。模拟的排水效果如图6所示。

4 系统总体设计

在综合考虑目前虚拟现实仿真系统各种功能及优缺点的前提下,具体到淤地坝水资源调控虚拟仿真的特点和要求,设计出了淤地坝水资源调控虚拟仿真系统,如图7所示。

各模块功能简介如下:

(1)UI界面:在展示淤地坝水资源调控仿真场景时,通过人机交互,可以查看目标信息,具有"点击、缩放、旋转、移动"等功能。

(2)现场采集图库:无人机拍摄示范区地形图片、相机拍摄淤地坝系组件照片、处理采集的图片信息、生成资源库。

(3)水资源收集利用场景再现:刀劳庆示范区三维地形重建、创建淤地坝系组件三维模型、创建树木、玉米等植被LOD模型。

(4)VR核心模块:刀劳庆示范区数据库管理、植被LOD算法、视角移动旋转算法、降雨粒子特效算法、水面上涨变色仿真特效算法。

(5)实时仿真:淤地坝水资源调控三维场景实时展示,水资源收集利用模式效果展示。

5 结语

降雨过程和淤地坝对水资源调控过程周期较长且具有不确定性,对于研究人员来说,不便现场观测,而且通过文字描述无法给研究人员形象直观的展示。因此本文研究了一种基于Unity3D的降雨过程与淤地坝系调控水资源过程的模拟方法,设计了淤地坝水资源调控虚拟再现系统、描述了开发流程及相关技术解决方案,探讨了三维场景重建技术、三维地物重建技术等关键技术,完成了淤地坝水资源调控虚拟再现相关功能的设计,最终实现了淤地坝水资源调控虚拟仿真系统的开发。实例表明,该方法可以形象、逼真的再现淤地坝水资源调控仿真情境,解决降雨过程和淤地坝对水资源调控过程不便观测等问题,为研究人员提供了一种形象逼真的虚拟再现方法,也可以用于水文水资源的教學案例中。

参考文献:

[1] 王丽云,马振刚,高云飞,等.近10年来十大孔兑现状淤地坝拦沙作用分析[J].人民黄河,2018,40(9):89-92.

[2] 高雅玉,田晋华,李嘉楠.基于水土资源高效利用的淤地坝建设潜力分析[J].人民黄河,2019,41(9):102-105,109.

[3] 党维勤,党恬敏,高璐媛,等.黄土高原淤地坝及其坝系试验研究进展[J].人民黄河,2020,42(9):141-145,160.

[4] 刘宇.基于三维可视化平台的场景管理的设计与实现[D].北京:中国科学院大学(中国科学院沈阳计算技术研究所),2020.

[5] 何隽,金志泉.Unity 3D船舶虚拟消防训练系统灭火功能设计与实现[J].软件,2019,40(5):47-52.

[6] 刘标,王大虎,徐炎军.基于Unity3D的电力仿真教学系统[J].软件,2019,40(6):164-168.

[7] 严雨灵,陈闵叶,刘同强.基于Unity3D的虚拟维修教学系统设计与实现[J].软件,2019,40(11):128-130.

[8] 刘剑超,林亚军,王述运,等.基于粒子系统的雨天实时仿真方法[J].指挥控制与仿真,2020,42(5):70-75.

[9] 王普庆,侯素珍.西柳沟丘陵区土壤组成及对流域产沙的影响[J].人民黄河,2020,42(2):1-4,17.

[10] 李星,傅妍芳,王亮,等.基于射线检测的动态碰撞优化算法[J].系统仿真学报,2019,31(11):2393-2401.

[11] 苗艺楠,申闫春.基于Unity3D的交通事故虚拟再现系统研究[J].计算机仿真,2018,35(12):122-126.

【通联编辑:梁书】

猜你喜欢
淤地坝水资源
基于层次分析法的坝系工程除险加固防洪标准与洪水组合探讨
陕西榆林地区无定河流域淤地坝遥感解译
水资源(部级优课)
《水资源开发与管理》征订启事
珍惜水资源 保护水环境
黄土高原地区淤地坝建设战略思考
坝系工程除险加固时防洪标准和洪水组合问题探讨
加强水文水资源勘测合理开发利用水资源
浅议我国水资源的刑事立法保护
采煤沉陷区水资源可持续开发利用研究——以淮南市为例