トップページ > 過去ログ > 記事閲覧
ビュー行列の取得とビュー座標への変換について
名前:white 日時: 2010/01/06 22:39

こんにちは。 半透明ポリゴンを含むオブジェクトを描画するために、 カメラ座標(ビュー座標)上での各オブジェクトのZ値を取得して ソートを行いたいのですが、DXLib上でのビュー行列の取得と 変換方法が分かりません。 行いたい処理をDirectXのAPIで書くと下のようになるのですが ・ビュー行列の作成を行うD3DXMatrixLookAtLH()と、 ・ビュー座標へ変換を行うD3DXVec3TransformCoord() に当たる関数は、Dxlibではどの関数にあたるのでしょうか? よろしくお願いいたします。 //--------------<>------------------------------------ //-- オブジェクト構造体 struct Object{  D3DXVECTOR3 vec_view; //ビュー座標上での位置  D3DXVECTOR3 vec_pos; //ワールド座標上での位置 }; //--ビュー座標への変換を行いたいObject obj_Aがあるとして… D3DXMATRIX mat_view;  // ビューマトリクス D3DXMatrixIdentity(&mat_view); // 単位行列として初期化 D3DXVECTOR3 vec_from=D3DXVECTOR3(0, 200, 0); // カメラの位置 D3DXVECTOR3 vec_lookat=D3DXVECTOR3(0, 0, 0); // カメラの注視点 D3DXVECTOR3 vec_up=D3DXVECTOR3(0, 0, 1); // カメラの上方向 //ビュー行列の作成 D3DXMatrixLookAtLH(&mat_view, &vec_from, &vec_lookat, &vec_up); //ワールドからビュー座標へ変換 D3DXVec3TransformCoord(&(*obj_A)->vec_view, &(*obj_A)->vec_pos, &matView); // 〜あとは各オブジェクトに対して同様の処理を行い // vec_view.zを元にソートを行う。 //--------------------------------------------------

Page: 1 |

Re: ビュー行列の取得とビュー座標への変換について ( No.1 )
名前:管理人 日時:2010/01/17 17:17

D3DXMatrixLookAtLH に相当する関数がありますので、よろしければこちらをお使い下さい // ビュー行列を作成する int CreateLookAtMatrix( MATRIX *Out, VECTOR *Eye, VECTOR *At, VECTOR *Up ) ; whiteさんがお書き込みされたプログラムをDXライブラリの関数に置き換えると こちらのようになります MATRIX mat_view;  // ビューマトリクス VECTOR vec_from=VGet(0, 200, 0); // カメラの位置 VECTOR vec_lookat=VGet(0, 0, 0); // カメラの注視点 VECTOR vec_up=VGet(0, 0, 1); // カメラの上方向 //ビュー行列の作成 CreateLookAtMatrix( &mat_view, &vec_from, &vec_lookat, &vec_up); //ワールドからビュー座標へ変換 (*obj_A)->vec_view = VTransform( (*obj_A)->vec_pos, matView);
Re: ビュー行列の取得とビュー座標への変換について ( No.2 )
名前:white(解決) 日時:2010/01/18 23:07

管理人様、ありがとうございます! 丁寧な解説を頂いたおかげで、VTransform()の 使い方を理解する事ができました。 こうやって使う関数だったんですね…。

Page: 1 |