本文以闽西上杭县为例,首先利用RUSLE模型构建闽西上杭县土壤侵蚀分布图,其次基于Unity3D开发工具,选取研究区一个典型的水土流失区域情景模拟实现可视化系统。在实现技术上有一定的突破。实验结果表明基于Unity3D的RESLE水土流失模型可视化逼真,效果好,对研究区水土保持有一定的指导意义和参考价值,值得推广应用。 The paper takes Shanghang county in western Fujian province as a case. Firstly RUSLE model was used to build the soil erosion distribution diagram of Shanghang county. Secondly, based on Uni-ty3D exploit tool, a typical soil and water loss district was chosen to modify and fulfill a visual sys-tem. It has a certain breakthrough in realizing technology to some degree. The experimental con-clusion revealed that the RESLE erosion soil model based on Unity 3D is more visually real and has a good effect, having guide and contend meaning in water and soil maintenance of the research areas, which is worthy of being spread and used.
赖良鹏,余明*
福建师范大学地理科学学院,福建 福州
收稿日期:2016年7月8日;录用日期:2016年7月24日;发布日期:2016年7月29日
本文以闽西上杭县为例,首先利用RUSLE模型构建闽西上杭县土壤侵蚀分布图,其次基于Unity3D开发工具,选取研究区一个典型的水土流失区域情景模拟实现可视化系统。在实现技术上有一定的突破。实验结果表明基于Unity3D的RESLE水土流失模型可视化逼真,效果好,对研究区水土保持有一定的指导意义和参考价值,值得推广应用。
关键词 :Unity3D,RUSLE,情景模拟,水土流失,闽西上杭
在中国南方红壤地区,尤其是花岗岩区,因其风化壳结构松散及降水量丰富等自然特征,土壤的抗侵蚀能力低,易受流水侵蚀,特别在坡地缺乏植被覆盖时,土壤侵蚀极为严重,生态系统出现退化,水土流失是我国最严重的生态环境问题 [
上杭县位于福建省西南部,龙岩市西部,汀江中游,地处北纬24˚46'~25˚28'至东经116˚16'~116˚57'之间,东接龙岩新罗区,西连武平,北倚长汀,东北毗连城,东南邻永定,西南与广东省梅州市蕉岭县接壤。全县东西宽69 km,南北长78 km,全县总面积约2879 km2 [
本文基于GIS软件开发中常用的Unity3D模块中的粒子系统和光影系统,使用WorldComposer插件与TerrainComposer插件,以研究区上杭县为例导入模拟地形,解决了实际地形在Unity3D中可视化表达的技术难点,系统尝试实现三维可视化系统情景模拟以及探讨模拟中可能出现的问题及解决方案。
Unity3D中粒子系统模型常用于打雷、下雨、爆炸、蒸汽、燃烧等各类特效的制作,模型主要参数见表1。其原理在于赋予粒子一些属性(如表1)后不断重复绘画给予人视觉上的特效。一个完整的粒子由四部分构成,即粒子发射器、粒子播放器、粒子渲染器、粒子碰撞器。粒子发射器赋予粒子发射时具有的物理属性,播放器决定了粒子发射后的属性如运动阻尼,粒子渲染器决定了粒子的外貌形态,如图2。
参数 | 意义 |
---|---|
Duration (粒子持续时间) | 粒子系统发射粒子持续时间,若为粒子循环模式则为粒子一次完整的循环时间 |
Looping (粒子循环) | 粒子是否循环播放 |
Prewarm (粒子预热) | 开启粒子预热后粒子在运行初始阶段时判定为已发射一个粒子周期,仅用于循环模式下的粒子 |
Start Delay (粒子延迟) | 系统运行后延迟一定时间后再发射粒子,无法与粒子预热同时使用 |
Start Lifetime (粒子生命周期) | 粒子存活时间,生命周期为0后粒子自动消亡 |
Start Speed (粒子初速度) | 粒子发射初始速度 |
Start Size (粒子初始尺寸) | 粒子发射初始大小 |
Start Rotation (粒子初始旋转) | 粒子发射初始旋转角度 |
Start Color (粒子初始颜色) | 粒子发射初始颜色 |
Gravity Multiplier (重力倍增系数) | 重力对粒子发射所造成的影响,其值越大粒子受重力影响越严重 |
Inherit Velocity (粒子速度继承) | 运动中的粒子的速率可同步到新生成粒子上 |
Simulation Space (模拟坐标系) | 粒子所处坐标系为世界坐标或是相对坐标 |
Play On Awake (唤醒时播放) | 系统被唤醒时自动播放粒子,可与Start Delay同时使用 |
Max Particle (最大粒子数) | 粒子发射最大数量,当系统中粒子数量达到最大时停止发射 |
Collision (粒子碰撞) | 为粒子添加碰撞效果 |
Render (粒子渲染) | 通过粒子渲染可将粒子模拟为火焰、水流等 |
表1. 粒子系统
图1. 研究区位置
图2. 连续发射粒子模拟的雨滴图(a)和渲染后的粒子图(b)
通过Unity3D中的光影系统定义各类参数意义(如表2),并可用于气候、地形等要素的模拟。
利用Unity3D模拟情景可视化系统常出现的问题有地形与贴图如何有效对应,水土流失因子的模拟以及漫游等。本文考虑解决方案如下。
1) 地形与贴图的问题及解决
在Unity3D构建模拟地形时,需求的数据有当地的数字高程模型(Digital Elevation Model),简称DEM;当地地表遥感数据,可转换为贴图与DEM结合导入系统。而分辨率作为DEM的重要指标之一,贴图与DEM分辨率要相互对应。且Unity3D并不支持DEM直接导入作为其支持的HeightMap数据,需要将DEM数据重新解析为引擎可以直接识别的格式,将DEM转换为Tiff格式并导入DEM2Raw中,转化为Unity3D所支持的Raw格式,导入为HeightMap识别。
2) 水土流失因子模拟问题及解决
研究区是闽西水土流失较明显区域,本文选用RUSLE模型 [
参数 | 意义 |
---|---|
Type (光线类型) | 分为定向光、区域光、聚焦光、点光源 |
Range (光源范围) | 仅适用于点光源与聚焦光,是光源中心辐射的距离 |
Color (光源颜色) | 根据不同场景效果选择光源颜色,日光选用白色 |
Intensity (光线强度) | 选定光源的强度,过亮或过暗都无法正常显示场景 |
Cookie (光线纹理) | 使光线在不同地区拥有不同亮度,聚焦光与点光源使用2D纹理,定向光与区域光使用立体纹理 |
Cookie Size (纹理大小) | 仅适用于定向光,可缩放纹理大小 |
No Shadow (关闭阴影) | 有光线但不显示阴影 |
Hard Shadow (硬阴影) | 模拟晴天时的阴影效果,阴影明显 |
Soft Shadow (软阴影) | 模拟阴天时的阴影效果,阴影虚化,比硬阴影更耗费系统资源 |
Resolution (阴影分辨率) | 控制阴影画质 |
Bias (阴影偏移度) | 设置阴影贴图对于光源的偏移量,当值过小时会在物体表面产生自身的阴影,当值过大时阴影会脱离投影的对象 |
Softness (柔和度) | 控制软阴影采样区的模糊偏移量 |
Draw Halo (绘制光晕) | 开启后才能启动光晕效果 |
Flare (闪光) | 可于光源上添加光晕 |
Render Mode (渲染模式) | 可选择自动、重要、非重要。自动为根据光源亮度及运行质量自动设置渲染模式;重要逐个像素渲染光晕;非重要为以最快方式渲染光晕 |
Lighting Map (光照贴图) | 分为自动、实时灯光计算、非实时灯光计算 |
表2. 光影系统
3) 漫游问题及解决
在系统中建立第一人称摄像机作为化身人类,以空中视角观看模拟水土流失过程。为避免用户漫游时难以判断所处位置,系统中加入了用户定位小地图功能,可以帮助用户实时获取摄像机所在位置。
系统设计包括需求分析、可行性分析、系统开发环境、系统功能设计以及水土流失RUSLE应用模型,技术路线流程见图3,系统结构功能见图4。关于需求分析、可行性分析、系统开发环境本文在上述已提及,下面简要说明对水土流失模型的因子选择。
图3. 技术路线图
图4. 系统功能结构图
本文选用RUSLE通用水土流失模型(A) [
1) 降雨侵蚀力因子R
R作为降雨侵蚀力因子,反映了降雨引起土壤侵蚀的潜在能力,是确定降雨量与土壤流失量之间的相互关系,本文研究对象为中国闽西地区,则参考上杭县城总体规划 [
式pi中为月降雨量,本文选取中国气象站2015年上杭县降水计算其降水侵蚀力因子。
2) 土壤可侵蚀性因子K
由Sharply和Williams把土壤可侵蚀性因子K的计算方法 [
式中,SAN为砂粒含量(%),SIL为粉砂含量(%),CLA为粘粒含量(%),c为有机碳含量(%),
3) 坡度坡长因子LS
AML (ARC Macro Language,ARC宏命令语言)是ARC下的语言开发环境,用户可以利用Arc/Info命令语言进行在原有基础上的二次开发。本文以美国学者Hickey基于AML语言编译的LS坡度坡长因子提取语句,通过闽西地区DEM数据,在Arc/Info Workstation中得出闽西地区LS因子图层,并以闽西地区上杭县县界文件对得出的LS因子图层进行裁切。
以上各式中,λ为水平坡长,α为坡长指数,θ为坡度。
4) 植被覆盖与管理因子C
植被覆盖与管理因子C为在土壤、坡度和降雨条件相同时,某一特定作物或植被情况下的土壤流失量与耕种过后连续休闲土地的土壤流失量的比值,本文采用现有文献中对植被覆盖与管理因子C的求解公式 [
① 求解植被覆盖度C [
本文通过ENVI分析闽西地区Landsat8 TM影像,根据公式(4) [
② 解算植被覆盖与管理因子C [
由公式(2)在ArcGIS中得出C因子的栅格图像。
5) 水土保持措施因子P
水土保持措施因子P是指特定水土保持措施下的土壤流失量与相应未实施该措施的顺坡种植时的土壤流失量之比值 [
将以上水土流失因子栅格图像导入ArcGIS,利用栅格计算器将各个因子进行连乘,并由RUSLE模型的英制单位转为公制单位,按照《土壤侵蚀分类分级标准》 [
Basic Stats | Min | Max | Mean | Stdev |
---|---|---|---|---|
Band 1 | −0.296243 | 0.530564 | 0.145254 | 0.150729 |
表3. 归一化植被指数
图5. 上杭县LS因子、C因子与土壤侵蚀分布情况图示
1) 研究区模拟地形的构建
通过申请微软地图BingKey获得微软地图在Unity3D中的接口,选定坐标为的闽西地区,在Unity3D中调用WorldComposer可在微软地图的卫星图像中导出最高为19级分辨率为0.3米的遥感影像数据,高程数据为级别14级分辨率为10米数据,但在微软地图中中国闽西地区卫星遥感图像只能达到70m的分辨率。WorldComposer只有输出不带高程的卫星图像,但结合TerrainComposer可以添加高程,增加地形起伏度,添加噪声提高地形细节,在卫星图像和纹理的基础上,加上云、山体阴影等。
2) 水土流失模型的应用
根据上述RUSLE模型计算,选取上杭县旧县镇为水土流失严重区域,系统选取该地区作为主要模拟区域。
3) 空间坐标系的转换
系统将闽西地区由地理空间坐标系的绝对坐标转化为Unity3D虚拟环境的相对坐标,需要重新定义其XYZ三个方向的相对坐标值(图6(a))、旋转程度(图6(b))、缩放程度(图6(c))。本系统定义参数如表4。
本系统将地理信息数据与游戏开发相结合,解决了将实际地形导入Unity3D技术难点,使地理数据能在游戏引擎中二次开发,同时添加了复杂的天气系统,可对目标区域进行一天24小时任意时段的气候模拟,并附带多形式的地图信息,模拟效果与实际较吻合。系统实现的关键技术包括:1) 模拟地形的构建;2) 水土流失模型的应用;3) 空间坐标系转换。可视化模拟系统的实现包括1) 模拟地形漫游;2) 鹰眼效应显示;3) 水土流失模型的模拟。
1) 模拟地形漫游展示
通过设定第一人称控制器各类参数(如表5),将主摄像机与控制器相绑定,在控制器移动时同时移动其摄像机。用户可实时控制控制器,从各个方向、不同距离观看水土流失过程,如图7。
Position | 20104 | 2126 | 18020 |
---|---|---|---|
Rotation | 0 | 0 | 0 |
Scale | 1 | 1 | 1 |
表4. 地形变换式
参数 | 数据类型 | 数值 |
---|---|---|
Can Control | Bool | 1 |
Max Forward Speed | Float | 500,000 |
Max Backward Speed | Float | 500,000 |
Slope Speed Multiplier | Float | |
Max Air Acceleration | Float | 15 |
Gravity | Float | 0 |
Sliding | Bool | 0 |
表5. 第一人称控制器参数
图6. 地形相对坐标值(a)、旋转程度(b)和缩放程度(c)
图7. 上杭县城地形漫游
2) 地图形式的鹰眼效应
系统包含三维与二维形式的地图信息,二维形式的地图以小地图的形式展现给用户。
小地图原理即在第一人称控制器中添加作为标记的子物体,以另一个摄像机作为高空摄像机作为总览,即可对第一人称控制器进行定位,并设置小地图初始缩放倍率与单次缩放值(见表6),完成小地图的制作(图8(a))。用户可以通过调用小地图,并通过放大或缩小小地图分辨率实时获取第一人称控制器所处的位置,弥补三维地图地理位置信息的显示的不足之处(图8(b))。
本文通过Unisky插件、Rainscapes插件制作闽西上杭县天气特效,通过语句调用其API,设置降雨量(等级)修正降雨强度、设置降雨覆盖等级定义积雨云覆盖面积、设置雨滴速度定义降落速度、设置大气散射半径修改天空的颜色、设置云到大气的距离修改用户的视距,设置太阳的亮度及其浓度、闪电与雷声发生频率、降雨发生的时间、降雨中心坐标,为提高近距离视觉效果,系统中加入了粒子系统辅助模拟降雨的过程,粒子具有初始发射速度与衰减时间,可用于控制雨量的大小,如图9。
实现图9的脚本关键语句如下:
void Awake() {
uniSky = GameObject.Find(UniSkyAPI).GetComponent(UniSkyAPUniSI) as kyAPI;//调用API
uniSky.SetStormLevel(float stormLevel,floatsfxLevel); //降雨等级
uniSky.LerpCloudCover(float cloudCover, float milliseconds);//循环降雨覆盖等级
uniSky.SetDropletLevel(float dropletLevel);//雨滴降落速度
uniSky.SetScatteringRadius(float scatteringRadius);//大气散射半径
uniSky.SetViewDistance(float viewDistance);//云层到大气的距离
uniSky.SetSunIntensity(float intensity);//太阳浓度
uniSky.SetLightningFrequency(float frequency);雷声频率
uniSky.LerpTime(float time, float milliseconds);//时间及流速
uniSky.SetStormCenter(Vector3 stormCenter);//降雨中心坐标
}
设置地形阻力模拟土壤可侵性(如表7),表现土壤对降水侵蚀的抑制作用(见图10)。
LS是地形地貌特征对土壤侵蚀影响的程度。DEM可转换为Unity3D可识别的HeightMap,将遥感影像作为贴图并修改HeightMap属性即可得到真实地形数据。最高处为梅花峰为1778 m,因此系统最高处不必高于最高峰过多,可提高加载速度。见表8和图11。
粒子可添加碰撞特性,将雨点与植被进行碰撞(如表9)。此处定义了粒子的碰撞抑制,使雨点碰撞后一定时间内消失;粒子反弹,实现雨点与植被碰撞后以一定角度反弹;粒子生命周期损耗,一定碰撞次数后生成新的粒子;粒子碰撞范围,使粒子与所有具有碰撞特性的物体碰撞。
综上,可实现措施因子的模拟——雨滴碰到植被能够受其影响,在树下时落下的雨点更少。模拟效果如图12。
Zoom Start Value | Zoom Min | Zoom Max | Zoom Change Value | |
---|---|---|---|---|
Zoom Mini Map | 20 | 10 | 30 | 10 |
Zoom Map | 50 | 10 | 65 | 10 |
表6. 小地图参数
参数 | 数据类型 | 数值 |
---|---|---|
Draw | Bool | 1 |
Tree Distance | Float | 20,000 |
Detail Object Distance | Float | 250 |
Detail Object Density | Float | 1 |
Tree billboard Distance | Float | 200 |
Tree Cross Fade Length | Float | 50 |
Tree Maximum Full LOD Count | Int | 50 |
表7. 地形详细参数
参数 | 数值 |
---|---|
Center | 24.9516, 116.408 |
Upper Left | 25.27, 116.056 |
Lower Right | 24.6325, 116.76 |
Size | 70.97 (km), 70.97 (km) |
Height center | 386 (m) |
Heightmap Resolution | 1025 (1024*1024) |
Filter Mode | Trilinear |
Terrain Height Max | 2000 (m) |
表8. 地形参数
参数 | 数值 |
---|---|
Dampen | 0.925 |
Bounce | 0.25 |
Lifetime Loss | 0.25 |
Min Kill Speed | 0 |
Collides With | Default |
Collision Quality | High |
Send Collision Message | False |
表9. 粒子碰撞参数
图8. 小地图(a)和小地图缩放(b)
图9. 模拟夜间降水(a)、晨间降水(b)以及傍晚降水
图10. 土壤对降雨的抗侵蚀性
图11. 上杭县地形模拟
图12. 粒子与树碰撞(a)和树下落下的粒子较少(b)
本文以研究区典型水土流失区域为例,实现基于Unity3D的RUSLE水土流失情景模拟系统。以Unity3D开发的水土流失可视化系统,在实现其“可视”的同时,增加了用户一定的“可控”性。但在具体应用时,对于计算机性能要求较高,尤其是平面缩略地图的载入需要16 G以上的内存,所以优化缩略图的贴图分辨率,降低内存占用率,保证低配置环境运行,则在今后要进一步研究。总之本文在虚拟可视化技术方面做了有益探讨,研究结果对上杭县水土保持研究有一定的实用价值,对我国南方红壤侵蚀区保护也有一定的参考意义。
福建省自然科学基金(2014J01149),福建省公益类重点项目基金(2013R02)。
赖良鹏,余明. 基于Unity3D的RUSLE水土流失情景模拟——以闽西地区为例 Situational Simulation of Regional Soil Erosion Based on Unity3D Engine—Take Western Fujian as an Example[J]. 测绘科学技术, 2016, 04(03): 86-99. http://dx.doi.org/10.12677/GST.2016.43011