首先,我认为我对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();
我知道其他人使用单独的矩阵来表示他们的对象变换,即使他们有物理库来转换他们的对象。我的问题是为什么我们需要维护单独的矩阵/四元数?我们不能使用物理库的矩阵吗?
答案 0 :(得分:1)
你的问题预先假定:
每个人都使用完全相同的物理库。或任何物理库;很多游戏都不需要它们。
每个人都使用完全且仅使用来自该库的矩阵。动画经常需要将渲染实体的位置偏离其“物理”位置,更不用说具有不同的方向。或者骨骼(几乎不是任何物理系统的一部分)或对象的其他独立部分。
你不需要做任何事情。如果你有适合你的东西,那就去做吧。请记住,每一个动作都有后果。在这种情况下,结果是你直接将游戏对象的物理位置绑定到游戏对象的位置。
代码越紧密,就越不灵活。