Opengl 在局部Y轴上旋转角色

Opengl 在局部Y轴上旋转角色,opengl,directx,graphic,Opengl,Directx,Graphic,在三维场景中,每一帧都会不断更新局部世界4x4矩阵,从而将三维对象从局部坐标系转换到世界坐标系。 但我无法计算出矩阵,它可以使3D对象沿着自身的局部Y轴旋转。因为我不知道3D对象的局部上方向向量,我只知道局部->世界矩阵并不断更新它。人们是如何处理的?要旋转对象,需要旋转矩阵。这应该很清楚。大多数库都有生成这种旋转矩阵的方法 你的问题似乎是如何处理这个矩阵。您希望使用它修改现有的世界变换。基本上有两种选择。在下面,我假设OpenGL使用的列主矩阵布局。DirectX的矩阵顺序是相反的 选项1:左

在三维场景中,每一帧都会不断更新局部世界4x4矩阵,从而将三维对象从局部坐标系转换到世界坐标系。
但我无法计算出矩阵,它可以使3D对象沿着自身的局部Y轴旋转。因为我不知道3D对象的局部上方向向量,我只知道局部->世界矩阵并不断更新它。人们是如何处理的?

要旋转对象,需要旋转矩阵。这应该很清楚。大多数库都有生成这种旋转矩阵的方法

你的问题似乎是如何处理这个矩阵。您希望使用它修改现有的世界变换。基本上有两种选择。在下面,我假设OpenGL使用的列主矩阵布局。DirectX的矩阵顺序是相反的

选项1:左侧乘法:

newWorld = rotationMatrix * oldWorld
这将在全局坐标系中旋转对象

选项2:右侧乘法:

newWorld = oldWorld * rotationMatrix
这将在其局部坐标系中旋转对象。这可能就是你要找的

顺便说一句,如果你有世界变换,你知道局部y轴,这只是矩阵的第二列