CN109003322A - 一种动力定位船舶海上作业的三维海浪仿真优化方法 - Google Patents
一种动力定位船舶海上作业的三维海浪仿真优化方法 Download PDFInfo
- Publication number
- CN109003322A CN109003322A CN201810947372.3A CN201810947372A CN109003322A CN 109003322 A CN109003322 A CN 109003322A CN 201810947372 A CN201810947372 A CN 201810947372A CN 109003322 A CN109003322 A CN 109003322A
- Authority
- CN
- China
- Prior art keywords
- wave
- sea
- simulation
- ocean waves
- fft
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/60—3D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及一种动力定位船舶海上作业的三维海浪仿真优化方法。首先对地形块进行三角形划分,形成三角形网格来构造海平面。然后考虑海浪的主要作用和影响因素——风、流等,采用基于快速傅里叶变换(FFT)来生成高度图,然后计算高度场并模拟生成海浪。接着采用GPU与CPU并行计算加速的方式进行优化,最后用Vega Prime视景开发平台进行模拟与展示海浪仿真效果。本优化仿真方法可以较科学、实时而又逼真地进行海浪的建模与绘制,实现了较真实的三维海浪视景仿真,同时在一定程度上增加了海浪的实时性与交互性。
Description
技术领域
本发明属于海洋场景的三维视景仿真领域,具体为一种动力定位船舶海上作业的三维海浪仿真优化方法。
背景技术
动力定位船舶具有适应能力强,不受水深限制、定位准确、操作方便等优点,因此在实际海洋工程应用中占据重要的地位。海浪是由于受到风和流等作用在海洋表面生成的一种十分复杂的波动现象,它与我们的经济和社会活动息息相关。由于受到自然环境以及复杂多变因素的制约,我们如果能够实时、逼真地模拟出动力定位船舶海上作业的三维海浪场景,则对于海洋工程应用、海上安全管理以及合理开发海洋资源具有重要的意义。
与其他自然景物的仿真相比,对于海浪的模拟更加复杂,主要表现在以下两个方面:第一,海洋水域比较宽阔,且海水水体具有高度随机性和非线性,;第二,海浪运动情况十分复杂,同时受到多种力的综合作用,具有复杂的非平衡性和分形性。这两个特性增加了海浪模拟的难度,同时也使海浪模拟更具有挑战性。
海浪仿真技术的关键是采用合适的建模和绘制方法,以提高海浪模拟的真实性和实时性。其中,海浪建模是海浪模拟技术的最基础和最重要环节,其本质是海浪的真实感绘制,它直接影响着海浪模拟的逼真度和运行效率。海浪仿真的关键技术主要包括以下几个方面:海浪网格绘制、海浪模型构建、海浪高度场计算以及海浪环境特效生成等。
在现有的海浪三维视景仿真方法中,专利CN 102141612A《一种基于Chirp Z变换的海浪模拟方法》对海浪模拟采用以下方法进行实现,作者通过风计算一维海浪频谱,然后将得到的一维海浪频谱转换为方向谱,再将得到的方向谱转换成二维海浪波数谱,最后将得到的二维海浪波数谱经过两次Chirp Z变换来模拟海浪。
现有技术仅以风来计算一维海浪谱忽略了其他如海洋流等因素的影响,无法真实地反映海浪环境,将海浪频谱进行转换没有考虑到转换过程中会出现其他干扰与变化,只考虑理想状态,与实际情况不符,经过两次Chirp Z变换只是单纯地追求海浪模拟的速度,而忽略了海浪仿真的真实性与逼真度。利用这种方法进行仿真没有从整体上来考虑,于是在物理上很难真实地反映复杂的海浪仿真效果。
发明内容
本发明的目的在于克服现有技术的不足,提供一种动力定位船舶海上作业的三维海浪仿真优化方法,可以较科学、实时而又逼真地进行海浪的建模与绘制,实现了较真实的三维海浪视景仿真,同时在一定程度上增加了海浪的实时性与交互性。
为实现上述目的,本发明的技术方案是:一种动力定位船舶海上作业的三维海浪仿真优化方法,首先对地形块进行三角形划分,形成三角形网格来构造海平面;然后考虑海浪的作用和影响因素,采用基于快速傅里叶变换来生成高度图,而后计算高度场并模拟生成海浪;接着采用GPU与CPU并行计算加速的方式进行优化,最后用Vega Prime视景开发平台进行模拟与展示海浪仿真效果。
在本发明一实施例中,该方法具体实现步骤如下:
步骤S1、对地形块进行三角形划分,形成三角形网格来构造海平面,其基本思想是基于三角形划分,对整个场景地形块Landscape分成多个易操作的Patch块来进行处理;对分割形成的Patch块再进行三角形划分,每个Patch块形成两个同等大小的等腰直角三角形,分别称为其为基本上三角形和基本下三角形;以此类推地根据视景仿真的细节层次要求对该场景地形块进行细化分割;
步骤S2、虽然海浪具有不规则性和不重复性,但其统计特性是稳定的,利用波浪谱以随机过程描述海浪更加科学准确;实际海浪是由许许多多振幅不同、相位不同的正弦波动的叠加,海洋表面的每一个水粒子都是沿着其静止位置作圆形或者椭圆形轨迹运动,因此采用基于快速傅里叶变换来生成高度图,然后计算高度场并模拟生成海浪;
步骤S3、使用GPU可编程能力处理海浪模拟过程中全部核心计算和渲染任务,另外的初始化定义以及基本处理任务放在CPU中进行,从而极大地减少显存和内存之间的通信联系和数据量,最大化地发挥GPU并行处理能力以减轻CPU的工作负担;
步骤S4、通过Vega Prime开发平台负责海浪的仿真渲染,Vega Prime应用程序由LynX Prime图形界面配置和C/C++的库函数组成,Vega Prime通过API调用ACF文件,再编写自定义海浪运动代码,即可成为可执行程序,进行海浪效果的界面展示。
在本发明一实施例中,在步骤S1中,考虑到人眼的观察视野范围是有限的,即视景域是有限的,因此还需进行海浪场景的视域裁剪;对于场景中的Patch块与视景域有三种位置对应关系,分别是Patch块的四个顶点均在视景域内、Patch块的四个顶点均在视景域外以及Patch块的四个顶点的其中几个在视景域内;在具体的海浪仿真中只需要渲染出Patch块的四个顶点均在视景域内及Patch块的四个顶点的其中几个在视景域内的Patch块即可,完成相关节点的可见性判断,实现海浪场景的视域裁剪。
在本发明一实施例中,考虑到当视线方向和位置发生变化时,需要重新划分网格,导致计算量较大,不利于海面的实时绘制的问题,因此采用实现方式为:首先选择一个相对于视点中心来说足够大的Landscape地形块,将视点设置于Landscape中心的上方,并在海浪仿真程序初始化时对Landscape地形块利用步骤S1所述三角形划分方法;如此实现当视点发生移动时,Landscape地形块会随着视点的移动而整体发生移动,能够保证视点周围有足够的网格点,从而实现不用重新对网格进行划分,只用少量的网格就可以绘制大范围的海域效果。
在本发明一实施例中,所述步骤S2的具体实现过程如下:
步骤S21、基于快速傅里叶变换(Fast Fourier Transform,FFT)来生成高度图:根据海洋场景的特性,假设海平面静止时是XY二维平面,Z轴垂直向上,为了不失一般性,在XY二维平面lx×ly采样区域内有a×b个采样点,时间t时,采样点x=(blx/B,aly/A)的波高h(x,t)由位置及时间决定,其快速傅里叶变换表示式为:
其中,k=(kx,ky)为二维矢量,其长度为k,kx=2πb/lx,ky=2πa/ly;a和b均为整数,-B/2≤b≤B/2,-A/2≤a≤A/2;h%(k,t)为波幅值,它决定了海浪的表面状况,波幅值可用波浪谱函数表示为:
Ph(k)=<|h%(k,t)|2> (2-2)
步骤S22、考虑风和流的影响,则Phillips波浪谱表示式为:
其中,g为重力加速度;V为风速;是表示一个三维矢量;为风向;S是常数;z是流因子;
初始波幅值可以用高斯随机数来进行生成处理:
其中,ξi,ξj∈[0,1]是相互独立的高斯随机数,c为常数,使用高斯分布的随机数生成的波幅值符合实际海浪的波动情况;
步骤S23、基于初始的波幅值,再根据色散关系可以得到时间t的波幅值为:
h%(k,t)=h%(k)eiω(k)t+h%(-k)e-iω(k)t (2-5)
得到波幅值后,根据式(2-1),通过快速傅里叶变换可得到各采样点的波高h(x,t);
步骤S24、由步骤S21-S23定义了在t时刻的海浪的高度场,其中主波为控制控制海浪运动外观的波列,其次为余波,用于模拟海浪动态万变的特性;当t连续动态变化时,即可得到真实海浪的运动情况;
步骤S25、将二维海平面XZ平面上所有采样点的瞬时高度值y放入顶点数组中,便可以绘制出在时刻t的海面帧;而后取预定时间间隔进行绘制海浪动画帧,连续更新帧便形成了海浪网格动画。
在本发明一实施例中,所述预定时间间隔取Δt=(double)1/100。
在本发明一实施例中,所述步骤S3的具体实现过程如下:
步骤S31、在CPU中进行海浪仿真的相关初始化的工作,具体包括:初始化工作环境、请求系统显存、创建生成计划和初始化粒子系统;
步骤S32、对经过步骤S1建立的海面网格在GPU中进行并行计算,具体包括:采用FFT快速求解波幅值、合成高度场高以及将计算结果输出到系统显存中;
步骤S33、在GPU中进行海浪粒子系统的并行化运算,具体包括:计算和更新粒子属性、将粒子位置映射到海面网格坐标点、计算粒子所在位置周围海面网格的扰动、进行范围内扰动叠加运算以及将运算结果输出到系统显存中。
在本发明一实施例中,所述步骤S4的具体实现过程如下:
步骤S41、建立一个Vega Prime的应用程序框架,包括六个步骤:Vega Prime系统初始化、创建Vega Prime实例化、模型加载(.acf文件)、配置运行参数、仿真循环、清理并结束;
步骤S42、使用基于MFC单文档框架结构进行Vega Prime海浪应用程序开发,对Visual Studio 2003.NET进行相关程序接口配置,实现与Vega Prime实现互联互通;
步骤S43、打开Vega Prime进行相关程序配置得到海浪模拟的应用程序文件,然后Vega Prime通过配置好的后台Visual Studio 2003.NET的应用程序接口进行调用相关海浪模拟的应用程序文件,在开发平台Visual Studio 2003.NET平台上进行编写自定义海浪运动代码,驱动运行引擎,成为可执行程序,进行Vega Prime界面展示海浪仿真效果。
相较于现有技术,本发明具有以下有益效果:本发明方法可以弥补现有海浪视景仿真方法的不足,它首先对地形块进行三角形划分,形成三角形网格来构造海平面。然后考虑海浪的主要作用和影响因素——风、流等,采用基于快速傅里叶变换(Fast FourierTransform,FFT)来生成高度图,然后计算高度场并模拟生成海浪。接着采用GPU与CPU并行计算加速的方式进行优化,能够极大地满足实时性的要求,最后用功能更强大的视景仿真引擎Vega Prime进行模拟与展示海浪仿真效果,增加了海浪场景仿真的真实感和交互性。
附图说明
图1是本发明的海浪模拟模块结构示意图。
图2是本发明的海浪仿真工作流程图。
图3是本发明的地形块三角形网格划分示意图。
图4是本发明的瞬时海浪表面网格状态示意图。
图5是本发明的GPU与CPU并行加速处理流程图。
图6是本发明的海浪仿真优化对比效果显示图。
图7是本发明的海浪仿真Vega Prime平台效果显示图。
图8是海面地形块Landscape、Patch块与网格的关系示意图。
图9是经过均匀划分后形成的三角形网格示意图。
图10是以视点为中心网格划分过程示意图。
图11是基于Vega Prime的视景仿真流程图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明提供了一种动力定位船舶海上作业的三维海浪仿真优化方法,首先对地形块进行三角形划分,形成三角形网格来构造海平面;然后考虑海浪的作用和影响因素,采用基于快速傅里叶变换来生成高度图,而后计算高度场并模拟生成海浪;接着采用GPU与CPU并行计算加速的方式进行优化,最后用Vega Prime视景开发平台进行模拟与展示海浪仿真效果。该方法具体实现步骤如下:
步骤S1、对地形块进行三角形划分,形成三角形网格来构造海平面,其基本思想是基于三角形划分,对整个场景地形块Landscape分成多个易操作的Patch块来进行处理;对分割形成的Patch块再进行三角形划分,每个Patch块形成两个同等大小的等腰直角三角形,分别称为其为基本上三角形和基本下三角形;以此类推地根据视景仿真的细节层次要求对该场景地形块进行细化分割;
步骤S2、虽然海浪具有不规则性和不重复性,但其统计特性是稳定的,利用波浪谱以随机过程描述海浪更加科学准确;实际海浪是由许许多多振幅不同、相位不同的正弦波动的叠加,海洋表面的每一个水粒子都是沿着其静止位置作圆形或者椭圆形轨迹运动,因此采用基于快速傅里叶变换来生成高度图,然后计算高度场并模拟生成海浪;
步骤S3、使用GPU可编程能力处理海浪模拟过程中全部核心计算和渲染任务,另外的初始化定义以及基本处理任务放在CPU中进行,从而极大地减少显存和内存之间的通信联系和数据量,最大化地发挥GPU并行处理能力以减轻CPU的工作负担;
步骤S4、通过Vega Prime开发平台负责海浪的仿真渲染,Vega Prime应用程序由LynX Prime图形界面配置和C/C++的库函数组成,Vega Prime通过API调用ACF文件,再编写自定义海浪运动代码,即可成为可执行程序,进行海浪效果的界面展示。
在步骤S1中,考虑到人眼的观察视野范围是有限的,即视景域是有限的,因此还需进行海浪场景的视域裁剪;对于场景中的Patch块与视景域有三种位置对应关系,分别是Patch块的四个顶点均在视景域内、Patch块的四个顶点均在视景域外以及Patch块的四个顶点的其中几个在视景域内;在具体的海浪仿真中只需要渲染出Patch块的四个顶点均在视景域内及Patch块的四个顶点的其中几个在视景域内的Patch块即可,完成相关节点的可见性判断,实现海浪场景的视域裁剪。考虑到当视线方向和位置发生变化时,需要重新划分网格,导致计算量较大,不利于海面的实时绘制的问题,因此采用实现方式为:首先选择一个相对于视点中心来说足够大的Landscape地形块,将视点设置于Landscape中心的上方,并在海浪仿真程序初始化时对Landscape地形块利用步骤S1所述三角形划分方法;如此实现当视点发生移动时,Landscape地形块会随着视点的移动而整体发生移动,能够保证视点周围有足够的网格点,从而实现不用重新对网格进行划分,只用少量的网格就可以绘制大范围的海域效果。
所述步骤S2的具体实现过程如下:
步骤S21、基于快速傅里叶变换(Fast Fourier Transform,FFT)来生成高度图:根据海洋场景的特性,假设海平面静止时是XY二维平面,Z轴垂直向上,为了不失一般性,在XY二维平面lx×ly采样区域内有a×b个采样点,时间t时,采样点x=(blx/B,aly/A)的波高h(x,t)由位置及时间决定,其快速傅里叶变换表示式为:
其中,k=(kx,ky)为二维矢量,其长度为k,kx=2πb/lx,ky=2πa/ly;a和b均为整数,-B/2≤b≤B/2,-A/2≤a≤A/2;h%(k,t)为波幅值,它决定了海浪的表面状况,波幅值可用波浪谱函数表示为:
Ph(k)=<|h%(k,t)|2> (2-2)
步骤S22、考虑风和流的影响,则Phillips波浪谱表示式为:
其中,g为重力加速度;V为风速;是表示一个三维矢量;为风向;S是常数;z是流因子;
初始波幅值可以用高斯随机数来进行生成处理:
其中,ξi,ξj∈[0,1]是相互独立的高斯随机数,c为常数,使用高斯分布的随机数生成的波幅值符合实际海浪的波动情况;
步骤S23、基于初始的波幅值,再根据色散关系可以得到时间t的波幅值为:
h%(k,t)=h%(k)eiω(k)t+h%(-k)e-iω(k)t (2-5)
得到波幅值后,根据式(2-1),通过快速傅里叶变换可得到各采样点的波高h(x,t);
步骤S24、由步骤S21-S23定义了在t时刻的海浪的高度场,其中主波为控制控制海浪运动外观的波列,其次为余波,用于模拟海浪动态万变的特性;当t连续动态变化时,即可得到真实海浪的运动情况;
步骤S25、将二维海平面XZ平面上所有采样点的瞬时高度值y放入顶点数组中,便可以绘制出在时刻t的海面帧;而后取预定时间间隔Δt=(double)1/100进行绘制海浪动画帧,连续更新帧便形成了海浪网格动画。
所述步骤S3的具体实现过程如下:
步骤S31、在CPU中进行海浪仿真的相关初始化的工作,具体包括:初始化工作环境、请求系统显存、创建生成计划和初始化粒子系统;
步骤S32、对经过步骤S1建立的海面网格在GPU中进行并行计算,具体包括:采用FFT快速求解波幅值、合成高度场高以及将计算结果输出到系统显存中;
步骤S33、在GPU中进行海浪粒子系统的并行化运算,具体包括:计算和更新粒子属性、将粒子位置映射到海面网格坐标点、计算粒子所在位置周围海面网格的扰动、进行范围内扰动叠加运算以及将运算结果输出到系统显存中。
所述步骤S4的具体实现过程如下:
步骤S41、建立一个Vega Prime的应用程序框架,包括六个步骤:Vega Prime系统初始化、创建Vega Prime实例化、模型加载(.acf文件)、配置运行参数、仿真循环、清理并结束;
步骤S42、使用基于MFC单文档框架结构进行Vega Prime海浪应用程序开发,对Visual Studio 2003.NET进行相关程序接口配置,实现与Vega Prime实现互联互通;
步骤S43、打开Vega Prime进行相关程序配置得到海浪模拟的应用程序文件,然后Vega Prime通过配置好的后台Visual Studio 2003.NET的应用程序接口进行调用相关海浪模拟的应用程序文件,在开发平台Visual Studio 2003.NET平台上进行编写自定义海浪运动代码,驱动运行引擎,成为可执行程序,进行Vega Prime界面展示海浪仿真效果。
以下为本发明的具体实施过程。
如图1所示,本发明提供的一种动力定位船舶海上作业的三维海浪仿真优化方法,其模块结构主要包括:网格构建模块、海浪建模模块、GPU和CPU处理模块、海浪仿真与显示模块。其中:网格构建模块主要包括对地形块进行三角形划分,形成三角形网格来构造海平面;海浪建模模块主要包括采用基于快速傅里叶变换(Fast Fourier Transform,FFT)来生成高度图,然后计算高度场并模拟生成海浪;GPU和CPU处理模块采用GPU与CPU并行计算加速的方式进行优化;海浪仿真与显示模块用Vega Prime视景开发平台进行模拟与展示海浪仿真效果。如图2所示,本优化仿真方法实现流程主要包括如下步骤:
步骤1:海浪网格划分
海浪网格的划分包括对地形块进行三角形划分,形成三角形网格来构造海平面。具体划分与处理过程包括如下步骤:
1.1首先对地形块进行三角形划分,形成三角形网格来构造海平面,其基本思想是基于三角形划分,对海浪地形块Landscape分成很多个很小的易操作的块Patch来进行处理。然后对分割形成的Patch块再进行三角形划分,每个Patch块形成两个同等大小的等腰直角三角形,分别称为其为基本上三角形和基本下三角形。以此类推地根据视景仿真的细节层次要求对该场景地形块进行细化分割。对海浪地形块Landscape进行了4×4的划分,形成了16个均匀的Patch块,如图8所示,表明了海面地形块Landscape、Patch块与网格之间的关系。
1.2在海浪网格每一帧进行绘制前,对每个可见Patch块都进行1.1步骤的基本上三角形和基本下三角形的有序分割,以此形成一个海浪三角形网格平面,如图9所示,得到的4×4三角形网格划分示意图。
1.3由于我们的观察视野范围是有限的,因此对于海浪场景而言,人们也只能看到场景的一部分,对于人们看不到的场景也就不需要渲染。对于视域体裁剪以Patch块为裁剪单位进行操作:首先根据Patch块的四个顶点位置关系,利用裁剪系统对Patch块的四个顶点进行可见性判断,在进行处理Patch块可见性的时候,为了简化计算,提高运行效率,因此只使用左、右剪切面进行裁剪计算,然后只绘制视域可见的Patch块部分。对于场景中的Patch块与视景域有三种位置对应关系,分别是完全被包含(即Patch块的四个顶点均在视景域内)关系、不被包含(即Patch块的四个顶点均在视景域外)关系以及与视景域相交(即Patch块的四个顶点的其中几个在视景域内)关系。在具体的海浪仿真中只需要渲染出完全被包含及与视景域相交的所有Patch块即可,裁剪掉不被包含的Patch块,这样就完成了相关节点的可见性判断,实现了海浪场景的视域裁剪。
1.4为了解决当视线方向和位置发生变化时,需要重新划分网格,导致计算量较大,不利于海面的实时绘制的问题,在此采用以下方式进行解决:首先选择一个相对于视点中心来说足够大的Landscape地形块,将视点设置于Landscape中心的上方,并在海浪仿真程序初始化时对Landscape地形块利用上述三角形划分方法。这样可以实现当视点发生移动时,Landscape地形块会随着视点的移动而整体发生移动,这样就可以保证视点周围有足够的网格点。如图10所示,可以实现不用重新对网格进行划分,只用少量的网格就可以绘制大范围的海域效果,极大地节省了海浪模拟的存储空间,同时也能够有效地提高仿真的运行效率。
1.5对于越复杂的海洋环境,可以根据海浪仿真的细节层次要求,对海面网格进行更加细致的三角形划分,以满足海浪模拟的需要。通过以上步骤可以得到了海面网格三角形划分效果,达到了只需要少量的网格就可以绘制大范围的海域效果,最终的海浪网格划分效果如图3所示。
步骤2:海浪模型构建
海浪模型构建在整个海浪仿真中占据着十分重要的地位,其构建效果的好坏直接影响到最终海浪模拟的真实感。具体过程如下:
2.1本发明采用基于快速傅里叶变换(Fast Fourier Transform,FFT)来生成高度图。根据海洋场景的特性,假设海平面静止时是XY二维平面,Z轴垂直向上,为了不失一般性,在XY二维平面lx×ly采样区域内有a×b个采样点,时间t时,采样点x=(blx/B,aly/A)的波高h(x,t)由位置及时间决定,其快速傅里叶变换(Fast Fourier Transform,FFT)表示式为:
其中,k=(kx,ky)为二维矢量,其长度为k,kx=2πb/lx,ky=2πa/ly;a和b均为整数,-B/2≤b≤B/2,-A/2≤a≤A/2;h%(k,t)为波幅值,它决定了海浪的表面状况,波幅值可用波浪谱函数表示为:
Ph(k)=<|h%(k,t)|2> (2-2)
步骤S22、考虑风和流的影响,则Phillips波浪谱表示式为:
其中,g为重力加速度;V为风速;是表示一个三维矢量;为风向;S是常数;z是流因子;
初始波幅值可以用高斯随机数来进行生成处理:
其中,ξi,ξj∈[0,1]是相互独立的高斯随机数,c为常数,使用高斯分布的随机数生成的波幅值符合实际海浪的波动情况;
2.3有了初始的波幅值,再根据色散关系可以得到时间t的波幅值为:
h%(k,t)=h%(k)eiω(k)t+h%(-k)e-iω(k)t (2-5)
得到波幅值后,根据式(2-1),通过快速傅里叶变换(Fast Fourier Transform,FFT)可得到各采样点的波高h(x,t)。
2.4根据以上步骤科学合理地定义了在t时刻的海浪的高度场,其中主波为控制控制海浪运动外观的波列,其次为余波,主要用于模拟海浪动态万变的特性。当t连续动态变化时,就可以得到了真实海浪的运动情况。
2.5我们将二维海平面XZ平面上所有采样点的瞬时高度值y放入顶点数组中,便可以绘制出在时刻t的海面帧。取时间间隔Δt=(double)1/100进行绘制海浪动画帧,连续更新帧便形成了海浪网格动画。如图4所示,表明了经过海浪建模以及计算合成高度场后形成的在时刻t的海浪网格图。
步骤3:GPU和CPU并行加速
在具体的操作过程中使用GPU自身较强的可编程能力处理海浪模拟过程中全部核心计算和渲染任务,另外的初始化定义以及基本处理任务放在CPU中进行。这样一来可以极大地减少显存和内存之间的通信联系和数据量,最大化地发挥GPU并行处理能力以减轻CPU的工作负担。
3.1首先在CPU中进行一些海浪仿真的相关初始化的工作,具体包括:初始化工作环境、请求系统显存、创建生成计划和初始化粒子系统。
3.2对经过前面步骤建立的海面网格在GPU中进行并行计算,具体包括:采用FFT快速求解波幅值、合成高度场高以及将计算结果输出到系统显存中。
3.3在GPU中进行海浪粒子系统的并行化运算,具体包括:计算和更新粒子属性、将粒子位置映射到海面网格坐标点、计算粒子所在位置周围海面网格的扰动、进行范围内扰动叠加运算以及将运算结果输出到系统显存中。GPU和CPU并行加速处理流程如图5所示。
步骤4:Vega Prime仿真渲染
Vega Prime负责海浪场景仿真的渲染与显示,C#仿真接口对海浪场景进行驱动,可以实现对海浪场景环境的调用与控制,最终的效果通过视景开发平台Vega Prime展现出来。Vega Prime的视景仿真流程如图11所示。
4.1在对海浪经过上述步骤操作并经过相关技术处理之后,需要构建相应的仿真框架,才能进行海浪视景渲染最终完成仿真效果。Vega Prime和其他视景仿真一样需要与操作系统进行交互。Vega Prime视景仿真系统能够进行正常运行,需要建立一个VegaPrime的应用程序框架,其视景仿真工作流程大概来说需要有六个步骤:Vega Prime系统初始化、创建Vega Prime实例化、模型加载(.acf文件)、配置运行参数、仿真循环、清理并结束。
4.2以Visual Studio 2003.NET为平台应用MFC类库进行开发,可以得到良好的图形界面应用程序。因此本视景仿真模块使用基于MFC单文档框架结构进行Vega Prime海浪应用程序开发,对Visual Studio 2003.NET进行相关程序接口配置,实现与Vega Prime实现互联互通。
4.3打开Vega Prime进行相关程序配置得到海浪模拟的应用程序文件(ACF),然后Vega Prime通过配置好的后台Visual Studio 2003.NET的应用程序接口(API)进行调用相关海浪ACF文件,在开发平台Visual Studio 2003.NET平台上进行编写自定义海浪运动代码,驱动运行引擎,成为可执行程序,进行Vega Prime界面展示海浪仿真效果。在VegaPrime平台中展示的经过优化处理和未经优化处理的对比效果图如图6所示,再进行相关视域放大等处理得到最终的海浪仿真显示效果如图7所示。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (8)
1.一种动力定位船舶海上作业的三维海浪仿真优化方法,其特征在于,首先对地形块进行三角形划分,形成三角形网格来构造海平面;然后考虑海浪的作用和影响因素,采用基于快速傅里叶变换来生成高度图,而后计算高度场并模拟生成海浪;接着采用GPU与CPU并行计算加速的方式进行优化,最后用Vega Prime视景开发平台进行模拟与展示海浪仿真效果。
2.根据权利要求1所述的一种动力定位船舶海上作业的三维海浪仿真优化方法,其特征在于,该方法具体实现步骤如下:
步骤S1、对地形块进行三角形划分,形成三角形网格来构造海平面,其基本思想是基于三角形划分,对整个场景地形块Landscape分成多个易操作的Patch块来进行处理;对分割形成的Patch块再进行三角形划分,每个Patch块形成两个同等大小的等腰直角三角形,分别称为其为基本上三角形和基本下三角形;以此类推地根据视景仿真的细节层次要求对该场景地形块进行细化分割;
步骤S2、虽然海浪具有不规则性和不重复性,但其统计特性是稳定的,利用波浪谱以随机过程描述海浪更加科学准确;实际海浪是由许许多多振幅不同、相位不同的正弦波动的叠加,海洋表面的每一个水粒子都是沿着其静止位置作圆形或者椭圆形轨迹运动,因此采用基于快速傅里叶变换来生成高度图,然后计算高度场并模拟生成海浪;
步骤S3、使用GPU可编程能力处理海浪模拟过程中全部核心计算和渲染任务,另外的初始化定义以及基本处理任务放在CPU中进行,从而极大地减少显存和内存之间的通信联系和数据量,最大化地发挥GPU并行处理能力以减轻CPU的工作负担;
步骤S4、通过Vega Prime开发平台负责海浪的仿真渲染,Vega Prime应用程序由LynXPrime图形界面配置和C/C++的库函数组成,Vega Prime通过API调用ACF文件,再编写自定义海浪运动代码,即可成为可执行程序,进行海浪效果的界面展示。
3.根据权利要求2所述的一种动力定位船舶海上作业的三维海浪仿真优化方法,其特征在于,在步骤S1中,考虑到人眼的观察视野范围是有限的,即视景域是有限的,因此还需进行海浪场景的视域裁剪;对于场景中的Patch块与视景域有三种位置对应关系,分别是Patch块的四个顶点均在视景域内、Patch块的四个顶点均在视景域外以及Patch块的四个顶点的其中几个在视景域内;在具体的海浪仿真中只需要渲染出Patch块的四个顶点均在视景域内及Patch块的四个顶点的其中几个在视景域内的Patch块即可,完成相关节点的可见性判断,实现海浪场景的视域裁剪。
4.根据权利要求3所述的一种动力定位船舶海上作业的三维海浪仿真优化方法,其特征在于,考虑到当视线方向和位置发生变化时,需要重新划分网格,导致计算量较大,不利于海面的实时绘制的问题,因此采用实现方式为:首先选择一个相对于视点中心来说足够大的Landscape地形块,将视点设置于Landscape中心的上方,并在海浪仿真程序初始化时对Landscape地形块利用步骤S1所述三角形划分方法;如此实现当视点发生移动时,Landscape地形块会随着视点的移动而整体发生移动,能够保证视点周围有足够的网格点,从而实现不用重新对网格进行划分,只用少量的网格就可以绘制大范围的海域效果。
5.根据权利要求2所述的一种动力定位船舶海上作业的三维海浪仿真优化方法,其特征在于,所述步骤S2的具体实现过程如下:
步骤S21、基于快速傅里叶变换(Fast Fourier Transform,FFT)来生成高度图:根据海洋场景的特性,假设海平面静止时是XY二维平面,Z轴垂直向上,为了不失一般性,在XY二维平面lx×ly采样区域内有a×b个采样点,时间t时,采样点x=(blx/B,aly/A)的波高h(x,t)由位置及时间决定,其快速傅里叶变换表示式为:
其中,k=(kx,ky)为二维矢量,其长度为k,kx=2πb/lx,ky=2πa/ly;a和b均为整数,-B/2≤b≤B/2,-A/2≤a≤A/2;h%(k,t)为波幅值,它决定了海浪的表面状况,波幅值可用波浪谱函数表示为:
Ph(k)=<|h%(k,t)|2> (2-2)
步骤S22、考虑风和流的影响,则Phillips波浪谱表示式为:
其中,g为重力加速度;V为风速;是表示一个三维矢量;为风向;S是常数;z是流因子;
初始波幅值可以用高斯随机数来进行生成处理:
其中,ξi,ξj∈[0,1]是相互独立的高斯随机数,c为常数,使用高斯分布的随机数生成的波幅值符合实际海浪的波动情况;
步骤S23、基于初始的波幅值,再根据色散关系可以得到时间t的波幅值为:
h%(k,t)=h%(k)eiω(k)t+h%(-k)e-iω(k)t (2-5)
得到波幅值后,根据式(2-1),通过快速傅里叶变换可得到各采样点的波高h(x,t);
步骤S24、由步骤S21-S23定义了在t时刻的海浪的高度场,其中主波为控制控制海浪运动外观的波列,其次为余波,用于模拟海浪动态万变的特性;当t连续动态变化时,即可得到真实海浪的运动情况;
步骤S25、将二维海平面XZ平面上所有采样点的瞬时高度值y放入顶点数组中,便可以绘制出在时刻t的海面帧;而后取预定时间间隔进行绘制海浪动画帧,连续更新帧便形成了海浪网格动画。
6.根据权利要求5所述的一种动力定位船舶海上作业的三维海浪仿真优化方法,其特征在于,所述预定时间间隔取Δt=(double)1/100。
7.根据权利要求2所述的一种动力定位船舶海上作业的三维海浪仿真优化方法,其特征在于,所述步骤S3的具体实现过程如下:
步骤S31、在CPU中进行海浪仿真的相关初始化的工作,具体包括:初始化工作环境、请求系统显存、创建生成计划和初始化粒子系统;
步骤S32、对经过步骤S1建立的海面网格在GPU中进行并行计算,具体包括:采用FFT快速求解波幅值、合成高度场高以及将计算结果输出到系统显存中;
步骤S33、在GPU中进行海浪粒子系统的并行化运算,具体包括:计算和更新粒子属性、将粒子位置映射到海面网格坐标点、计算粒子所在位置周围海面网格的扰动、进行范围内扰动叠加运算以及将运算结果输出到系统显存中。
8.根据权利要求2所述的一种动力定位船舶海上作业的三维海浪仿真优化方法,其特征在于,所述步骤S4的具体实现过程如下:
步骤S41、建立一个Vega Prime的应用程序框架,包括六个步骤:Vega Prime系统初始化、创建Vega Prime实例化、模型加载(.acf文件)、配置运行参数、仿真循环、清理并结束;
步骤S42、使用基于MFC单文档框架结构进行Vega Prime海浪应用程序开发,对VisualStudio 2003.NET进行相关程序接口配置,实现与Vega Prime实现互联互通;
步骤S43、打开Vega Prime进行相关程序配置得到海浪模拟的应用程序文件,然后VegaPrime通过配置好的后台Visual Studio 2003.NET的应用程序接口进行调用相关海浪模拟的应用程序文件,在开发平台Visual Studio 2003.NET平台上进行编写自定义海浪运动代码,驱动运行引擎,成为可执行程序,进行Vega Prime界面展示海浪仿真效果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810947372.3A CN109003322B (zh) | 2018-08-20 | 2018-08-20 | 一种动力定位船舶海上作业的三维海浪仿真优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810947372.3A CN109003322B (zh) | 2018-08-20 | 2018-08-20 | 一种动力定位船舶海上作业的三维海浪仿真优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109003322A true CN109003322A (zh) | 2018-12-14 |
CN109003322B CN109003322B (zh) | 2022-07-05 |
Family
ID=64593304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810947372.3A Active CN109003322B (zh) | 2018-08-20 | 2018-08-20 | 一种动力定位船舶海上作业的三维海浪仿真优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109003322B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159813A (zh) * | 2019-12-18 | 2020-05-15 | 智慧航海(青岛)科技有限公司 | 一种基于仿真的上浪砰击下船舶流固耦合分析方法和系统 |
CN111259489A (zh) * | 2020-01-13 | 2020-06-09 | 智慧航海(青岛)科技有限公司 | 一种基于虚拟仿真平台的船舶货物配载稳性测试方法 |
CN113470133A (zh) * | 2021-06-08 | 2021-10-01 | 中国人民解放军93114部队 | 海浪仿真图像的生成方法、装置、电子设备和存储介质 |
CN113885828A (zh) * | 2021-10-25 | 2022-01-04 | 北京字跳网络技术有限公司 | 一种音效展示方法及终端设备 |
CN115017711A (zh) * | 2022-06-10 | 2022-09-06 | 西安电子科技大学杭州研究院 | 基于海浪谱的三维非线性海浪模拟方法 |
CN115495938A (zh) * | 2022-11-16 | 2022-12-20 | 清华大学深圳国际研究生院 | 海面波浪的三维动态模拟和可视化方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0944698A (ja) * | 1995-07-25 | 1997-02-14 | Hitachi Ltd | 模擬海洋波画像の生成方法および生成装置 |
CN102982239A (zh) * | 2012-11-15 | 2013-03-20 | 上海交通大学 | 基于海浪谱的三维海浪模拟方法 |
CN103021010A (zh) * | 2012-12-01 | 2013-04-03 | 王爽 | 基于gpu的海浪特效实时渲染 |
CN104331599A (zh) * | 2014-09-30 | 2015-02-04 | 江苏省交通规划设计院股份有限公司 | 一种非结构化网格嵌套波浪数值模拟方法 |
CN107729656A (zh) * | 2017-10-19 | 2018-02-23 | 福建四创软件有限公司 | 基于台风过程风场作用下的风暴潮漫堤风险预警方法 |
CN108109202A (zh) * | 2018-01-10 | 2018-06-01 | 集美大学 | 一种基于gpu的动力定位船舶三维视景仿真系统及方法 |
CN108255060A (zh) * | 2018-01-22 | 2018-07-06 | 集美大学 | 基于极限学习机的船舶动力定位自抗扰控制方法 |
-
2018
- 2018-08-20 CN CN201810947372.3A patent/CN109003322B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0944698A (ja) * | 1995-07-25 | 1997-02-14 | Hitachi Ltd | 模擬海洋波画像の生成方法および生成装置 |
CN102982239A (zh) * | 2012-11-15 | 2013-03-20 | 上海交通大学 | 基于海浪谱的三维海浪模拟方法 |
CN103021010A (zh) * | 2012-12-01 | 2013-04-03 | 王爽 | 基于gpu的海浪特效实时渲染 |
CN104331599A (zh) * | 2014-09-30 | 2015-02-04 | 江苏省交通规划设计院股份有限公司 | 一种非结构化网格嵌套波浪数值模拟方法 |
CN107729656A (zh) * | 2017-10-19 | 2018-02-23 | 福建四创软件有限公司 | 基于台风过程风场作用下的风暴潮漫堤风险预警方法 |
CN108109202A (zh) * | 2018-01-10 | 2018-06-01 | 集美大学 | 一种基于gpu的动力定位船舶三维视景仿真系统及方法 |
CN108255060A (zh) * | 2018-01-22 | 2018-07-06 | 集美大学 | 基于极限学习机的船舶动力定位自抗扰控制方法 |
Non-Patent Citations (2)
Title |
---|
MARCO TRAPANESE 等: "Optimization of cogging force in a linear permanent magnet generator for the conversion of sea waves energy", 《IEEE》 * |
肖剑波 等: "基于浅水海浪数值模型的近岸海浪仿真", 《武汉理工大学学报》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111159813A (zh) * | 2019-12-18 | 2020-05-15 | 智慧航海(青岛)科技有限公司 | 一种基于仿真的上浪砰击下船舶流固耦合分析方法和系统 |
CN111259489A (zh) * | 2020-01-13 | 2020-06-09 | 智慧航海(青岛)科技有限公司 | 一种基于虚拟仿真平台的船舶货物配载稳性测试方法 |
CN111259489B (zh) * | 2020-01-13 | 2023-08-29 | 智慧航海(青岛)科技有限公司 | 一种基于虚拟仿真平台的船舶货物配载稳性测试方法 |
CN113470133A (zh) * | 2021-06-08 | 2021-10-01 | 中国人民解放军93114部队 | 海浪仿真图像的生成方法、装置、电子设备和存储介质 |
CN113885828A (zh) * | 2021-10-25 | 2022-01-04 | 北京字跳网络技术有限公司 | 一种音效展示方法及终端设备 |
CN113885828B (zh) * | 2021-10-25 | 2024-03-12 | 北京字跳网络技术有限公司 | 一种音效展示方法及终端设备 |
CN115017711A (zh) * | 2022-06-10 | 2022-09-06 | 西安电子科技大学杭州研究院 | 基于海浪谱的三维非线性海浪模拟方法 |
CN115017711B (zh) * | 2022-06-10 | 2023-06-20 | 西安电子科技大学杭州研究院 | 基于海浪谱的三维非线性海浪模拟方法 |
CN115495938A (zh) * | 2022-11-16 | 2022-12-20 | 清华大学深圳国际研究生院 | 海面波浪的三维动态模拟和可视化方法 |
CN115495938B (zh) * | 2022-11-16 | 2023-03-10 | 清华大学深圳国际研究生院 | 海面波浪的三维动态模拟和可视化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109003322B (zh) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109003322A (zh) | 一种动力定位船舶海上作业的三维海浪仿真优化方法 | |
Makowski et al. | Synthetic silviculture: multi-scale modeling of plant ecosystems | |
CN102074050A (zh) | 大规模地形绘制的分形多分辨率简化方法 | |
CN101587594A (zh) | 航海模拟器场景中的海浪构网算法 | |
CN105205861A (zh) | 基于Sphere-Board的树木三维可视化模型实现方法 | |
Ota et al. | 1/f/sup/spl beta//noise-based real-time animation of trees swaying in wind fields | |
CN109064534A (zh) | 一种基于网页的全球海浪真实感绘制方法 | |
Kohek et al. | Interactive Large‐Scale Procedural Forest Construction and Visualization Based on Particle Flow Simulation | |
Valencia-Rosado et al. | A modular generative approach for realistic river deltas: When L-systems and cGANs meet | |
CN110232846A (zh) | 一种冲锋舟模拟驾驶方法、系统及相关装置 | |
CN114373058A (zh) | 一种基于虚幻引擎的海面网格动态划分及高度场生成方法 | |
Weier et al. | Generating and rendering large scale tiled plant populations | |
Wang et al. | Ocean wave real-time simulation based on adaptive fusion | |
Cortial et al. | Procedural tectonic planets | |
Kohek et al. | Interactive synthesis and visualization of self-organizing trees for large-scale forest succession simulation | |
Emmanuel et al. | A Beginners Guide to Procedural Terrain Modelling Techniques | |
Luo et al. | GPU-based real-time virtual reality modeling and simulation of seashore | |
Chen et al. | A GIS-based forest visual simulation system | |
Kang et al. | Real-time cloud modelling and rendering approach based on L-system for flight simulation | |
Li et al. | Astrogen–procedural generation of highly detailed asteroid models | |
Zhang et al. | Fast simulation method for ocean wave base on ocean wave spectrum and improved gerstner model with GPU | |
Lachman | An open programming architecture for modeling ocean waves | |
Guo et al. | Animating Prairies Simulation with Shell Method in Real-time. | |
Bevilacqua et al. | Charack: Tool for real-time generation of pseudo-infinite virtual worlds for 3d games | |
Melnychuk | Landscape generation using procedural generation techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |