好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

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

马龚丽,杨敏,支雄飞, 周鹏,马修水

1

2

1,3

1

1

1浙江大学宁波理工学院 3安徽大学 2国家海洋局北海海洋技术保障中心

【摘要】 本文运用虚拟现实技术,以Unity3D为建

模工具,介绍了三维海底地形地貌建 模的建模步骤以及最终的建模效果, 实现了三维海底地形地貌建模, 为三维可视化海底管道 集成系统的建立创造条件。 【关键词】 海底地形;输油管;风险评估;三维模型;

Un ity3D

0引言

海底管道是海洋油气开发的重要设施,近年来全球海底管道泄漏事件时有发 生,造成了巨大的经济损失与生态环保破坏, 世界各国对于海底管道的检测和风 险评估日益重视。海底管道三维动态信息系统集成,旨在建立适合集成数据支持 体系和基于该体系的网络三维可视化集成系统。

郝燕铃和路辉提出了基于 OpenGL的具有真实感的三维海底地形显示的方 法⑴。申浩、田峰敏和赵玉新提出了一种利用电子海图已有的水深数据生成三维 数字高程模型的方法⑵。邱秋香提出了将IFS分形插值曲面算法应用于海底离散 的水深高程数据插值过程,在Creator建模工具中使用Delaunay转换算法生成三 维海底地形模型

[3]

。作为一个三维虚拟现实的开发平台,Unity3D具有兼容操作 系统可跨平台发布并

部署、开发效率高、人机交互功能强大、三维效果逼真、内 置网络功能的特点,被广泛地运用于游戏开发和虚拟现实。 Unity3D支持所有主 要文件格式的资源,并能和大部分相关应用程序协同工作,其内置的地形引擎可 以实现广阔复杂的地形场景在低端硬件上流畅运行。

本文以Unity3D为建模工具,结合Photoshop图像处理技术,构建一个基于 Unity3D的三维海底地形地貌模型。模型具有真实的三维立体感,以虚拟海底环 境为目标,用于作为三维可视化海底管道集成系统建立的基础。 1总体地形建模方案

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

1所示。

图1三维海底地形地貌建模流程图

2基础地形建模

打开Unity3D创建一个新的Project,将建模所需的所有资源导入新建的 Project中。在Project中新建一个Scene本文建模的所有操作都在这个 Scene中 进行,对于过于庞大的地形,可以创建多个 连接起来。

(1)Heightmap生成真实地貌

Heightmap是一种二维用明暗表示地形高低的图片 ⑷。在Photoshop中制作 一张大小为2的幕的地形灰度图,保存成 RAW文件,获得Heightmap。

在Unity3D菜单栏中,单击 Terrain,选择Import Heightmap-raw选项,将制 作好的Heightmap导入,调整对应的图像参数和电脑系统参数, 对地形大小进行 设置。完成后,添加一束平行光,在Scene视图中查看导入的地形,效果如图2、 图3

Scene用切换的方法将分块的地形

所示。

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

参照上述方法将沙地、淤泥、青苔等贴图依次导入

Terrain Texture中,设置

不同的Brushes调节的大小和透明度,在基础纹理的地形上依次绘制出沙地、 淤泥地,以及作为修饰的青苔。通过反复的绘制,得到复杂的混合纹理地形,完 成整个基础地形的建模。基础纹理地形与混合纹理地形效果如图

4、图5所示。

图4基础纹理地形效果

3场景效果添加 3.1光源与天空盒添加

图5混合纹理地形效果

添加基础地形之后,模型中只有一束用于查看的平行光, 整个画面的光照感 不真实。调整地形上方那束平行光的方向和光照强度, 使整个地形细节清晰,画 面柔和。在需要看清的地形阴暗面添加点光源,调整点光源的发光角度、照射距 离与亮度,使原本处在阴影下的细节可见。

基础地形模型悬浮在场景中,周围是黑色的背景,需要添加一个天空盒,将 地形背景改成现实世界的背景。天空盒相当于一个巨大的盒子,用六张无缝拼接 的贴图组成六个面,将整个地形模型包裹起来,成为整个地形模型的背景。

在菜单来中单击Edit,选择Render Settings选项,打开场景渲染设置,对渲

染设置中的天空盒材质设置为 Sunny3 Sky,完成场景天空盒的添加。在 视图查看天空盒的添加效果如图 7所示。

Scene

图6灯光效果

3.4立体水效果添加

(1) 平面水添加

图7天空盒效果

为地形添加水,将Daylight Water水模型导入场景,设置网格过滤器为平面, 调整模型的三维坐标与尺寸使水面模型平铺满整个地形模型。

为了节省内存,水

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

(2) 立体水效果实现

立体的水效果无法通过单一的模型来实现。现实中的水面在穿越的时候有一 个视觉切换的过程,在水面上时是正常的视觉效果,当进入水下视觉切换成蓝色 雾化的视觉。本文的模型通过安装碰撞触发,用脚本实现这样的视觉切换。

创建一个贴放在水面下一个无 mesh Rendere的标签Tag为“WatCollide ”的 cube与摄像机做碰撞检测,设置cube的盒碰撞器,并激活它的触发器属性。模型 中交互操作都需要通过脚本实现,是脚本让模型中的元素附有生命。编写一个触 发雾化的脚本,脚本的功能方法如表 1所示。

表1 WaterCollide脚本功能实现

调用方法 On TriggerStay On TriggerExit 调用条件 touch.gameObject.tag==\ touch.gameObject.tag==\ 摄像机本身是不具有碰撞属性的,而 First Person Co ntroller可以检测碰撞, 直接将WaterCollide脚本添加给水下机器人,实现水下雾化视觉,水上正常视觉 的效果。

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

基于Unity3D的三维海底地形建模马龚丽,杨敏,支雄飞,周鹏,马修水121,3111浙江大学宁波理工学院3安徽大学2国家海洋局北海海洋技术保障中心【摘要】本文运用虚拟现实技术,以Unity3D为建模工具
推荐度:
点击下载文档文档为doc格式
5pjfo6qj1m5zpak1cslt1is53085cn00i8f
领取福利

微信扫码领取福利

微信扫码分享