围绕一个特定的点 – 轨道相机

我将如何创建一个相机,使用鼠标,它可以让你围绕一个特定的位置轨道,相机总是面对这一点? 我也希望它能始终处于一个不变的距离上,并能够在各个方向上绕过它。

有任何想法吗?

你要找的是一个ArcBall相机。 我有一个完整的片段在这里http://roy-t.nl/index.php/2010/02/21/xna-simple-arcballcamera/,但只是为了解释一般的想法:

你在空间上设置一个你想要绕行的观察点。 然后,通过使用“俯仰偏摆”(Yaw and Roll)旋转,从那个点创建一个向量。 然后,将vector加长到距离物体所需的距离。

无论如何,最有趣的东西发生在这种方法:

private void ReCreateViewMatrix() { //Calculate the relative position of the camera position = Vector3.Transform(Vector3.Backward, Matrix.CreateFromYawPitchRoll(yaw, pitch, 0)); //Convert the relative position to the absolute position position *= zoom; position += lookAt; //Calculate a new viewmatrix viewMatrix = Matrix.CreateLookAt(position, lookAt, Vector3.Up); viewMatrixDirty = false; }