其實,無需關心osg矩陣是如何實現的.但是要記住的是osg中採用的左乘操作,我們平時裡討論的操作如旋轉平移等。
opengl的: newpos = r* t * oldpos //先執行平移 後執行 旋轉 (全域性座標系)
osg當中: newpos =oldpos * t *r //先執行平移 後執行旋轉 (全域性座標系)
因為在osg當中矩陣執行的操作則是行矩陣操作.因此為了跟opengl的列矩陣做同步 而不在定義的時候就相當於做了乙個轉置操作.即
你只需牢記 在osg當中變換的步驟則是左乘操作(全域性座標系)..即左邊的是先執行變換的.
談完如上的那些之後.我們現在來看matrixtransform 和positionattitudetransform.
參考座標系有三種
relative_rf, //全域性 相對 ()
absolute_rf, //區域性 絕對 ()
absolute_rf_inherit_viewpoint //基於視點乙個區域性座標系.很少用到.
matrixtransform 故名 矩陣變換節點.在位於它的節點之下的節點都將按照這它的矩陣變換來進行模型變換操作.因此 matrixtransform的主要功能之一就是提供模型變換操作..你只要根據你所需要的設定其模型矩陣就行.
即執行 setmatrix() 因此.檢視計算當前world矩陣的方法就可以很清晰的明白其最後結果就是:
如果是相對的.那麼 先執行自身的變換,在執行父節點的變換操作.這類似opengl中後寫的變換是先執行的一樣(全域性座標系考慮)
否則是絕對的,那麼當前矩陣就是自身矩陣
#include
#include
#include
#include
#include
#include
//旋轉控制
/*int main()
*/osg::group* createtrans()
int main()
座標旋轉與平移
一 問題 已知原座標系下的兩個點座標為p1 x1,y1 p2 x2,y2 經過平移和旋轉對應到新座標系下的點座標分別為 0,0 x,y 計算相應的旋轉矩陣r和平移向量t。二 思路 平移向量一般比較好計算,而旋轉矩陣在計算的時候要注意旋轉中心點是哪個點,還要注意是平移後旋轉還是先旋轉後平移。鑑於本問題...
OpenGL與旋轉 縮放 平移
2018 05 09 旋轉看起來挺費勁的,其實非常簡單。我們只需要給shader傳入mvp矩陣即可。旋轉分為兩類 camera旋轉 物體旋轉。當指定mvp矩陣時,model矩陣是每個物體攜帶的資料,projection矩陣是由camera 的fov aspect near far距離決定的,對於ca...
OpenGL座標變換 平移,縮放與旋轉
opengl座標變換 平移,縮放與旋轉 opengl有內建的座標系,事實上opengl有兩套座標系,乙個座標系被稱為眼睛座標 eye coordinate system 簡稱ecs opengl還有一套座標,被稱為 object coordinate system 簡稱ocs 而這個才是更為重要的,...