DirectXでカメラ視点を動かすには??

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
問い合わせ

DirectXでカメラ視点を動かすには??

#1

投稿記事 by 問い合わせ » 16年前

DirectXでカメラで写す被写体の位置は変えずにカメラ位置を動かすには
どのような方法があるのでしょうか?

環境はVisual C++ 2008 Express Edition
OSはwindows XPです。

でんすけ

Re:DirectXでカメラ視点を動かすには??

#2

投稿記事 by でんすけ » 16年前

D3DXMatrixIdentity(&view, &D3DXVECTOR3( 10.0f, 5.0f, 10.0f ), // カメラの位置
                          &D3DXVECTOR3( 0.0f, 0.0f, 0.0f ),   // カメラの向き
                          &D3DXVECTOR3( 0.0f, 0.0f, 1.0f ) ); // カメラの傾き
カメラの位置のD3DXVECTOR3( 10.0f, 5.0f, 10.0f )の値をいじる。

Justy

Re:DirectXでカメラ視点を動かすには??

#3

投稿記事 by Justy » 16年前

 質問の意図が2種類に見えるのですが……。


 カメラの位置を動かしたい場合は D3DXMatrixLookAtLH関数か D3DXMatrixLookAtRH関数で
ビュー行列を生成、IDirect3DDevice9のメンバ SetTransformの D3DTS_VIEWでセットします。

 スクリーン座標系的に見ているオブジェクトの位置を変えたくない場合は
この D3DXMatrixLookAt?H関数の第3引数に常にオブジェクトの位置を指定すれば
どの位置にカメラがあってもカメラはオブジェクトの方向を向きます。

でんすけ

Re:DirectXでカメラ視点を動かすには??

#4

投稿記事 by でんすけ » 16年前

すみません。
D3DXMatrixIdentityではなく、D3DXMatrixLookAtLHでした。

問い合わせ

Re:DirectXでカメラ視点を動かすには??

#5

投稿記事 by 問い合わせ » 16年前

Justyさんのおっしゃるとおりの質問です。
被写体からの一定距離でカメラ視点を回転させるプログラムに取り組んでいます。
今のソースの状態は下のとおりです。

ソースコード
D3DXVECTOR3 viewvecE(0.0f, 1.0f, -5.0f), viewvecL(0.0f, 2.0f, 4.0f);
D3DXVECTOR4 viewvec;
D3DXVec3Transform( &viewvec, &viewvecE, &matWorld2 );
D3DXVECTOR3 vEyePt( mypos.x + viewvec.x,
mypos.y + viewvec.y,
mypos.z + viewvec.z );
D3DXVec3Transform( &viewvec, &viewvecL, &matWorld2 );
D3DXVECTOR3 vLookatPt( mypos.x + viewvec.x,
mypos.y + viewvec.y,
mypos.z + viewvec.z );
D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );

D3DXMATRIXA16 matView;
D3DXMatrixLookAtLH( &matView,&cameraangle.x, &cameraangle.y, &cameraangle.z );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

問い合わせ

Re:DirectXでカメラ視点を動かすには??

#6

投稿記事 by 問い合わせ » 16年前

諸氏のアドバイスのもと、無事解決することができました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る