0

嗨,我对相机和模型旋转感到头疼。相机似乎正在工作,但模型上的旋转似乎被搞砸了。我想要的是模型在原地转动一点,但它似乎正在转动并围绕一个圆圈移动。这是我的代码。当我按右时,我的浮动角度不断增加 0.05f

绘图功能:

        Vector3 cameraRotate = Vector3.Transform(offSetVector, Matrix.CreateRotationY(angle));
        Vector3 cameraLookat = cameraPos + cameraRotate;
        Matrix viewMatrix = Matrix.CreateLookAt(cameraPos ,  cameraLookat, Vector3.Up);
        float aspect = GraphicsDevice.Viewport.AspectRatio;
        Matrix projectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, aspect, 0.1f, 200.0f);
        carTypeOneMatrix = Matrix.CreateTranslation(pos) * Matrix.CreateRotationY(angle);        
        baseModel.Draw(carTypeOneMatrix , viewMatrix, projectionMatrix);
4

2 回答 2

0

最有可能的是,这一行:

carTypeOneMatrix = Matrix.CreateTranslation(pos) * Matrix.CreateRotationY(angle);  

应该:

carTypeOneMatrix = Matrix.CreateRotationY(angle) * Matrix.CreateTranslation(pos);

每当您在 Xna 中创建矩阵组合以将模型转换为世界空间时,请记住“SRT”,即缩放、旋转、平移。这是您组合矩阵的顺序。你先翻译一个,然后旋转一个。我的建议是先旋转,然后翻译。

于 2013-04-16T15:48:08.103 回答
0

我对 XNA 上的 3D 不太了解,但据我所知,CreateRotationX、CreateRotationY 和 CreateRotationZ 基于世界全局轴创建旋转...

我做了一些搜索,我认为这可能会对您有所帮助

于 2013-04-16T14:48:42.040 回答