fc2ブログ

gluLookAt(2)

視野変換であることが分かっている4x4行列から、gluLookAtの引数を逆計算することを考えてみましょう。

先ず、視点位置を表すeyeから。4x4行列の中の、回転成分を表す3x3行列をR、平行移動成分をtとすると、

eye = -RTt --- (1)

となります。

次にcenterですが、

centereyevz --- (2)

と書けます。但し、vzRの3行めの行ベクトルです。

最期にupですが、これは、

upvy --- (3)

です。但し、vyRの2行めの行ベクトルです。

eyeは一意に決まりますが、centerupは一意ではありません。ですから、gluLookAtで指定した引数と、上記の計算により得られた値は異なっている場合があります。gluLookAtの自由度は6ですが、パラメタは9個あるので、冗長度が3あるのです。
スポンサーサイト



コメントの投稿

Secret

方向とした方が

centerは注視点の事と思いますが、
centerがeye-vzで求まるのは「方向」と書いたほうが誤解がないような気がします。
一意でないという言い方でも正しいとは思いますが。
僕の勘違いかもしれませんが、たしかvzは
F = (center - eye)
vz = - F / |F|
だったはずだと思います。
ですので、
「ワールド空間の原点(0,0,0)から見たcneterがある方向」
の方が3Dになれていない人にとっても分かりやすいかと思います。
プロフィール

加納裕(かのうゆたか)

Author:加納裕(かのうゆたか)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR