0

「アークボール」コントロールを使用してライトの位置を入力するように、GLUI を使用して OpenGL に機能を実装しようとしています。アークボールによって与えられる回転行列は 4x4 次元であるのに対し、ライトの位置は 3 座標の 1-D 配列であるため、これについてどうすればよいかわかりません。

4

1 に答える 1

1

シーンの周りのライトを回転させることは、指向性ライト(つまり、無限遠の位置)に対してのみ意味があります。つまり、通常のように、ポイントを回転させるのではなく、方向を回転させるのです。簡単:回転していないライトの方向を(0,0,1,0)にします。次に、これをシーンの周りで回転させるには、指定されたマトリックスの転置逆行列を掛けます。ただし、この行列には回転のみが含まれていることを知っているので、これは転置-逆行列が元の行列と同じである特殊なケースです。

したがって、最初の光の方向(0,0,1,0)にマトリックスを掛けるだけです。

これをさらに単純化できます。乗算を見ると、基本的に、元の光の位置ベクトルがゼロ以外の行列の(重み付けされた)列を抽出するだけであることがわかります。したがって、実際に(0,0,1,0)の光の方向から始める場合は、アークボールの回転行列から3番目の列を取得するだけです。

于 2012-11-09T08:09:48.463 に答える