XNA - 绕 X 轴和 Z 轴旋转 3D
XNA - Rotate around X and Z axis 3D
我是 XNA 新手。
我只是陷入困境 - 我必须 tilt/flip 我的游戏中的一个角色,这意味着绕 X 轴和 Z 轴旋转(不是同时!)
我可以转弯——这意味着绕 Y 轴旋转。
我有旋转矩阵和角色的当前位置向量(也是可以从旋转矩阵获得的 facing/direction 向量)
我通过将面向矢量绕 Y 轴旋转 R 弧度来实现转弯,即绕 Y 轴旋转。
例如,如果我现在要绕 X 轴旋转,该方法是什么?例如,从站立姿势变为 "Superman Flying" 姿势需要角色倾斜...
y 旋转不涉及改变角色的位置,只是改变了面向。但我想对于 X 和 z,我也必须操纵位置?请给我一些指导。
想通了!只需围绕通过旋转矩阵可用的 right/forward 个向量旋转模型。发现以下博客 post 非常有帮助:
https://stevehazen.wordpress.com/2010/02/15/matrix-basics-how-to-step-away-from-storing-an-orientation-as-3-angles/#comment-376
至于代码,这里有一个示例:
Vector3 rightVector = target.CurrentModelMatrix.Right;
var rotMatrix = Matrix.CreateFromAxisAngle(rightVector , (float)GetRadianAngle(10));// Will tilt the character forward around the right vector
target.CurrentModelMatrix *= rotMatrix;
我是 XNA 新手。 我只是陷入困境 - 我必须 tilt/flip 我的游戏中的一个角色,这意味着绕 X 轴和 Z 轴旋转(不是同时!) 我可以转弯——这意味着绕 Y 轴旋转。 我有旋转矩阵和角色的当前位置向量(也是可以从旋转矩阵获得的 facing/direction 向量) 我通过将面向矢量绕 Y 轴旋转 R 弧度来实现转弯,即绕 Y 轴旋转。 例如,如果我现在要绕 X 轴旋转,该方法是什么?例如,从站立姿势变为 "Superman Flying" 姿势需要角色倾斜... y 旋转不涉及改变角色的位置,只是改变了面向。但我想对于 X 和 z,我也必须操纵位置?请给我一些指导。
想通了!只需围绕通过旋转矩阵可用的 right/forward 个向量旋转模型。发现以下博客 post 非常有帮助: https://stevehazen.wordpress.com/2010/02/15/matrix-basics-how-to-step-away-from-storing-an-orientation-as-3-angles/#comment-376
至于代码,这里有一个示例:
Vector3 rightVector = target.CurrentModelMatrix.Right;
var rotMatrix = Matrix.CreateFromAxisAngle(rightVector , (float)GetRadianAngle(10));// Will tilt the character forward around the right vector
target.CurrentModelMatrix *= rotMatrix;