基于Unity3D的三维海底地形建模

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【摘要】本文运用虚拟现实技术,以Unity3D为建模工具,介绍了三维海底地形地貌建模的建模步骤以及最终的建模效果,实现了三维海底地形地貌建模,为三维可视化海底管道集成系统的建立创造条件。

【关键词】海底地形;输油管;风险评估;三维模型;Unity3D
0 引言
海底管道是海洋油气开发的重要设施,近年来全球海底管道泄漏事件时有发生,造成了巨大的经济损失与生态环保破坏,世界各国对于海底管道的检测和风险评估日益重视。

海底管道三维动态信息系统集成,旨在建立适合集成数据支持体系和基于该体系的网络三维可视化集成系统。

郝燕铃和路辉提出了基于OpenGL的具有真实感的三维海底地形显示的方法[1]。

申浩、田峰敏和赵玉新提出了一种利用电子海图已有的水深数据生成三维数字高程模型的方法[2]。

邱秋香提出了将IFS分形插值曲面算法应用于海底离散的水深高程数据插值过程,在Creator建模工具中使用Delaunay转换算法生成三维海底地形模型[3]。

作为一个三维虚拟现实的开发平台,Unity3D具有兼容操作系统可跨平台发布并部署、开发效率高、人机交互功能强大、三维效果逼真、内置网络功能的特点,被广泛地运用于游戏开发和虚拟现实。

Unity3D支持所有主要文件格式的资源,并能和大部分相关应用程序协同工作,其内置的地形引擎可以实现广阔复杂的地形场景在低端硬件上流畅运行。

本文以Unity3D为建模工具,结合Photoshop图像处理技术,构建一个基于Unity3D的三维海底地形地貌模型。

模型具有真实的三维立体感,以虚拟海底环境为目标,用于作为三维可视化海底管道集成系统建立的基础。

1 总体地形建模方案
本文建模的总体方案是通过Unity3D地形引擎创建一个基础地形模型,在这个基础地形上添加各种场景效果,实现各种功能,最终形成一个三维海底地形地貌的模型。

建模大的具体流程如图1所示。

图1 三维海底地形地貌建模流程图
2 基础地形建模
打开Unity3D创建一个新的Project,将建模所需的所有资源导入新建的Project中。

在Project中新建一个Scene,本文建模的所有操作都在这个Scene中进行,对于过于庞大的地形,可以创建多个Scene,用切换的方法将分块的地形连接起来。

(1)Heightmap生成真实地貌
Heightmap是一种二维用明暗表示地形高低的图片[4]。

在Photoshop中制作一张大小为2的幂的地形灰度图,保存成RAW文件,获得Heightmap。

在Unity3D菜单栏中,单击Terrain,选择Import Heightmap-raw选项,将制作好的Heightmap导入,调整对应的图像参数和电脑系统参数,对地形大小进行设置。

完成后,添加一束平行光,在Scene视图中查看导入的地形,效果如图2、图3所示。

图2 地形俯视图图3地形起伏效果
(2)细节处理
将Heightmap导入地形后,选中Hierarchy中的Terrain,使用Inspector面板中的地形绘制工具,对导入的地形进行起伏处理和平滑处理的微调。

基础地形成型后,为地形绘制纹理。

选择Inspector面板中,地形绘制工具栏的第四个工具Paint the terrain texture,单击Edit Textures,选择Add Textures,将用作地形基础纹理的岩石贴图导入。

在Scene视图中查看贴图后的地形,在地势高耸和凹陷的地方出现纹理拉伸变形的情况。

在Project面板对岩石纹理贴图重命名,再次将贴图导入至Terrain Texture 中,并选中纹理单击Edit Textures,将Tile size X与Tile size Y调小。

在Brushes 栏中选择一个羽化的笔刷,调节笔刷大小和透明度,在Scene视图中发生纹理拉伸的地方进行修正,完成基础纹理绘制。

参照上述方法将沙地、淤泥、青苔等贴图依次导入Terrain Texture中,设置不同的Brushes,调节的大小和透明度,在基础纹理的地形上依次绘制出沙地、淤泥地,以及作为修饰的青苔。

通过反复的绘制,得到复杂的混合纹理地形,完成整个基础地形的建模。

基础纹理地形与混合纹理地形效果如图4、图5所示。

图4 基础纹理地形效果图5 混合纹理地形效果
3 场景效果添加
3.1光源与天空盒添加
添加基础地形之后,模型中只有一束用于查看的平行光,整个画面的光照感不真实。

调整地形上方那束平行光的方向和光照强度,使整个地形细节清晰,画面柔和。

在需要看清的地形阴暗面添加点光源,调整点光源的发光角度、照射距离与亮度,使原本处在阴影下的细节可见。

基础地形模型悬浮在场景中,周围是黑色的背景,需要添加一个天空盒,将
地形背景改成现实世界的背景。

天空盒相当于一个巨大的盒子,用六张无缝拼接的贴图组成六个面,将整个地形模型包裹起来,成为整个地形模型的背景。

在菜单来中单击Edit,选择Render Settings选项,打开场景渲染设置,对渲染设置中的天空盒材质设置为Sunny3 Sky,完成场景天空盒的添加。

在Scene 视图查看天空盒的添加效果如图7所示。

图6 灯光效果图7 天空盒效果
3.4立体水效果添加
(1)平面水添加
为地形添加水,将Daylight Water水模型导入场景,设置网格过滤器为平面,调整模型的三维坐标与尺寸使水面模型平铺满整个地形模型。

