1、世界坐標
世界坐標系描述的是整個場景中所有的對象,可以理解為絕對坐標系,所有對象的位置都是絕對坐標。從整體上考慮,它為所有對象的位置提供一個絕對的參考標准,從而避免了物體之間由於獨立的物體坐標系而導致的坐標系混亂。
2、物體坐標系
每一個物體都有自己的坐標系,當物體發生交換時,實際上是它本身的坐標系相對於世界坐標系發生變換的過程。
物體坐標系通常描述的問題是特定物體的內部對象,主要包括物體的頂點,物體的法向量和物體的方向。
3、攝像機坐標系
攝像機坐標系與屏幕坐標系類似,只不過攝像機坐標系位於3D空間,而屏幕坐標系位於2D空間。
OSG的坐標系:X正方向向右,Y正方向朝里,Z正方向朝上。
*****坐標系變換*****
》》物體坐標系->世界坐標系
#-> 計算場景中某一特定節點在世界坐標系下的坐標,只需要將該節點的根結點和該節點之間的所有變換矩陣相乘即可。
#->實現方式:
回調,訪問器等;
訪問器是一種方便可操控的方式,相對而言,回調在一定程度上不具備課操控性,且會因為增加額外開銷而影響渲染 效率。
$->訪問器的實現:
訪問器通過遍歷的方式記錄場景中節點的路徑,並計算路徑上矩陣變換的世界坐標,最終返回一個矩形式表示的世界坐標,下面是《OpenSceneGraph三維渲染引擎編程指南》中的示例代碼:
*****屏幕坐標->世界坐標*****
OSG中國區論壇上
http://bbs.osgchina.org/forum.php?mod=viewthread&tid=4240&highlight=%BD%DA%B5%E3%2B%CA%C0%BD%E7%D7%F8%B1%EA關於獲得根結點下某個子節點的世界坐標,Array給的回答:
geode->getBound().center() * osg::computeLocalToWorld(geode->getParentalNodePaths()[0]) //經測試,可行
可以獲得子節點的世界坐標,據說是最簡單的方法。


