D3DXMatrixLookAtLHで対象物の裏を見るには – プログラミング – Home

通知
すべてクリア

D3DXMatrixLookAtLHで対象物の裏を見るには


D3DX
 D3DX
(@D3DX)
ゲスト
結合: 12年前
投稿: 1
 

DirectXを使用している者です。OSは、Win7です。

1.最初は原点にある物体の正面にカメラがあり、カメラがその物体を写している。マ
ウスはウインドウの中央にある。

2.マウスを動かすと、カメラが物体の方向を見たまま、物体を中心に円運動しながら
物体の背後に移動する。

という処理をしたいと思い、下記のようなコードを書きました。

//ウインドウの中央を0,0とするマウスの位置
MousePosX_to_center=(input.get_MousePosX()-window_width/2 );
MousePosY_to_center=(input.get_MousePosY()-window_height/2 );

//マウスの位置から、物体に対するカメラの角度を計算
xrad= (float)MousePosX_to_center/ ((float)window_width/2.0f) * D3DX_PI;
yrad= (float)MousePosY_to_center /((float) window_height/2.0f) * D3DX_PI;
zrad=sqrt(pow((float)MousePosX_to_center,2)+pow((float)
MousePosY_to_center,2)) / window_width * D3DX_PI ;

//カメラの実際の位置
CameraPosX=obj_to_camera*sin(xrad);
CameraPosY=obj_to_camera*sin(yrad);
CameraPosZ=obj_to_camera*cos(zrad)*-1;

//ビュー変換
D3DXMatrixLookAtLH( &View, &D3DXVECTOR3(CameraPosX,CameraPosY ,CameraPosZ ),  
&D3DXVECTOR3(0, 0, 0), &D3DXVECTOR3( 0, 1, 0) );

g_pD3DDev->SetTransform(D3DTS_VIEW, &View);

すると、1.はできたのですが、そこからマウスを動かすと、2.の途中で、初期位置
から、物体に対し45度ぐらいの所で止まり、以降は物体に近づくだけで、背後に周って
くれません。

このような場合、どう対処するとよいでしょうか。
お忙しいとは存じますが、よろしくお願いします。


引用解決済
トピックタグ

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました