【问题标题】:Why we need to maintain our own matrices to transform Game objects?为什么我们需要维护自己的矩阵来转换游戏对象?
【发布时间】:2012-05-16 08:59:17
【问题描述】:

首先,我认为我对 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();

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

【问题讨论】:

  • 因为每个矩阵都代表“全局”变换的一个单独的组件(位置、方向、比例),它们可以相互独立地演化。
  • 是的。但我在问为什么我们不能使用物理库的矩阵?他们根据其力量管理所有转换。
  • 嗯..我可以考虑一下。但是,这是唯一的原因吗?我也可以使用图书馆的矩阵来做到这一点。 actorDesc2.globalPose.t = NxVec3(0,5,-10); NxActor * box = gScene->createActor(actorDesc2);

标签: c++ opengl 3d matrix


【解决方案1】:

您的问题假设:

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

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

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

你的代码耦合得越紧密,它就越不灵活。

【讨论】:

  • 动画是个好点。我相信还有很多其他人......谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2016-07-29
  • 2021-10-26
相关资源
最近更新 更多