对于my GameEntity class,我有一个Matrix4代表实体位置,旋转和缩放,同时还有那些更新Matrix4" EntityMatrix"的变量的单独字段。无论何时更改或编辑它们。我觉得这是一个最佳的设计决策,但后来我找到了this class on the internet,它显示了另一个实现。
我在第40和41行注意到他们添加了两个Matrix4,而不是像我一样。矩阵的名字也让我感到困惑。 WorldTransform和LocalTransform。有谁知道这两个矩阵用于什么?它们如何代表不同的东西;它们之间有什么区别?
答案 0 :(得分:1)
worldTransform
字段类似于GameEntity
类中的矩阵。但是,存在一些关键差异,因为它只考虑位置,而不是轮换或比例。但就像你的班级一样,它应该在实体的位置发生变化时改变。
localTransform
字段是独立的,并且不会响应实体的属性而更改。但它是public
,这意味着它可以在其他地方设置。它可能会在创建实体时设置一次,然后永远不会更改。您可能会使用它来补偿模型文件中的某些平移/旋转/缩放偏移,例如:如果模型文件使用一个轴作为“前进”但游戏引擎使用不同的轴。 localTransform
字段初始化为identity,因此如果它永远不会被更改,则不会干扰其他矩阵计算。