生成正弦波
更新时间: 2025-04-15 13:40:55
本节要实现的是https://developer.nvidia.com/gpugems/gpugems/part-i-natural-effects/chapter-1-effective-water-simulation-physical-models,公式就在链接里
打开https://nme.babylonjs.com/ (opens new window)
首先我们把这三个节点分开得远一点,因为中间会有很多操作
# 创建4个参数
我们要做的第一件事情是创建四个参数,通过这四个参数来改变波:
- 波长 (L):世界空间中波之间的波峰到波峰的距离。波长 L 与频率 w 的关系为 w = 2/L
- A:振幅,波的高度
- S: 波峰每秒向前移动的距离。将速度表示为相位常数 φ 很方便,其中 φ = S x 2/L。
- D:垂直于波峰行进的波前的水平矢量
创建两个Float,将第一个的value改为2,type改成常量:
第二个Float的名字改为waveLength,value为0.5,并将它们相除
按住shift并拖动出窗口将这几个参数打个组,组名叫W
接下来是振幅
接下来是速度
接下来是波的传播方向
在算法中,x和y是水平的矢量,z是向上的矢量
但在babylon中,我们的x和z是水平的,y是向上的
所以我们的算法在实现的时候需要翻译一下
# 组装公式
先完成A*sin()
然后组装括号里的
从 t * φ 开始
然后组装 D·(x, y)*w
这是风向和原始x,z的点积,记住是x和z
然后将括号内都加起来
最后我们再取一个vectorMerger, 获取到原始的x,z,w
然后再将计算出的值替换到y
最后将新的xyzw连接到输出
现在右下角的平面变成正弦波了
还可以改变之前的4个参数改变波形