动态水域仿真技术的研究和实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

动态水域仿真技术的研究和实现

摘要:在图形学领域,人们一直试图利用计算机再现周围的真实世界,然而现实世界虽然看上去简单,却极其复杂。对于一些自然现象,人们可以采用过程描述的方式来获得某种特定的效果,但是对于有些现象人们无法找到一个简单的模型来描述它,这个时候只有去追溯该现象本身的物理根源,只有借助其本身较为精确的物理描述才能真实再现其外在的视觉现象。

关键词:虚拟现实仿真OpenGL 正弦波水波模拟

在PC机上实时生成海水动画在过去几乎是不可思议的事。但是在NVIDIA公司1999年发布显卡Geforce 256之后,一切都变得可能,PC机上实时渲染功能越来越强。Geforce 256是世界上第一款被叫做图形处理单元(graphics processing unit,GPU)的显卡,最革命性的改进在于将光影转换引擎(Transform and Lighting,T&L)集成到了GPU中,从而大大降低了CPU的负担,GPU的并行处理功能一举突破了以往在复杂的几何计算过程中,CPU速度过慢所引发的瓶颈。

1 水波运动特征

水的表面运动其实是由一系列的波组成的,当风作用于水面时,水面会产生主方向与风同向的波族。为了渲染海面,通常使用一系列波长,振幅和频率都不相同的正弦波作用于一个M×N的顶点序列,每个顶点的高度根据通过该点的所有正弦波在时刻t的偏移进行叠加。这

种技术能够生成外观上比较真实的海面,而且性能的损耗可以控制在合理的范围内。

2 水波动画生成

本文采用的是正弦波的叠加来模拟水波动画。利用正弦波的叠加不仅可以很逼真的模拟水波动画,还可以根据需要改变正弦波的参数和其它随机参数,以期达到希望的效果。适用于对视觉效果要求很高的场合。对图像的纹理数据进行动态变换虽然可以获得比较真实的视觉效果,但其缺乏灵活性,不能和用户进行交互,只适用于一些对辅助场景的绘制。

2.1 动画原理

到目前为止,我们所绘制出来的水面还只是一个二维平面。我们可以通过实时改变各个顶点的Z坐标值进行曲面的绘制,进而模拟水波的效果,如图1。

2.2 算法

仅仅能绘制出简单的曲面还是远远不够的,要逼真的模拟水波动画,必须要有一个数学模型为基础。本文采用多个正弦波叠加来实时绘制各个顶点的坐标值,进而模拟出具有动态水波效果的曲面。

建立水面模型,使用FFT算法,生成动态的水面高度场,并将高度场存入到顶点坐标当中,然后通过取顶点坐标值对水面模拟网格进行扰动,形成动态的W A VE效果,如图2。

运用正弦波叠加技术的波纹函数定义为:

其中:Ai为第i个正弦波的振幅;

t为传播时间;

d为第i个正弦波的传播距离;

v为第i个正弦波的前进速度;

k为时间衰减系数;

m为传播距离衰减系数;

exp(kt)表示波的振幅在时间上呈指数形式衰减;

exp(md)表示波的振幅在距离上呈指数形式衰减。

这个波是从波源位置以横波方式在x,y平面内传播。本函数可以计算,时间为t,在位置pPos处的波的波高。波的振幅在距离上呈指数形式衰减,同时在时间上也呈指数形式衰减。

3 光照模型

由于真实感图形是通过景物表面的颜色和明暗色调来表现景物的几何形状、空间位置以及表面材料的,而一个物体表面所呈现的颜色是由表面向视线方向辐射的光能决定的。

3.1 法向量计算

在光照开启后,水面的颜色单一,没有立体感,这与我们所期望的效果有很大差异。究其原因,是法线的缘故。

本文所采用的方法是平均平面法向法,如图3所示。在图中,曲面顶点P的法向就等于其相邻的四个平面的法向平均值,即: 法向量计算公式如下:

P=(n1+n2+n3+n4)/4; (2)

效果见图4。

4 纹理映射

在三维图形中,纹理映射(Texture Mapping)的方法运用得很广,尤其描述具有真实感的物体。

本文采用的是二维纹里,纹里颜色与曲面颜色混合。图5是本文引用的一幅水的纹里图片,图6。

5 结语

本文所采用的技术是正弦波叠加,其优点是算法简单直观,实时性相对较好,能满足对真实性要求不是很高的情况,可以与用户进行很好的交互。但也有其一定的局限性。此方法并不能真正完全的模拟水面,它无法根据水面所受到的力的变换来反映出真实的交互,不能够实时的根据海面所受力的变化改变海面的状态,比如当风向改变时,水面所产生的波浪也会相应的改变方向和大小。此种方法也不能模拟较大的波浪,一旦波浪较大,模拟出来的效果就很不真实,甚至出现网格撕裂的情况。

参考文献

[1] 韦有双,杨湘龙,王飞.虚拟现实与系统仿真[M].北京.国防工业出版社,2004:前言、41~98、170~177.

[2] 5Richard S.Wright,Jr.Michael Sweet. OpenGL Supper

Bible[M].人民邮电出版社,2001:3~20.

相关文档
最新文档