相机在固定点closures

我一直在试图创建一个由鼠标控制的摄像头,并围绕一个固定点(读(0,0,0))旋转,既水平又垂直。 这是我所想到的:

camera.Eye = Vector3.Transform(camera.Eye, Matrix.CreateRotationY(camRotYFloat)); Vector3 customAxis = new Vector3(-camera.Eye.Z, 0, camera.Eye.X); camera.Eye = Vector3.Transform(camera.Eye, Matrix.CreateFromAxisAngle(customAxis, camRotXFloat * 0.0001f)); 

这个效果很好,除了当我使用第二个变换(用鼠标上下)时,摄像机不仅上下移动,而且还closures点。 它放大。

我如何防止这种情况?

提前致谢。

我没有看到任何东西在这个片段,将导致缩放的影响。 但是,我确实发现音高旋转有问题。 customAxis在使用CreateFromAxisAngle方法作为参数之前需要进行标准化,否则旋转量将不正确。 这可能会在您的.0001缩放比例时出现,但是值得正常化,看看它是否以某种方式在您的错误缩放效果中起作用。