我想知道在3D场景中存储物体位置的最佳方法是什么。就我而言,场景实际上是游戏的等级。
每个场景都有:
每个模型都有:
我正在使用GLES 2.因此没有glPushMatrix,glPopMatrix,glTranslate等。它们不可用。相反,我有自己的函数,它们在我自己的Matrix对象上运行。
1)设置投影矩阵(使用正交矩阵)
_math_matrix_ortho(&this->ProjectionMatrix, 0.0, 1.0, 0.0, (float)height / (float)width, -1.0f, 1.0f);
2)加载每个模型
3)按比例缩放每个模型,使它们成为彼此成比例的右侧。缩放功能调整模型的“模型”矩阵。
model->modelMatrix.Scale(0.25, 0.25, 0.25);
4)将每个模型移动到位
model->modelMatrix.Translate(2.0, 0.0, 0.0);
7)渲染每个模型
对我来说似乎很奇怪:是否适合翻译模型的矩阵以定位模型?
我应该将模型ID以及旋转,缩放和翻译因子存储在某个文件中吗?
答案 0 :(得分:1)
通常,您希望每帧尽可能少的矩阵计算,因为这些非常昂贵。因此,在您的实体类中,将它们的位置,旋转,缩放绝对值存储在单独的3D矢量中(甚至可以在四元数中旋转),并且仅在渲染期间将它们连接到矩阵。