問題描述
為什麼我們需要維護自己的矩陣來轉換遊戲對象? (Why we need to maintain our own matrices to transform Game objects?)
First, I think that I don't have complete understanding about 3D/Game maths. But I know C++ and OpenGL basics. Recently i have intergrated NVidia PhysX with OpenGL and worked well. So i can tranform my OpenGL objects using PhysX. Here is a part of my code,
NxMat34 pose = actor‑>getGlobalPose();
float mat[16];
pose.getColumnMajor44(mat);
glPushMatrix();
glMultMatrixf(mat);
‑‑ draw the object ‑‑
glPopMatrix();
Bui i know that other people use separate matrices to represent their objects transformations even though they have physics libraries to transform their objects. My problem is why we need to maintain separate matrices/quaternions ? Can't we use Physics library's matrices?
‑‑‑‑‑
參考解法
方法 1:
Your question presupposs that:
Everyone uses the exact same physics library. Or any physics library for that matter; many games don't need them.
Everyone uses exactly and only the matrices that come from that library. Animation frequently requires offsetting the position of the rendered entity from the "physics" location of it, not to mention having a different orientation. Or having bones (which are almost never part of any physics system) or other independent parts of the object.
You don't need to do anything. If you've got something that works for you, then do it. Just remember that there are consequences for every action. And in this case, the consequence is that you're directly binding the physics location of a game object to the location of the game object.
The tighter your code is coupled, the less flexible it is to needs down the line.
(by shan、Nicol Bolas)