Skip to content

技术美术作品集:基于傅里叶变换FFT的海面波浪模拟(Unity版本)Computer Shader

Notifications You must be signed in to change notification settings

Li-ZhuoHang/FFTOceanWave_by_Unity

Repository files navigation

FFTOceanWave By Unity

说明:这个是FFT海面波浪模拟的Unity版本

DirectX-11的版本请查看Li-ZhuoHang/FFTOceanWave_by_DirectX-11 (github.com)

先看效果:

视频效果:2024技术美术暑假实习生作品集_哔哩哔哩bilibili

Shaded:

FFTOceanWaveShaded

Wireframe:

FFTOceanWaveWireframe

Shaded Wireframe:

FFTOceanWaveShadedWireframe

思路

img

预计算阶段 计算静态海洋频谱值 h0

频谱计算阶段 在此阶段进行更新,引入时间变量

计算高度偏移频谱、水平偏移频谱、法线频谱

逆傅里叶变换阶段 进行二维傅里叶变换

得到偏移数据以及法线数据

最终处理阶段 对数据进行整合

理论 参考https://zhuanlan.zhihu.com/p/64414956

海面的IDFT模型

image-20230307181905485

此方程为二维逆傅里叶变换

其中k空间的两个分量定义为

image-20230307181943398

海洋频谱

菲利普频谱(Phillips spectrum)

image-20230307181954497

其中

image-20230307182017723

即其共轭复数

image-20230307182021271

更准确来说是(h是海洋深度)

image-20230307182025008

g是重力常数

image-20230307182029465

其中 ξr 和 ξi 是相互独立的随机数,均服从均值为0,标准差为1的正态分布。

image-20230307182039052

V为风速

具体含义如下

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

法线

因为求导的线性性质,h的梯度值仍然是IDFT形式,可以用IDFT计算

image-20230307182324777

Gerstner wave https://www.bilibili.com/video/BV1E64y1D78T?spm_id_from=333.880.my_history.page.click&vd_source=0cfebf737cf740b1e5610209f09e99a8

在这里插入图片描述

Gerstner wave进行了水平偏移,压缩海浪形成尖角

image-20230307182405576

在IDFT中的形式为

image-20230307182411421

快速傅里叶变化 FFT 参见https://www.bilibili.com/video/BV1Y7411W73U?spm_id_from=333.337.search-card.all.click

这方面的知识已经有很多讲解,这里不做详解

对图像进行横纵FFT/IFFT即可得到二维FFT

image-20230307182431176

About

技术美术作品集:基于傅里叶变换FFT的海面波浪模拟(Unity版本)Computer Shader

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published