论文部分内容阅读
海浪泡沫是海洋中一种常见的自然现象,在虚拟现实应用、计算机游戏以及电影特效中,泡沫效果极大地影响着用户的真实感体验。近年来,随着计算机硬件设备的不断更新和相关技术的快速发展,大规模海洋场景的绘制越来越受到计算机图形学研究者的关注。泡沫作为海浪最生动的体现,其逼真度对海洋模拟起到很重要的作用。本文针对海浪泡沫不真实和不完善的问题,提出一种改进海浪泡沫模拟的新方法。首先,为了构建动态海浪,利用Phillips频谱计算海浪频域的振幅值,通过快速傅立叶逆变换(IFFT)将频域的振幅值转换到空间域的高度值,从而构建海面高度场。由于Phillips频谱是从真实海洋中得到的统计数据,从而能够模拟出高真实感的深海海浪。其次,在快速傅立叶变换反演海浪谱计算生成高度场的基础上,使用CUDA对频域振幅值进行多线程并行运算,节省FFT算法的计算时间。对构建好的海面网格进行GPU渲染,计算每个像素的颜色值,得到不同光照环境下海洋场景的模拟。再次,为了降低波涛汹涌的海浪上泡沫的重复性,生成真实感较强的海洋效果,提出一种修正函数得到基于全局坐标的动态阈值条件来控制泡沫生成,并降低其周期重复性的方法。在海洋模拟中使用平铺的小补丁构造深海海洋表面能够减少计算量。但是这种方法导致海洋表面的泡沫有明显的重复性,严重影响了模拟效果的逼真度和真实感。针对这一问题,设计了一个动态阈值条件用于决定是否在海面的某像素点上显示泡沫从而减少泡沫的重复性。最后,利用OSG开源图形库、图形架构CUDA和OpenGL高级着色语言GLSL设计实现了深海海浪及泡沫的仿真系统。