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

[戻る]
D3DX 2012/07/16(月) 21:05:49
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度ぐらいの所で止まり、以降は物体に近づくだけで、背後に周って
くれません。

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

古いスレッドには追加発言できません。