2012-02-20 18 views
0

ピッチヨーまたはロールのいずれかがローカル軸ではなく世界軸の周りを回転するようにしたいと思いますが、どうしたらいいか分かりません。Xnaはワールド軸を中心に回転しますか?

Vector2 mouse_change = new Vector2(mouse_previous.X - mouse_new.X, mouse_previous.Y - mouse_new.Y); 
camera_angles *= Quaternion.CreateFromAxisAngle(new Vector3(0, 1, 0), mouse_change.X/800f); 
camera_angles *= Quaternion.CreateFromAxisAngle(new Vector3(1, 0, 0), mouse_change.Y/800f); 

すべてのフレームを更新しています。単純な答えのために

view_matrix = Matrix.Invert(Matrix.CreateFromQuaternion(camera_angles) * Matrix.CreateTranslation(camera_position)); 
projection_matrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, device.Viewport.AspectRatio, 0.2f, 500f); 

答えて

0

、あなたはカメラは常にカメラと同じ方向に見たことがしたい場合は「camera_angles」

//Add these operations 
camera_position = Vector3.Transform(camera_position, Quaternion.CreateFromAxisAngle(new Vector3(0, 1, 0), mouse_change.X/800f)); 

camera_position = Vector3.Transform(camera_position, Quaternion.CreateFromAxisAngle(new Vector3(1, 0, 0), mouse_change.Y/800f)); 
+0

に「camera_position」にあなたがやっているのと同じ回転を行います世界の軸を中心に回転し、角度ではなくcamera_positionだけを行います。 –

+0

これは他の位置を中心に回転しますが、私のcamera_angles四元数でそれを行うにはどうしてですか? –

関連する問題