一种基于gpu多遍绘制的三维动态海洋模拟方法

文档序号:6526298阅读:682来源:国知局
一种基于gpu多遍绘制的三维动态海洋模拟方法
【专利摘要】本发明提供一种基于GPU多遍绘制的三维动态海洋模拟方法,通过使用多个GPU绘制通道并利用OpenGL顶点缓冲区对象和transform?feedback技术,使用应用程序对顶点信息进行一次性输入,在GPU中完成顶点的计算、迭代、组装、渲染。本发明充分利用的GPU的强大并行计算能力,在保证海洋表面模拟的效果的同时,大大提高了模拟程序的运行效率和实时性。
【专利说明】—种基于GPU多遍绘制的三维动态海洋模拟方法
【技术领域】
[0001]本发明涉及一种数据处理方法,尤其是涉及一种基于GPU多遍绘制的三维动态海洋模拟方法。
【背景技术】
[0002]近年来真实感自然景物的模拟成为了计算机图形学领域研究的热点和难点,它是利用计算机技术来寻求能准确地描述客观世界中各种现象与景观的数学模型,并逼真地再现这些现象与景观。从科学的角度上来看,真实感自然景物的实时建模与绘制是其难点所在,因为包括上述在内的很多自然现象难以用准确的几何模型来描述,这在很大程度上增加了自然景物模拟的难度。而其中对于海浪的模拟是最为复杂的,主要表现为:
[0003](I)海平面相当广阔,并且海水水体的形状是随机的、动态的,且极其不规则,因此不能用静态的几何多边形表示,每一帧都必须更新;
[0004](2)海浪运动十分复杂,它的产生要满足一定的条件,它在流动过程中要受到多种力的作用,且有很大的随机性;
[0005](3)海水表面的颜色很大程度上取决于光的反射和折射,它们的比例会由于视点的位置不同而不同;
[0006]这些特殊性增加了海浪模拟的难度,同时也使海浪模拟更具有挑战性。使用计算机进行海浪模拟开始于上世纪80年代初期。但是早期的研究工作主要是为了追求形状上相似,而忽视了波浪内在的物理规律,再加上当时的硬件水平有限,所以渲染一帧画面需要很长的时间,只适合于制作静态的图像。1990年SIGGRAPH(计算机图像图形专业组织)会议上,Apple公司提出利用计算流体动力学中的成果来模拟波浪动画的方法,这使得海浪模拟的应用更加广泛。随着计算机图形硬件的发展,到上世纪90年代,海浪模拟进入飞速发展阶段,国内外有很多的机构和大学都致力于海浪仿真的研究,如:斯坦福大学,Rutgers大学的计算科学CBIM中心,美国的加利佛尼亚大学、apple公司、浙江大学CG&CAD国家重点实验室等。自2000年起,SIGGRAPH将自然景物水的模拟作为一个主要研究点单独列出来,通过不断的研究,人们制作出来的波浪在实时性和真实感方面都了较大的突破,但是在效果、效率和之间,依然难以找到一个平衡点。
[0007]现有技术存在以下问题:
[0008](I)由于海洋表面几何形状复杂,海浪运动十分复杂,目前一般采用基于纹理融合或层次动画的方法来模拟,前一种方法采用二维纹理图像表示三维形态,无法表现海洋波浪的三维几何形态,后一种方法采用建立三维帧动画的方法,在不同的时间播放不同的帧动画,模拟海水的运动,这种方法实时性和交互性非常差;
[0009](2)目前采用GPU模拟海洋方法一般采用CPU建模,GPU绘制的架构,这种架构瓶颈在于CPU建模阶段,其计算时间长,需要计算的顶点多,在模拟大范围,高层次细节的海洋时,效率极差,无法满足需求;
[0010](3)海洋模拟过程中一般采用快速傅里叶算法生成海洋表面顶点,利用其周期性,模拟海洋的表面起伏。该方法所生成的海洋表面过于平滑,难以表现海浪之间挤压碰撞所生成的尖波。

【发明内容】

