1

GPU Gems 1 chapter 1の理論を使用して、単純な水のシミュレーションを実装しようとしています。

3D 平面 (xz 平面で平坦、y は任意の点での高さを表す) を想像すると、高さフィールド関数は次のように与えられます。

ハイトフィールド関数

ここで: 波長 (w): ワールド空間における波間の山から山までの距離。

振幅 (A): 水面から波頭までの高さ。

速度 (S): クレストが 1 秒間に前進する距離。

方向 (D): クレストが移動する波面に垂直な水平ベクトル。

これは簡単に実装できます。

GPUGems の記事では高さの z 方向を使用していますが、これはグラフィックスの標準ではありません (通常、x は幅、y は高さ、z は深さ)。したがって、平面/水平面方向を意味する xz 方向を参照します。

そのため、任意のポイントでの高さ (y) の値を計算したら、ライティング方程式に必要な法線ベクトルを計算できるように、そのポイントのバイタンジェント ベクトルとタンジェント ベクトルを計算する必要があります。

バイタンジェント ベクトルとタンジェント ベクトルは、x 方向と z 方向の偏導関数です (y は高さフィールドの値です)。

だから私の質問は、高さフィールド関数の x 方向と z 方向の偏導関数をどのように取得できますか?

この記事では、x 方向の偏導関数は次の式で与えられると述べています。

x 方向の偏導関数

x 方向の偏導関数 2

このビデオから偏導関数を取得する概念は理解しています:が、ハイト フィールド関数の偏導関数を取得する方法がわかりません。

誰か説明してくれませんか (私は 5 歳です) - 私の数学の理解力はあまりよくありません!

4

1 に答える 1