0

コサイン加重半球を使用してアンビエント オクルージョンを実装しています。これまでのところ、半球は正の z 方向を指している法線 (0,0,1) を中心にしていると想定しています。天頂角と方位角 $$0 < \theta < \pi/2, 0 < \phi < 2\pi$$ を使用して、この半球に光線を投射します。ここで、光線の方向は次のように計算されます (sin theta cos phi, sin theta sin phi、cos シータ)。

これを一般化して、任意の法線に対して機能させるにはどうすればよいですか?

4

1 に答える 1

0

表面のローカル座標系を見つけます。

つまり、z 軸を法線とします。次に、x と y の 2 つの直交軸を見つけます。これは、最初に を(0, 1, 0)y 軸 (または、これが法線である場合は別の軸) と見なすことによって実現できます。次に、x 軸を として計算x = cross(y, z)し、y 軸を として微調整しy = cross(z, x)ます。

次に、ポイント計算 ( p) をこの座標系の重みとして使用できます。

dir = p.x * x + p.y * y + p.z * z
于 2015-11-12T07:17:37.410 に答える