ロゴ メインコンテンツへ
RSSフィード
「開発記録」に関連する記事一覧

自前でビュー変換行列を作成

2012/05/28 23:21
(この記事の文字数: 562)

OpenGLのgluLookAtや、glRotateなどの座標変換関数を使わずに、自前で座標変換を行うプログラムを作っていたのですが、若干ビュー行列を作る辺りでこんがらがってしまったので、整理のためにメモを残しておきます。

カメラの持つワールド行列が次のように定義されるとします。

world matrix of camera

XはカメラのローカルX軸、YはカメラのローカルY軸、ZはカメラのローカルZ軸、Pはカメラのワールド座標を示します。

このときカメラ視点から見た座標系であるビュー座標系に変換するためのビュー行列は次のように作れました。

view matrix

ワールド座標系での位置座標Px, Py, Pzと各軸での内積をとり、カメラの位置座標をビュー座標系へ射影し、ビュー座標系でのカメラの位置座標分を引いてカメラの位置をビュー座標系の原点に持ってくるようなイメージです。 ワールド座標系からビュー座標系に変換したいあるモデルが持つワールド座標をMx, My, Mzとすると、ビュー座標へ変換後のモデルの座標Nx, Ny, Nzは次のように計算できます。

model position in view coordinate system

もしここに記した説明や式に何か誤りがあったらすみません、とあまり自信がないので謝っておきます。とりあえず、私の方ではこの式通りにプログラムを実装したところ、OpenGLの関数を使わなくてもちゃんとモデルがカメラ視点から表示されることが確認できました。


  このエントリーをはてなブックマークに追加  

<<「開発記録」の記事一覧に戻る

コメント(0 件)



コンテンツロード: 0.0081 sec
Copyright(C)2006-2024 puarts All Rights Reserved