2. 四川托普信息技术职业学院 计算机系,四川 成都 611743
2. Computer Science, Sichuan TOP IT Vocational Institute, Chengdu 611743, China
CATIA属于当前应用较广的建模技术,通常应用于船舶、机械等多种领域[1-3],通过该技术进行建模,可以为用户提供较强的二次开发接口[4-5],能够很好地利用在船舶三维建模中。对船舶三维模型进行虚拟现实场景模拟,能够及时发现船舶运行过程中会出现的故障。时光志等[6]通过虚拟现实技术仿真船舶系统,但该方法构建的船舶三维模型与理想数值相差较大。景乾峰等[7]通过虚拟现实系统构造船舶数字孪生框架,但该方法无法实现船舶多种场景漫游模拟。
虚拟现实指通过计算机仿真模拟一种物体的动作与位置,使使用者能够仿真环境接受感官反馈,通过三维场景的漫游,能够有效快速地发现场景中存在的问题。为此,本文设计虚拟现实技术的船舶三维建模方法,利用CATIA构建船舶三维模型,并通过虚拟现实技术实现场景模拟。
1 基于虚拟现实现技术的船舶三维建模方法 1.1 基于CATIA船舶三维建模 1.1.1 构建传统船舶三维模型利用CATIA进行建模时,传统形式是通过CATIA的创成式曲面构建模块,当采用传统方法进行建模时,需要从型线图中获取横剖线与各水线的三维点坐标[8],之后将每个坐标输入到文件GSD_PointSplineLoftFromExcel.xls中,生成曲面点坐标,以获取横剖线与各半宽水线。之后采用CATIA内的命令指示生成曲面模型,获取船舶三维模型。
但是,这种传统建模形式操作十分繁琐,在读取三维点坐标时耗时较长,因此使用效果并不完美,为此,构建基于船舶的AutoCAD型线图的三维模型,使船舶三维模型更加完善。
1.1.2 基于VB的参数化建模在AutoCAD与CATIA中具备较强的二次开发接口,因此,采用CATIAAPI中包含的内置函数,对其本身自带的功能进行拓展,使构建出的船舶三维模型能够更加满足用户需求。
1)参数提取
利用AutoCAD型线图完成参数提取。通过半宽水线图,设定每条水线的“线型比例”,并将该比例作为水线的高度,此时,每条水线即存在三维信息。利用VB选取每条水线,之后采用Add Light Weight Polyline函数,调取半宽水线图内的甲板边线提取x坐标与y坐标,得到船舶甲板边线三维点坐标。
2)建立模型
通过每条水线的点坐标,构建船舶线框模型,之后利用该模型,生成船舶曲面模型,实现三维模型的设计。CATIA具有较强的曲面设计模块,其能够通过强大的构造函数方法实现曲面、实体的设计。利用已得到的点坐标数据,在16 m水线处的点坐标开始CATIA建模。同时,将船舶的曲面与平面部分放在同一位置实现建模,采用VB编程提取存储在txt文件内的点坐标,之后将各个水线下的点坐标输入到CATIA中,并采用Hybrid Shape Spline类连接每条水线上的点,构成样条曲线。大多数情况下,船舶船体呈对称形式,所以船舶的船体线框模型在设计一半的情况下即能够获取整体数据。
通常可利用“填充曲面”与“多截面曲面”描述船舶曲面,本文采用VB调用Hybrid Shape Loft类,将各水线设为轮廓线,即可获取船舶一侧的船体曲面,之后对已得到的单侧船体曲面做出对称处理,并调用Hybrid Shape Fill类即可获取船舶船底位置与船周封板位置曲面。
可以利用“封闭曲面”展现CATIA中的船舶实体模型,利用Hybrid Shape Fill类与Hybrid Shape Healing类即能够获取封闭船舶曲面模型,在此基础上,采用CloseSurface类处理后获取船舶实体模型。
1.2 基于虚拟现实技术的船舶三维建模方案 1.2.1 场景漫游功能设计1)场景对象分析
在Unity 3D软件中,场景对象属于较为重要的一项指标,在每个不同场景下呈现激活形态的物体,即为场景对象。通常一个虚拟现实场景需要较多对象才能构成,而每个对象也均由较多组件构成,在每个组件中,又包含较多变量,针对这些变量,开发者可在后续使用时进行更改。
全部场景对象在创建时,每个对象至少存在一个Transform(变换)组件。变换组件是指物体出现在Unity中的位置、旋转与大小,并通过x,y,z表示这些参数。
2)场景漫游的实现
本文主要通过构建船舶三维模型,实现船舶运行情况分析,因此,需要模拟船舶在场景中的运行状态。将船舶FBX文件输入到虚拟现实引擎中,在Unity 3D软件内实现船舶运行模拟。具体操作方式为:开启Unity 3D,选取File菜单中的New project,创建一个新工程,并命名为“CB1”,将船舶三维模型FBX文件存入“CB1”文件夹内的Assets子文件夹中,Unity能够自动将模型存在到该文件夹内,之后向场景视图中引入三维模型,实现船舶三维模型的场景漫游。
1.2.2 粒子群与空间分解层次包围盒(FDH)的碰撞检测算法以Unity 3D为虚拟现实漫游应用背景,在虚拟空间中对船舶三维模型进行碰撞检测,以分析船舶三维模型是否适用于多种应用环境,同时避免漫游操作时,虚拟人物穿透物理平面(如船舶机舱墙壁、船舶设备)。结合粒子群算法与空间分解层次包围盒算法,对船舶三维模型进行碰撞检测,通过2种算法的结合,可以改善检测过程中的反应时间,加强虚拟环境感知的真实性。
1)最优化问题
最优化问题可分为较多类型,不同类型的最优化问题具有不同的求解形式。当处于不失一般性时,可将最优化问题表示为:
$ \min \sigma = f\left( x \right), $ | (1) |
$ {\rm{vs.t}}.X \in O = \left\{ {X\left| {{g_i}\left( X \right) \leqslant 0,\;i = 1,\cdots,m} \right.} \right\} 。$ | (2) |
式中,
对于最优化问题通常可以通过进化类算法实现,为此,采用基本微粒群算法,实现船舶三维模型的碰撞检测。
2) 粒子群算法
粒子群算法将个体作为n维搜索空间中的微粒,并且这些按照个体与群体的飞行经验,可以动态调整算法的飞行情况。设微粒i的当前位置为
$ {H_i}\left( {t + 1} \right) = \left\{ \begin{gathered} {H_i}\left( t \right),f\left( {{X_i}\left( {t + 1} \right)} \right) \geqslant f\left( {{H_i}\left( t \right)} \right),\hfill \\ {X_i}\left( {t + 1} \right),f\left( {{X_i}\left( {t + 1} \right)} \right) < f\left( {{H_i}\left( t \right)} \right) \hfill 。\end{gathered} \right. $ | (3) |
设群体中的微粒数为S,全部微粒经过最佳位置为Hg(t),且该位置为全局最好位置,即
$ \begin{split} {H_g}\left( t \right) \in& \left\{ {{H_0}\left( t \right),{H_1}\left( t \right),...,{H_s}\left( t \right)} \right\}\left| {f\left( {{H_g}\left( t \right)} \right)} \right. = \\ & \min \left\{ {f\left( {{H_0}\left( t \right)} \right),{f_1}\left( {H\left( t \right)} \right),\cdots ,f\left( {{H_s}\left( t \right)} \right)} \right\} 。\end{split} $ | (4) |
基本微粒群的进化方程为:
$ \begin{split} {v_{ij}}\left( {t + 1} \right) =& {v_{ij}}\left( t \right) + {c_1}{r_{1j}}\left( t \right)\left( {{h_{ij}}\left( t \right) - {x_{ij}}\left( t \right)} \right)+\\ &{c_2}{r_{2j}}\left( t \right)\left( {{h_{gj}}\left( t \right) - {x_{ij}}\left( t \right)} \right) ,\end{split} $ | (5) |
$ {x_{ij}}\left( {t + 1} \right) = {x_{ij}}\left( t \right) + {v_{ij}}\left( {t + 1} \right) $ | (6) |
式中:i表示微粒;j表示微粒维度;c1,c2表示加速常数;r1,r2表示随机函数;t表示迭代次数。
为了降低进化时微粒逃离搜索空间的可能性,采用vij将微粒限制在合理范围内。基本微粒初始进化步骤为:
步骤1 确定群体规模N;
步骤2 针对任意i和j,在[−xmax,xmax]与[−vmax,vmax]内服从均匀分布,依次产生xij和vij;
步骤3 针对任意i,设定yi=xi。
对于上述设定,通过以下步骤实现粒子群算法:
步骤1 按照初始化方式,初始设置微粒群的速度与随机位置。
步骤2 对每个微粒的适应值进行分析。
步骤3 对比每个微粒的适应值与其经过最佳位置Hi的适应值,若微粒的适应值较大,则将其设为目前最佳位置。
步骤4 对比每个微粒的适应值与全部微粒经过的最佳位置Hg的适应值,若微粒的适应值较大,则将其设为目前最佳位置。
步骤5 利用式(5)和式(6)完成微粒的速度进化。
步骤6 预设一个最大化代数Gmax,若找到的适应值达到该预设值,则结束进化,若未找到,则返回步骤2。
相较于其他进化算法,微粒群算法能够有效利用群体概念,找出最佳位置,且在进化过程中,该算法能够保留与应用位置与速度的变化信息,但是,微粒群算法的收敛性能仍需加强,为此,引入分解层次包围盒(FDH)算法中的惯性权重,使碰撞检测时的收敛性能得到提升。
2 实验结果与分析应用本文方法构建船舶三维模型,并通过虚拟现实技术对该模型的应用能力进行分析。同时选取文献[6]和文献[7]方法进行对比实验。
分析结果如图1所示。可以看出,应用本文方法提取到的船舶三维坐标点,与实际坐标点十分接近,由此说明,本文方法能够合理提取船舶各水线上的坐标,为船舶建模提供良好的帮助,并加强船舶三维模型的合理性。
分析应用本文方法建造的船舶三维模型结构图,结果如图2所示。可知,通过本文方法构建的船舶三维模型能够清晰直观看出船舶的各水线角,且模型较为完善。
观察者能够通过输入工具进行船舶三维模型内部的各种信息交互和控制操作, 实现对船舶的实时漫游,应用本文方法展现船舶三维模型的内部部分场景的漫游情况,结果如图3所示。可以看出,应用虚拟现实技术后可清晰完整展现船舶内部不同位置的三维场景,具备场景漫游真实性和可操作性,实现漫游场景的可视化展现。经本文方法模拟现实场景,可十分直观地观察船舶内部情况。
设定船舶三维建模时船体各部位的理想数值,对比本文方法与文献[6]方法、文献[7]方法在建模时所设计的数据情况是否与理想数值比较接近,分析结果如表1所示。可知,3种方法在进行建模时所得到的数据与理想数值均存在一定的差距,其中,文献[6]方法在建模过程中所得到的龙骨长、宽、高均与理想数值差距较大,且船底板与甲板的建模数据与理想数据同样存在较大差别,而文献[7]方法的差距虽然较比文献[6]方法差距较小,但是对比本文方法,该方法与理想建模数值并不十分接近,本文方法在建模过程中能够有效接近所设定的理想数值,仅在部分数据上存在微小幅度的误差,说明本文方法的建模性能较为完善。
选取3种漫游场景,分别为晴天、雨天、雾天,分析在3种虚拟现实场景漫游情况下,本文方法对船舶三维模型的碰撞检测概率,分析结果如图4所示。可以看出,本文方法的船舶碰撞检测概率均保持在90%以上。其中,在虚拟晴天场景下的碰撞检测概率始终较高,均能保持在94%以上,说明这一场景能够更好实现碰撞检测,而雨天场景的碰撞检测概率相对较低,但依然保持在92%~96%之间,雾天场景的碰撞检测概率最低,但该场景的检测概率与雨天场景较为接近,由此可知,本文方法可以在多种场景下实现船舶的碰撞检测。
本文研究虚拟现实技术的船舶三维建模方法,构建船舶三维模型,并将该模型输入到Unity 3D虚拟现实软件中,在该软件内实现船舶场景漫游与碰撞检测,完成虚拟现实互动,并通过实验验证该建模方法的性能,获取船舶三维模型的应用效果。未来可在此基础上继续进行优化设计,使船舶三维模型的细节更加完善。
[1] |
吴乐, 张倩, 单忠德, 等. 面向船舶分段流水线的多工位协同作业建模技术[J]. 船舶工程, 2020, 42(2): 126-130. |
[2] |
陈立家, 刘锭坤, 田延飞, 等. 面向船舶操纵模拟器的内河水流三维建模与仿真[J]. 武汉理工大学学报(交通科学与工程版), 2020, 44(4): 634-639. |
[3] |
何丽丝, 曹荣, 王德禹. 面向送审的船体结构三维模型转化数据技术研究[J]. 中国舰船研究, 2021, 16(5): 206-215. |
[4] |
孙晓雪, 王胜正, 殷非, 等. 智能船舶远程辅助驾驶3D场景构建关键技术研究[J]. 中国舰船研究, 2020, 15(S1): 173-179. |
[5] |
孙佳文, 任鸿翔, 肖方兵, 等. 基于虚拟现实的整船仿真训练平台[J]. 系统仿真学报, 2021, 33(9): 2243-2251. |
[6] |
时光志, 周毅, 李萌, 等. 基于虚拟现实技术的LNG船舶仿真系统[J]. 船海工程, 2021, 50(3): 25-28+33. DOI:10.3963/j.issn.1671-7953.2021.03.007 |
[7] |
景乾峰, 神和龙, 尹勇. 一种基于虚拟现实系统的船舶数字孪生框架[J]. 北京交通大学学报, 2020, 44(5): 117-124. |
[8] |
唐能, 刘永珍, 胡志贤, 等. 基于三维体验平台的模型质量管控架构设计研究[J]. 船舶工程, 2020, 42(S1): 149-152+229. |