[0011]本发明的目的在于:
[0012]1、本发明专利采用模拟海洋表面一次性顶点输入,在GPU中处理模拟海洋表面顶点和几何体,快速完成海洋表面建模;同时,以顶点对象缓冲区作为海洋模拟GPU运算和应用程序的纽带,完成应用程序与GPU绘制运算之间的交互;解决了海洋模拟中实时性和交互性问题。
[0013]2、采用基于GPU多遍绘制的方法,创建海洋模拟的计算遍和绘制遍,将海洋模拟的几何建模及绘制显示放到GPU中进行,充分利用GPU强大的并行计算能力,解决了海洋模拟中,大范围、高细节的海洋模拟绘制效率低下的问题。
[0014]3、在GPU绘制遍中,采用基于快速傅里叶变换的顶点生成方法生成海洋模拟的所需的顶点,并采用基于偏移向量的方法对顶点的位置进行修正,在不影响绘制效率的前提下,解决了快速傅里叶算法所生成海洋顶点过于圆润,难以表现海浪之间挤压碰撞所生成的尖波的现象。
[0015]本发明的发明目的通过以下技术方案来实现:
[0016]一种基于GPU多遍绘制的三维动态海洋模拟方法,其特征在于,该方法包括以下步骤:`[0017](I)通过建立GPU—直变量和使用顶点数组将顶点数据及绘制控制数据输入到GPU绘制通道中;
[0018](2)GPU绘制通道设有三个渲染通道和两个顶点缓冲区,三个渲染通道分别定义为Passl、Pass2和Pass3,两个顶点缓冲区分别定义为VBOl和VB02,Passl绑定VBOl作为输出对象,Pass2绑定VB02作为输出对象,Passl、Pass2采用乒乓模式互为输入输出,VBOl和VB02均作为Pass3的输入对象;在Passl和Pass2中采用基于向量偏移的快速傅里叶算法对输入的顶点数据进行计算和修改;
[0019](3)Pass3读取VBOl和VB02中的数据,判读数据是否是最新且可用的数据,如果判断满足,则进行步骤(4),否则返回继续等待;
[0020](4)Pass3中的图元着色器完成对顶点数据的组装,形成海洋表面数据,并将数据输入到片元着色器,片元着色器对海洋表面颜色、文理、材质、光照进行融合和混合计算,然后将绘制数据输出到显示设备。
[0021]步骤(1)中所述的顶点数据包括海面的长宽、波峰、波谷、纹理、材质、光照灯信息,所述的绘制控制数据包括海洋表面的模拟精度等级、风速、风向。
[0022]步骤⑵中所述的在Passl和Pass2中采用基于向量偏移的快速傅里叶算法对输入的顶点数据进行计算和修改为:
[0023]Passl接收顶点数据及绘制控制数据,在Passl的顶点着色器中,采用基于海浪谱的FFT的方法来对输入顶点进行计算和修改,对于海浪的生成采用如下公式
[0024]h(x\yj) = IAsdkyh(kfi)exp{i(kx + k,'>.)}(公式 I)


?3[0025]
【权利要求】
1.一种基于GPU多遍绘制的三维动态海洋模拟方法,其特征在于,该方法包括以下步骤: (1)通过建立GPU—直变量和使用顶点数组将顶点数据及绘制控制数据输入到GPU绘制通道中; (2)GPU绘制通道设有三个渲染通道和两个顶点缓冲区,三个渲染通道分别定义为Passl、Pass2和Pass3,两个顶点缓冲区分别定义为VBOl和VB02,Passl绑定VBOl作为输出对象,Pass2绑定VB02作为输出对象,Passl、Pass2采用乒乓模式互为输入输出,VBOl和VB02均作为Pass3的输入对象;在Passl和Pass2中采用基于向量偏移的快速傅里叶算法对输入的顶点数据进行计算和修改; (3)Pass3读取VBOl和VB02中的数据,判读数据是否是最新且可用的数据,如果判断满足,则进行步骤(4),否则返回继续等待; (4)Pass3中的图元着色器完成对顶点数据的组装,形成海洋表面数据,并将数据输入到片元着色器,片元着色器对海洋表面颜色、文理、材质、光照进行融合和混合计算,然后将绘制数据输出到显示设备。
2.根据权利要求1所述的一种基于GPU多遍绘制的三维动态海洋模拟方法,其特征在于,步骤(1)中所述的顶点数据包括海面的长宽、波峰、波谷、纹理、材质、光照灯信息,所述的绘制控制数据包括海洋表面的模拟精度等级、风速、风向。
3.根据权利要求1所述的一种基于GPU多遍绘制的三维动态海洋模拟方法,其特征在于,步骤(2)中所述的在Passl和Pass2中采用基于向量偏移的快速傅里叶算法对输入的顶点数据进行计算和修改为: Passl接收顶点数据及绘制 控制数据,在Passl的顶点着色器中,采用基于海浪谱的FFT的方法来对输入顶点进行计算和修改,对于海浪的生成采用如下公式
4.根据权利要求1所述的一种基于GPU多遍绘制的三维动态海洋模拟方法,其特征在于,步骤⑷具体为:在Pass3的顶点着色器中采用公式对海面顶点进行差值修正;然后在图元着色器中采用点绘制与图元生成分离的模式完成对顶点数据的组装形成海洋表面数据,并将数据输入到片元着色器;最后在片元着色器中实现对海洋表面颜色、纹理、材质、光照`的融合和混合计算。
【文档编号】G06T17/05GK103700143SQ201310740504
【公开日】2014年4月2日 申请日期:2013年12月30日 优先权日:2013年12月30日
【发明者】陈恩博, 莫世锋, 文静, 罗浩, 李硕 申请人:四川九洲电器集团有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1