计算机动画——水体模拟

步骤

  1. 水面建模
  2. 模拟水面运动
    物理模型描述水面的状态,比如能够描述水面的波动、涟漪等
  3. 水面渲染
    特殊的光学效果,如反射、折射以及菲涅尔效果( Fresnel term )

水面模拟和地形模拟类似
建立网格点的高度函数,该函数是一个关于时间变换的函数H(x,y,t)H(x,y,t)

波形模拟技术分类

  • 线性波形叠加方法
    • 正弦波(适用于池塘等平静水平面)
    • Gerstner waves (更适用海面)
  • 统计模型方法
    • 快速傅里叶变换 (真实感强,细节丰富,计算量大,电影级海面渲染)
    • 空间-频谱方法
  • 波动粒子方法
    • 波动粒子(适用实时水体交互)
    • 水波小包(引入理论群速度)
    • 水面小波
  • 物理模拟方法
    • 欧拉(SHP)
    • 拉格朗日
    • 欧拉-拉格朗日
  • 预渲染方法
    • 顶点高度位移贴图
    • 流型图(矢量场)
  • 其他
    • 分形噪声
    • 矢量位移贴图

正弦波模型

H(x,y,t)=A×sin(D(x,y)×w+t×ϕ)H(x,y,t)=A \times sin(D\cdot (x,y) \times w + t \times \phi)

参数 说明
A 振幅
D 方向向量
w
ϕ\phi 相位差

波浪种类

  • 定向波浪
  • 圆形波浪

改进正弦波模型

让波峰更尖,波谷更宽

  • 幂指数模型
    计算机动画——水体模拟
  • Gerstner Waves(更适合于海面)
    计算机动画——水体模拟
    • QiQ_i为控制波浪陡峭程度的函数(过大会在波峰顶部产生环)

统计模型(Statistcal wave models)

模拟水面高度,再利用快速傅里叶变换可以方便求得水面高度