[发明专利]一种基于GPU的实时动态水面模拟方法无效
申请号: | 200810063008.7 | 申请日: | 2008-07-04 |
公开(公告)号: | CN101320480A | 公开(公告)日: | 2008-12-10 |
发明(设计)人: | 潘志庚;潘卫敏;张明敏;刘剑锋 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06T15/00 | 分类号: | G06T15/00;G06T17/00;G06T1/20 |
代理公司: | 杭州求是专利事务所有限公司 | 代理人: | 张法高 |
地址: | 310027*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 gpu 实时 动态 水面 模拟 方法 | ||
技术领域
本发明涉及虚拟现实技术和GPU技术,尤其涉及一种基于GPU的实时动态水面模拟方法。
背景技术
GPU是能够从硬件上支持多边形转换与光源处理的图像显示硬件。目前在GPU上进行的主要运算包括光照计算、深度检测、光栅化、反走样等。由于GPU采用的是单指令多数据的处理器设计模式,而且它不需要进行内存管理、对系统的输入输出作出响应等,所以它在图形处理方面的性能远远大于CPU。
在GPU的流水线中,包括两个可编程例程,一个是顶点着色器,另一个是片段着色器。在顶点着色器例程中,GPU载入每个顶点的位置、颜色、纹理坐标等属性,经过一系列的处理,最后输出变换后的顶点数据,还有一些纹理贴图坐标,这些数据作为片段着色器的输入,在片段着色器中,主要进行纹理的采样,最后输出该顶点的颜色。
在现实世界中,水体的运动无处不在,如河水的流动,海浪的运动。在计算机当中模拟水面效果,实际上是把水体的运动数据在计算机空间中数字化。它与真实感模拟的需求密不可分。目前,已经有多种方法对水体进行实时的模拟。在海洋模拟方面,Mastin在1987年提出了采用经验海洋频谱模型来表示自然界中海洋的方法。在交互的过程当中,它需要用户提供风速,然后使用改进的Pierson-Moskowitz频谱描述二维傅立叶域滤波器的形状。另一种方法是基于物理的模拟方法,主要是通过求解Navier-Stoke方程。它是流体力学中描述粘性牛顿流体的方程,也是目前最复杂的方程之一。在Navier-Stoke方程中,主要包括对流、压力、扩散和外力四项。目前对该方程的求解主要有半拉格朗日法,但由于目前GPU计算的局限性,以及该方法本身对数据存储及循环的特殊要求,完全满足实时性有一定的难度。
发明内容
本发明的目的是克服现有技术的不足,提供一种基于GPU的实时动态水面模拟方法。它所要解决的问题是在绘制场景的时候,实现场景中的一些特殊效果,比如建筑前面的水池。它的侧重点是在水面的效果,而不是水的物理特性的模拟,而且它还需要满足实时绘制的需求,不占用太多的渲染资源。
包括如下步骤:
1)使用HLSL语言编写基于Directx Shader的FX效果文件,在FX效果文件中同时包括顶点着色器和片段着色器;
2)在3DS Max中建立水池模型,水池模型包括池壁和池底,池壁是一个圆环,池底是一个圆形平面,其中池壁的材质采用磁砖贴图,池底的材质采用鹅卵石贴图;
3)在建好的水池模型当中,额外增加一个圆形平面,用于显示反射和折射颜色,圆形平面的大小和池底的大小一致,它的位置相对池底往上一点,圆形平面的材质采用DirectX Shader,在3DS Max的材质编辑器中选择已经编写的FX效果文件,按编辑器的要求选择法向贴图,并按照普通贴图的方法映射到网格顶点上,作为每个顶点的法向,此外,还设置反射纹理和折射纹理,避免在程序当中没有设置反射和折射纹理的情况下出错;
4)在三维应用程序中加载由3DS Max建立的水池模型,以及对应的FX效果文件,并设置FX效果文件的全局输入,全局输入包括变换矩阵,摄像机位置,当前时间片;
5)根据当前的摄像机位置,把场景渲染到帧缓存当中,并把它传递给FX效果文件作为折射纹理;
6)求得水平面的平面方程Ax+By+Cz+D=0,把摄像机变换到与水平面对称的位置,再次对场景进行渲染,把渲染得到的结果传递给FX效果文件作为反射纹理。
所述的使用HLSL语言编写基于Directx Shader的FX效果文件,同时提供顶点着色器和片段着色器步骤下:
(1)声明FX效果文件的输入纹理,以及它们的采样方式,这些纹理包括作为法向贴图的纹理、反射纹理和折射纹理;
(2)声明作为全局输入的变换矩阵、时间变量、摄像机位置的变量,以及它们的类型;
(3)编写顶点着色器例程,顶点着色器例程的输入是顶点的位置以及纹理坐标,在顶点着色器例程的内部,需要把顶点变换到世界空间中的位置,然后利用纹理坐标从法向贴图中得到该顶点的法向量,并对法向量添加扰动,其扰动幅度的计算公式如下:
D(t)=frac(α*t) 公式1
其中t是全局时间,α是浮点常量,frac函数是由GPU提供的小数部分截取函数,然后根据公式2和公式3计算每个顶点的反射和折射向量:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810063008.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种改进的安全自毁式注射器
- 下一篇:用于进行X光摄影的被摄影物的保温装置