3dmax和opengl都是右手坐標系,但是3dmax是z軸向上,而opengl中是Y軸向上。如圖:
所以在3dmax的fbx導出對話框中有“軸轉化”一項,可以設置“Y向上”或者“Z向上”。
默認是“Y向上”,這樣導出以后再加載到opengl程序里,模型就不至於是“躺着”的了。
不過這個“軸轉化”的原理只是給fbx根節點乘了一個繞X軸旋轉90的矩陣,並不改變各mesh子節點的局部空間矩陣,
所以如果我們在opengl程序中要給導入的fbx模型中的某個mesh節點node添加child的話,我們心里要清楚:node的局部空間坐標系是跟3dmax中相同的--即Z軸向上的。
例如,假設在3dmax中建了一個正立的圓錐體,按"Y向上"導出為fbx並加載到opengl程序中后,我們為其mesh節點添加一個子節點childMesh,childMesh是一個XZ平面上的Quad,那么顯示結果Quad將是豎直的,而不是水平的。