为什么我们需要维护自己的矩阵来转换游戏对象



首先,我认为我对3D/游戏数学没有完全的理解。但我知道C++和OpenGL的基础知识。最近,我将 NVidia PhysX 与 OpenGL 集成在一起,并且运行良好。所以我可以使用 PhysX 转换我的 OpenGL 对象。这是我代码的一部分,

NxMat34 pose = actor->getGlobalPose(); 
float mat[16];
pose.getColumnMajor44(mat);
glPushMatrix(); 
glMultMatrixf(mat);
-- draw the object --
glPopMatrix();

我知道其他人使用单独的矩阵来表示他们的对象转换,即使他们有物理库来转换他们的对象。我的问题是为什么我们需要维护单独的矩阵/四元数?我们不能使用物理库的矩阵吗?

您的问题预设:

  1. 每个人都使用完全相同的物理库。或任何与此相关的物理库;许多游戏不需要它们。

  2. 每个人都精确地使用并且仅使用来自该库的矩阵。动画经常需要将渲染实体的位置与其"物理"位置偏移,更不用说具有不同的方向了。或者有骨骼(几乎从来都不是任何物理系统的一部分)或物体的其他独立部分。

不需要做任何事情。如果你有适合你的东西,那就去做吧。请记住,每个行为都有后果。在这种情况下,结果是您将游戏对象的物理位置直接绑定到游戏对象的位置。

代码耦合得越紧密,需求就越不灵活。

最新更新