基于3ds Max和Unity 3D海底管道三维场景建模.docx
《基于3ds Max和Unity 3D海底管道三维场景建模.docx》由会员分享,可在线阅读,更多相关《基于3ds Max和Unity 3D海底管道三维场景建模.docx(18页珍藏版)》请在冰豆网上搜索。
基于3dsMax和Unity3D海底管道三维场景建模
宁波理工学院
毕业设计(论文)
题目基于3dsMax和Unity3D海底管道三维场景建模
姓名周鹏
学号3110404124
专业班级11自动化2班
指导教师马修水
学院信息工程与工程分院
完成日期2015年5月29日
摘要
随着我国对海洋油气的开发,铺设的海底管道不断增加,海底油气管线已成为油气集传输与储运系统的一个重要组成部分。
分布范围较广,尺寸不一是这些海底管道最大的两个特点。
再加上海浪的冲刷,海底表层地基的不稳定以及一些海上事故等原因,海底管道十分容易破裂或者泄漏,从而造成了环境的破坏和经济的损失。
本文利用了3dsMax与Unity3D创建三维海底场景。
在3dsMax中制作各种三维模型和动画;在Unity3D中对海底地形进行建模,实现三维海底场景的漫游。
关键词:
海底管道;3dsMax;Unity3D
Abstract
Thelayingofsubmarinepipelines isincreasingwiththedevelopment of offshoreoiland gasinourcountry.Submarineoilandgaspipelinenowhasbecomeanimportantpartoftransmissionandstoragesystemoftheoilandgas.Thesubmarinepipelineshastwobigcharacteristicwhichiswiderangeofdistributionanddifferentsize.Thesubmarinepipelineisveryeasytoruptureorleakagebecauseofwaveerosion,theseasurfaceoffoundationisnotstableandsomeseaaccidents.Thesehavecausedseriousenvironmentaldamageandeconomiclosses.
Thispapercreates3Dsubmarinescenewhichbase3dsMaxandUnity3D.Thatiscreate3Dmodelsand3Danimationsin3dsMax.Modelingofsubmarinetopographyandroaming3DsubmarinesceneisinUnity3D。
Keywords:
submarinepipeline;3dsMax;Unity3D
第一章概述
1.1研究的目的与意义
管道是一种需要大量资本成本的固定资产[1]。
但是,一旦铺设完成,管道的运行和维护成本相对较小,其运行周期可达40年或更久。
一条陆地管道很容易受到战争或恐怖袭击的损害,并且管道途径的某个国家的政治干扰还可能造成管道运行中断。
正是这一原因阻碍了中东到欧洲的原油管道建设,从尼日利亚到欧洲的天然气管道的建设仍处于搁置状态。
管道运输的能耗很少,与使天然气液化、运输液化天然气和再汽化的能耗相比,它所消耗的能量确实要小的多。
现在,有越来越多的原油和天然气都产自海上油气田,这些产物往往需要借助管道运至海岸。
在油田内部,将原油和天然气从采油树和汇管运输到平台上或是从一个汇管输到另一个汇管,这些都是通过管道实现的。
很多管道的主体在陆地上,但仍有部分管段不得不穿过海域、岛与岛之间的海峡和河口湾地区。
从而,在这里海底管道显得十分重要。
随着我国海洋产业的不断发展,许多远距离输送的海底管道投入用于海底石油和海底天然气的输送。
分布范围较广,尺寸不一是这些海底管道最大的两个特点。
再加上海浪的冲刷,海底表层地基的不稳地以及一些海上事故等原因,海底管道十分容易破裂或者泄漏,从而造成了环境的破坏和经济的损失。
如图1.1所示。
图1.1海底管道失事
自从60多年前世界上第一条海底管道铺设以来到现在,海底管道现已成为还是油气开采与运输的最重要工具,估计现在各国铺设的海底管道总长度已经达到十几万千米。
另外对海底管道进行风险评估研究是十分重要的。
这是因为在这30年间海底管道失效事故总共发生1000多例[2],平均每年发生的失效事故有30多例子,从而可见海底管道发生失效事故是比较频繁的。
化工管道和陆地管道的安全性评估研究较多,海底管道较少。
同时海底管道的受力更为复杂,影响因素较多。
特别是海洋环境的水动力作用机理复杂,经常引发管道破坏。
海底管道的评估比化工管道和陆地管道更加复杂,还有一个原因是你还睡的腐蚀和河床的不稳定。
过去海底管道安全管理都为事后的被动响应,将事后响应变为事前检测预防才是研究海底管道安全管理的新方向。
对此应用海底管道探测及风险评估技术实现海底管道数据的可视化来实现。
实现三维海底管道数据的可视化,可以利用虚拟现实技术进行三维海底场景建模。
本文基于3dsMax与Unity3D建立真实海底场景模型,大大提高了场景的真实性和可操作性。
本文中建立的场景给使用者提供了全方面的操作性,这种技术为海底管道风险评估检测提供了便利。
1.2国内外研究现状和发展趋势
在国内外很多相关的部门和学校对海底管道的安全评估进行了深入的研究。
他们的研究方向主要集中在工作荷载条件下的含缺陷管道试件的断裂和疲劳的机理分析[3]。
各种缺陷对管道安全性影响,已经有了一些评估方法。
但是由于技术与经验的局限,一些受到比较复杂的动态的海洋环境下的海底管道安全评估在国内外还是十分稀少的。
在国内,专门机构综合分析海底管道失效事故的可能性和事故的后果,对各种不同的管道进行划分风险等级,通过不同的等级对海底管道的风险程度进行排序,为后期的管道检测维修、使用与更换提供了积极的知道依据。
这一管道风险分析的操作规范起到了很大的作用。
西南石油大学和中石油西南油气田分公司在2000年联合研发了一套“输气管线风险评价软件”[4,5],成功地对重庆达卧输气管道进行全线的风险评价。
海底管道的维修如图1.2所示。
图1.2海底管道维修
在国外,管道的风险评价,始于20世纪70年代的美国。
美国在撰写的管道管理手册,其当时作为全世界各国开发风险评估软件的主要依据中十分详细地阐述了管道风险评估方法与评估模型。
英国健康与安全委员会在管道风险管理项目研究中,研究出MISHAP软件包[6],用于计算管道的失效风险,并取得了实际应用。
挪威船级社DnV在海底管道设计和评估方面颁布了多种设计规范和推荐做法。
其中给出的基于概率的分享安全系数评估方法[7]和基于传统应力的安全系数评估方法是专门针对含有腐蚀缺陷的管道,并且给出了推荐做法。
可用于海底管道在内压,或内压和轴向力联合作用的失效评估。
1.3本设计的主要内容
本课题来源于国家海洋局北海海洋技术保障中心发布的海底管道探测技术集成及风险评估技术子任务:
海底管道三维动态系统集成(编号:
2013418026-2-5)。
本论文对以下几个方面的内容进行研究和论述:
(1)研究3dsMax的三维建模方法,对海底中的各个地物,包括:
石头、鱼、水草等进行模型制作;
(2)研究3dsMax中的三维模型贴图原理,骨骼动画(对鱼模型添加骨骼动画)。
(3)研究Unity3D中海底场景布置,海底地形构建与场景漫游技术。
本文的构成如下:
第一章概述本文研究的目的和意义,国内外研究现状和发展趋势,以及本文的主要研究内容。
第二章通过对三维模型的制作,三维模型贴图,骨骼动画的概念的介绍。
包含其特点、意义、原理。
第三章介绍了Unity3D中三维海底场景布置,海底地形构建以及第一人称场景漫游的工作原理及方法。
第四章对本文所做的工作进行总结,并提出一些建议。
第二章三维海底场景建模3dsMax的应用
2.13dsMax工具介绍
3DMax是Autodesk公司开发的面向设计方案与创作过程的三维动画渲染和制作软件,可根据用户需要构建、显示与编辑三维景观模型,能通过与设计人员交互式地设置和输入数值,精确地确定模型的位置及尺寸。
现在的电影、三维游戏、动漫等行业都在广泛使用这款软件,因为它十分满足制作高端游戏、3D电影的需要[8]。
现已是世界上应用最广的三维建模、动画、渲染工具之一。
其主要特点有:
功能大,扩展性好;操作简单,容易上手;和其它相关软件配合流畅。
本文中采用3dsMax作为海底各种三维模型的制作工具。
2.2三维模型
三维模型的制作在3dsMax中处于绝对的主导地位。
3dsMax提供的建模方法非常丰富,且有各自不同的应用场合。
从几何体建模到修改器建模,再到复合建模、多边形建模、NURBS建模等高级建模方法,能够让使用者根据自己的需要选择合适的建模方法,从而创建出逼真的模型。
3dSMax还有一个重大的特点就是可导出多种形式的模型文件,从而与其他软件进行无缝对接,将制作好的模型在其他的软件中再次利用[9]。
2.2.1基础建模方法
基础建模方法包括几何体建模和修改器建模。
其中几何体建模指在场景中实体3D对象和用于创建它们的对象,称为几何体。
通常,几何体组成场景的主题和渲染的对象。
所以根据几何体的创建方法和常用的参数,包括标准几何体、扩展几何体、门、窗、楼梯以及植物等各种建筑扩展对象,通过堆积的方法建立简单的模型。
修改器建模为二维图形是进行复杂建模的基础。
在二维图形中添加可渲染的特性就可将2D图形转换为3D模型。
例如添加Lathe(车削)修改器旋转截面曲线,添加Extrude(挤出)修改器挤出二维图形、添加Bevel(倒角)修改器创建带倒角的实体模型[10]。
2.2.2高级建模方法
高级建模方法包括复合建模、多边形建模、NURBS建模。
利用复合建模方法,可以将两个或者多个对象组合成单个对象。
复合建模包括放样建模、布尔运算建模、散布建模。
放样建模本质就是放样对象沿着路径挤出二维图形。
布尔运算建模通过对两个对象执行布尔操作将它们组合起来。
散布建模是将所选的源对象散布为阵列,或散布到分布对象的表面。
多边形网格建模是高效建模手段之一。
网格是通过在空间中三个离散点来组成一个三角面,而三角面不同的组合排列,可以使简单的形体越来越复杂。
利用它可以对细节少和细节多的地方进行不同的细分,使最终模型的网格分布疏密得当。
从而对模型的网格密度进行较好的控制[11],在后期还能比较及时地对不合适的网格分布进行校正。
多边形建模的不足之处是多边形对象中的细节表现需要很多的面,随着面熟的增加,对计算机性能的依赖也越来越大。
NURBS建模适用于使用复杂的曲线建模曲面。
NURBS表面是由一系列曲线及控制点确定的。
其中NURBS的控制点分为两种[12]。
一种称之为普通点,是位于表面或曲线上直接控制曲线形状的定位点。
另一种是用来控制表面或曲线的弯曲程度及其位置的控制顶点(ControlVertex,CV)NURBS。
从而衍生了由样线条和由标准几何体创建NURBS模型这两种NURBS建模方法如图2.1与2.2所示。
图2.1由样线条创建NURBS模型图2.2由标准几何体创建NURBS模型
2.3三维海底场景中模型制作
三维模型好坏直接影响到三维海底世界的真实度。
海底场景中的三维模型包括例如海草,鱼,石头等,根据模型不同的特性选用上述介绍的合适的建模方法对海底场景中所需的模型进行建模。
另外,在中做模型过程中为了保证后期真个海底场景的流畅运行还应该遵循一个原则。
那就是在可以保证所需模型不失真的前提下,我们尽量选用最简洁的模型[13]。
2.3.1石头模型的制作
由于石头模型比较单一、简单,所以使用基础建模方法中的修改器建模。
第一种小型的石头模型,在视图中创建一个立方体,执行修改命令中的FFD2*2*2进行修改,如图2.3所示;第二种是较大的石头模型,在视图中创建一个圆柱体或者圆台,执行修改命令中的噪波进行修改,如图2.4所示。
第三种柱形的石头模型,利用车削修改器的方法制作。
首先选中图形,然后在样线条中选择线并在视图中画出一个类似柱形的线条,最后添加车削命令,如图2.4所示。
图2.3小型石头模型图2.4大型石头模型图2.5柱状石头模型
2.3.2鱼模型的制作
鱼模型相对石头模型来说比较复杂,采用复合建模与多边形网格建模。
首先,工作分成三步进行:
鱼头,鱼身,鱼尾。
鱼头用盒子建模和细分建模表面编辑,鱼身和鱼尾的制作用多边形网格建模。
最后,运用复合建模中的布尔运算建模将鱼模型的三个部分结合在一起。
如图2.6所示。
图2.6鱼模型
2.3.3草模型制作
草模型运用多边形网格建模。
首先创建一个面的几何图形,然后将其转换成可编辑多边形,接着进入子对象编辑层次,对其修改其弯曲程度,截面大小等,最后生成模型并对其进行细化。
如图2.7所示。
之后给草模型添加关键帧动画,选中草模型的重心,将其移动到根部,根据草的摆动设置其关键帧数据如图2.8所示,最后将关键帧数据保存。
图2.7水草模型图2.8关键帧数据
2.4三维模型材质与贴图
在生活中每一样东西都是由一定材料组成的,不同材料的东西所体现出来的外在属性会给人不同的感觉。
同样的在三维设计中,我们对三维模型进行光学特性和物理特性的设置,赋予其质感,从而构造出其真实世界中自然物质表面的视觉效果。
贴图是一个增强物体质感和真实感的强大技术。
即使很蹩脚的模型,如果能和好地进行贴图处理,它的面目会得到很大改观。
2.4.1贴图类型
不同的贴图类型产生不同的效果,并且有其特定的行为方式。
在3dsMax中提供了5类贴图。
分别为2D贴图、3D贴图、合成器贴图、颜色修改器贴图已经其他贴图。
位图是由彩色像素的固定矩阵生成的图像,是最常用的贴图类型[13]。
渐变贴图是从一个颜色为到另外一个颜色进行着色。
细胞贴图是一种程序贴图,生成用于各种视觉效果的细胞图案。
平面镜贴图当应用到共面,面集合时生成反射环境对象的材质,自动生成包含大部分环境的反射。
反射/折射贴图生成反射或折射表面,用于弯曲或不规则形状的对象。
2.4.2标准材质贴图通道
为了突出表现各种物体不同的特性,当我们完成模型之后给物体的表面和里面赋予特性的过程称之为加上材质。
材质可以让模型表现出十分真实的质感,例如表现出金属、塑料、橡胶等性质。
在3dsMax中一个材质可以由多个贴图组成,贴图通道的作用是在物体的不同区域产生不同的贴图效果,也是用来在3dsMax中实现复合贴图坐标的一种技术手段。
在标准材质中包含了12种贴图通道,常用的并不多。
在有的时候创建比较复杂的贴图材质时往往需要多个材质编辑器贴图通道。
漫反射贴图表现材质的纹理效果来自于将物体自有的颜色转为被选的贴图;环境纹理贴图通常用于控件对象环境光的量和颜色。
漫反射贴图和环境纹理贴图两者常锁定在一起,不单独使用。
图2.9是启用凹凸通道前后的效果对比。
图2.9采用凹凸通道前后效果对比
2.4.3贴图坐标
如果赋予物体的材质中包含任何一种二维贴图时,物体就必须具有贴图坐标。
贴图坐标的作用就是确立了二维贴图映射在模型是的方式。
它有一个特点就是与空间中XYZ坐标系不同,而是采用了UV或者UVW坐标系。
每个物体自身属性中都有Generate Mapping生成贴图坐标。
此选项可使物体在渲染效果中看到贴图。
我们可以通过UVW Map修改器为物体调整二维贴图坐标。
不同的对象要选择不同的贴图投影方式。
在UVWMAP修改器的参数卷栏中可以选择Planar(平面),Cylindrical(柱面),Spherical(球面),ShrinkWrap(收紧包裹),Box(立方体),Face(面),XYZtoUVW这几种坐标。
2.5三维海底场景贴图制作
给三维海底场景中的模型赋予贴图不仅可以增添场景中模型的复杂程度,还可以突出场景中的细微之处。
通过贴图可以使创建的海底场景更接近真实,增加鱼,草,石头模型的质感。
鱼模型贴图的制作。
先对鱼模型进行UVW展开,如图2.10所示。
UVW也称纹理坐标或者贴图坐标,是用于控制图像如何投射到编辑对象上的。
在制作过程中UVW定义了图片上每个点的位置的信息,这些点与鱼模型是相互关联,用来决定鱼模型表面纹理贴图的位置。
UVW就是将图像上每一个点精确对应到鱼模型物体的表面。
简单的说就是将鱼按照某一个轴向撕开,铺平成一张平面图,然后在画图软件中给这张平面图画上鱼的轮廓和所需颜色,如图2.11所示。
按照相同的方法制作石头,草,等模型的贴图。
图2.10鱼模型UVW展开图2.11鱼模型贴图
2.6骨骼动画
骨骼动画的是基于面模型的一种方法,它将一个模型分为骨架层和皮肤层这两层。
在骨骼动画中,骨骼有一个层次结构,这是由骨骼角色的身体决定的。
骨骼描绘了一个模型的骨架结构,其中类似于关节动画中的关节。
相邻的骨骼可以做相对的运动是因为有关节相连[14]。
而骨骼是实现各种动画效果是通过定量地改变两根骨骼之间得位移和夹角,然后这些骨骼影响外面的皮肤来做出各种不同的动作。
蒙在骨骼之上的皮肤层,它是一个蒙皮(skin)模型。
其决定了模型的外观[15],并且提供动画绘制所需的各种信息。
这里面的皮肤是可在骨骼影响下变形的网格[16],并不是固定不变的刚性网格[16]。
相似与关键帧动画中的顶点网格,对于每一个角色保存一个网格模型的数据就足够了;与关键帧动画不同的是顶点信息不用在美国关键帧中保存。
2.7三维海底场景中鱼骨骼动画的制作
每个鱼模型都有一个骨架层次结构,本文中用树形结构。
图2.12是鱼模型的骨架层次,其中向下的箭头表示父子关系,向左和向右的箭头表示兄弟关系。
将做好的鱼模型调整好位置和大小添加骨骼。
根据鱼模型的形状对每一块骨骼进行缩放和移动,使其正好契合在鱼模型中。
结合鱼的摆动特点,对每个骨骼节点添加关键帧动画。
然后保存带有动画的每块骨骼的关键帧数据。
每个关键帧数据的内容包括:
该帧编号,该帧中骨骼相对于父骨骼的平移与旋转信息[18]。
最后对鱼模型添加蒙皮修改,添加上述制作的骨骼,如图2.13所示。
图2.12鱼骨骼层次图2.13鱼骨骼动画
第三章三维海底场景建模Unity3D的应用
3.1Unity3D工具介绍
Unity3D是一款跨平台的专业游戏引擎。
现今许多大型的3D游戏、小型手机游戏、3D电影和动漫都是用这一款软件完成。
它具有极高的性价比[19]。
因为用它创作的游戏可以在各种平台上运行,并且Unity3D支持各种脚本语言包括Javascrip、C#等,兼容各种操作系统从而真正的实现了跨平台。
本文选择其作为主要的三维开发引擎,用于海底地形与场景的构建、漫游功能的实现。
3.2三维海底场景地形的建立
在Unity3D中编辑地形有两种方法:
可以导入一幅预先渲染好的灰度图(一幅高度图)或者使用Unity3D引擎内置了一个功能十分完善的地形编辑工具—TerrainEditor。
这两种方法都有其独特的优点和相应的问题,但是,如果发现正在使用的那种方法不能解决问题,可以在这两者之间切换。
3.2.1使用高度图来创建高度
如果明确知道想要什么,使用高度图可能得到最佳结果的最快方法。
基本上,一幅高度图就是一幅灰度图,它使用2D图像来表示3D的高度变化。
其中黑色的,比较暗的灰色表示地势比较低,白色的,比较亮的表示地势比较高。
用Terragen或Bryce之类的外部程序可以制作那些真正专业的高度图。
也可以使Photoshop或者GIMP之类的2D图像编辑器来快速绘制一幅高度图(质量较低)值得注意的一点是,要总是让图片大小是正方形的或者是2的幂。
最后导出成RAW格式--这是Unity3D唯一能够读取的高地图文件格式。
在将高度图倒入的过程中还需要设置一些参数,如表3.1所示。
表3.1高度图参数
高度图参数
参数说明
深度
可以使8位或者16位,根据文件格式设置
宽度
高度图的宽,根据高度图大小自动得到
高度
高度图的高,根据高度图大小自动得到
字节顺序
Mac或是Windows,根据文件格式来设置
地形大小
显示TerrainSetResolution的选项
由于本次系统开发中并没有获得大比例尺的海底场景地形图,因此针对每一处地形,都采用TerrainEditor工具配合1:
2500地形图、野外实测高程数据、实景照片制作地形的方法。
一旦有了高度图,就可以在Hierarchy视图中选中Terrain资源并使用Terrain菜单:
Terrain→ImportHierarchy-Raw。
导入的高度图得到的地形如图3.1所示。
图3.1导入高度图得到的地形
3.2.2使用内置地形编辑器
Unity3d引擎内置的地形编辑工具—TerrainEditor,开发人员利用它可以方便快捷的制作出各种复杂的地形。
选中菜单栏中的Terrain地形面板,在下拉菜单Terrain中选择SetResolution设置分辨率选项,设置其中的地形长度(Length)和宽度(Width)单击面板右下角的“SetResolution”按钮确定。
然后利用笔刷来提高和降低地形高度。
笔刷带有两个设置:
大小和透明度。
大小决定了该笔刷覆盖的区域有多大。
小的数字将会绘制较小数量的地形,大的数字将会绘制一大块。
透明度描述了笔刷的每次绘制有多么透明。
小的值会仅仅把地形移动一点,大的值会大幅度地太高或是降低地形。
进行编辑之后的地形如图3.2所示。
图3.2编辑过之后的地形
3.2.3绘制地形纹理贴图
一旦对地形的高度有了大致的感觉,就该要添加颜色和细节。
基础的三维地形建模完成后,需要对其添加纹理,通过纹理可以表现地貌的细节信息,如泥土、沙石等,地表纹理素材已在前期的Photoshop预处理中完成。
地表纹理的贴图包括两个步骤:
纹理平铺和细节贴图。
纹理平铺的操作对象是整个地形表面,平铺的依据是对需要建模的区域地表元素进行分析,确定该区域主要的地貌,然后通过地形工具将与之对应的地表纹理完全覆盖在三维地形上,作为底层纹理。
细节贴图是基于纹理平铺后的地形进行纹理贴图,主要使用纹理绘制工具中的笔刷,对三维地形上非主要或者较小区域内地表进行纹理贴图。
由于Unity3D中纹理贴图是遵循覆盖原则(新添加纹理可以将旧的纹理覆盖),所以小范围的特殊地表纹理将覆盖平铺的基础地表纹理,这样可以减少开发人员对地表纹理贴图的时间,提高建模效率。
对于两种地表纹理之间的过渡区域,采用羽化型笔刷对其进行边缘模糊化,使整个地形看上去过渡自然且无明显接缝。
进行纹理贴图之后的海底地形如图3.3所示。
图3.3纹理贴图后的海底地形
3.3Unity3D中漫游效果的实现
3.3.1场景漫游系统的功能结构
碰撞模块[20]、声效模块、粒子模块、漫游模块、导航模块和系统模块这留个模块实现了人与虚拟场景的交互。
在本文中三维海底场景的漫游主要凭借碰撞模块和漫游模块。
碰撞模块就是当触发器与三维海底场景中的地面、石头、海草等模型发生碰撞情况时[21],运动就会发生停止。
这是虚拟场景漫游现实系统使参与者产生沉浸感的关键模块之一。
如果没有碰撞检测,当虚拟人物在三维场景中漫游或者行走时,会“穿墙而过”而不会产生碰撞效果,这在现实中是不存在的。
所以在三维场景中一定要十分准确而又及时地判断场景中物体与物体之间是否发生了碰撞。
碰撞检测过程一般分为两个步骤,第一步是粗略检测,也就是将侦测出的明显