为了节省内存,水模型是单向平面模型,即模型的水面只能在模型上方可见,没有水下视觉效果。

(2)立体水效果实现
立体的水效果无法通过单一的模型来实现。

现实中的水面在穿越的时候有一个视觉切换的过程,在水面上时是正常的视觉效果,当进入水下视觉切换成蓝色雾化的视觉。

本文的模型通过安装碰撞触发,用脚本实现这样的视觉切换。

创建一个贴放在水面下一个无mesh Renderer的标签Tag为“Water Collide”的cube与摄像机做碰撞检测,设置cube的盒碰撞器,并激活它的触发器属性。

模型中交互操作都需要通过脚本实现,是脚本让模型中的元素附有生命。

编写一个触发雾化的脚本,脚本的功能方法如表1所示。

表1 WaterCollide脚本功能实现
摄像机本身是不具有碰撞属性的,而First Person Controller可以检测碰撞,直接将WaterCollide脚本添加给水下机器人,实现水下雾化视觉,水上正常视觉的效果。

4 模型功能实现
4.1摄像机安放
摄像机可模拟人眼产生的视觉效果,与人眼的视角一样,摄像机的视角也是有限的,而海底是一个十分庞大的场景,需要多个摄像机进行观察,不同位置的摄像机根据实际需要调整不同设置。

在场景中摄像机的数量是没有限制的,可以在多个摄像机之间进行视角切换,但是一个场景中Audio Listener最多只能有一个,所以去掉所有摄像机中的Audio Listener功能。

安放好足够数量的摄像机后,要对所有的摄像机有一个统一的控制。

创建一个空对象,命名为“CameraControl”用以控制摄像机。

在工程中创建一个名为“CameraControl”的摄像机控制脚本,调用Update方法,采用分支结构算法,实现如表2所示功能。

给CameraControl对象添加CameraControl将脚本组件,在CameraControl对象的Inspector视图中为每个变量添加对应的摄像机对象,控制每个摄像机。

表2 CameraControl脚本功能表
4.2漫游角色添加
除了定点摄像机静态地展示地形模型外,还需要一个可漫游的摄像机动态地对模型进行观察展示。

为海底地形中创建一个First Person Controller,模拟一个水下机器人,实现海底漫游探测功能。

First Person Controller有一个摄像机用来模拟探机器人的视角进行海底观测,设置First Person Controller的最大移动速度、重力、惯性、爬坡限制、台阶高度,模拟机器人在海底的移动能力。

5 整体调试
在整个建模过程中,调试是不断进行的。

每添加一个效果都要运行调试,查
看运行结果,修改调整有欠缺的效果。

每一个逼真的三维效果都是不断调试出来的。

在所有地形元素、场景效果以及功能都添加完成后,运行游戏,查看在摄像机视角下场景的效果,以及功能的实现情况。

主要调试每个摄像机的视角与安放位置。

6 建模结果
模型中一共安置了4个定点摄像机——Camera1、Camera2、Camera3、Camera4,其中Camera1为水上定点摄像机,其余3个为水下定点摄像机,同时还有一个携带摄像机Camera5的水下漫游机器人。

分别按下键盘数字键“1”、“2”、“3”、“4”、“5”,可在4个定点摄像机与机器人摄像机之间进行视角的自由切换,实现不同地点实时监测的功能。

键盘“W”、“S”、“A”、“D”键分别控制水下机器人前、后、左、右的移动功能,鼠标的移动控制机器人摄像机的方向。

运行效果如图8-图13所示。

图8 Camera1视觉效果图9 Camera2视觉效果
图10 Camera3视觉效果图11 Camera4视觉效果
图12 Camera5水上视觉效果图13 Camera5水下视觉效果
7 结论
本文将虚拟现实技术运用于海洋事业建设中,利用Unity3D建立海底地形地貌的三维模型,实现了虚拟现实的海底地形漫游,结合Photoshop图像处理技术,
运用虚拟现实技术,通过脚本编写,模型建立,为虚拟海底环境,建立海底管道三维动态可视化信息系统,实现的海洋油气开发风险评估、预防与应急管理支持,提供可行途径。

从国防军事上分析,军事模拟仿真对于军事作战的指挥有着重要的战略意义及经济效益。

三维建模技术是军事仿真的核心和基础,将基于Unity3D三维海底地形地貌建模,应用于海军军事仿真,虚拟战场环境,建立虚拟战场,模拟作战,对于优化军队训练方式,提高作战指挥能力,增强军队实力都有重要意义。

参考文献
[1]郝燕铃,路辉.基于OpenGL实现海底地形显示的研究[J].计算机仿真,2003,20(10):81-84
[2]申浩,田峰敏,赵玉新.基于V oronoiCells插值的三维海底地形图生成方法[J].系统仿真学报,2006,18(2):444-450
[3]邱秋香.三维海底地形仿真技术的研究与实现[D]. 哈尔滨工程大学硕士学位论文,2012
[4]Will Goldstone(英)著.Unity3.X Game Development Essentials[M].Birmingham:Packt Publishing Limited,2011:61-137
[5]吴亚峰,于复兴.Unity3D游戏开发技术详解与典型案例[M].北京:人民邮电出版社,2012
[6]宣雨松.Unity3D游戏开发[M].北京:人民邮电出版社,2012
[7]干建松.基于Unity3D的室内漫游的关键技术研究[J].盐城工学院学报(自然科学版),2011,24(4):56-59
[8]朱惠娟.基于Unity3D的虚拟漫游系统[J].计算机系统应用,2012,21(10):36-65。

相关文档
最新文档