我正在try 在XNA(MonoGame)中创建第一人称控制器.然而,我不确定如何旋转我的3D相机
有人告诉我要制作旋转矩阵,但我不确定如何将其实现到我的相机中.
我try 过以下操作:
Matrix rotation = Matrix.CreateRotationX(MathHelper.ToRadians(1f));
我不确定如何将其添加到我的相机中,以便我可以左右旋转我的相机.
有什么建议吗?
我正在try 在XNA(MonoGame)中创建第一人称控制器.然而,我不确定如何旋转我的3D相机
有人告诉我要制作旋转矩阵,但我不确定如何将其实现到我的相机中.
我try 过以下操作:
Matrix rotation = Matrix.CreateRotationX(MathHelper.ToRadians(1f));
我不确定如何将其添加到我的相机中,以便我可以左右旋转我的相机.
有什么建议吗?
通常,在渲染任何内容之前,您会将投影、视图,有时还会发送模型矩阵到着色器(Effect/BasicEffect).视图矩阵基本上代表您的相机.我假设您正在使用BasicEffect并且已经创建了投影矩阵.
您可以用途:
var Rotation = Quaternion.CreateFromYawPitchRoll(XAxisAngleHere, YAxisAngleHere, 0);
其中X(Yaw)是上下旋转,Y(Pitch)是左右旋转(如果y是投影矩阵中的向上轴).然后,这些将通过第一人称控制器的鼠标移动来控制(鼠标X控制Y,鼠标Y控制X).
对于表示视图矩阵的"完整"相机,您可以执行以下操作:
var Rotation = Quaternion.CreateFromYawPitchRoll(XRotation, YRotation, 0);
var CameraWorld = Matrix.CreateWorld(CameraPositionInWorld, Vector3.Transform(Vector3.Forward, Rotation), Vector3.Transform(Vector3.Up, Rotation));
var View = Matrix.Invert(CameraWorld);
在这里,我们首先计算代表相机在3D世界中的位置和旋转的世界矩阵.为了获得正确的视图矩阵,我们必须先倒置该相机世界矩阵,然后将其分配给着色器的(BasicEffect)视图参数.
如果您需要更多信息,请告诉我!