osg座標系理解

2021-08-03 13:28:35 字數 1719 閱讀 5131

對於下面的**(選自《osg海軍教程》第十課第一節 使用自定義矩陣來放置相機,但資料有更改):

// 相機位於坦克後方60個單元,上方7個單元。

tankxform->setposition( osg::vec3(0,60,8) );

t.maketranslate(0, 0, 15); //沿z平移+15

a= r * t; //設r是繞y軸旋轉+20度的矩陣

c= osg::matrixf

::makerotate(-m_pi/2.0, 1, 0, 0);//c是繞x軸旋轉-90度

while( !viewer.done() )

在底層,最終全是opengl座標系(y向上)。設a的逆為a~,mv= a~* c,而最終顯示效果使用的是mv~=( a~* c)~=c~*a=c~*(r*t),即(繞x軸轉+90度 繞y軸轉+20度 沿z平移15),則新的視點位置v』=v*mv~,使用的是行向量,即從後往前對視點座標系進行變換,即將視點座標係先沿z平移15,再繞y軸轉+20度,最後繞x軸轉+90度。《這就像是opengl中分別通過gltranslatef、glrotatef對當前區域性座標系進行變換:v』=t*r*v,表明是先對區域性座標系平移(即t),再對區域性座標系旋轉(即r)。v』=t*r*v也可以想象成是單純的點v在世界座標系中的座標變化,要注意的是點v沒有區域性座標系,只有乙個固定的世界座標系,點v的每次變化都是以這個固定的世界座標係為參考》。如圖:

上圖中,綠色的xyz座標軸是標準的opengl座標軸,先沿z平移15,再繞y軸轉+20度,變成黑色的xryrzr座標系,再繞x軸轉90度,變成最終的紅色,x』y』z』座標系,此時視線(藍色的線)朝z』軸負向。在底層始終是opengl座標系,但上層我們看到的效果是:在z向上的座標系下,把視點移動到z=15處,看下方z=8、前方y=60的坦克。

特別注意:camera:: setviewmatrix()只改變視點座標系(包括視點的座標),其他座標系不變,仍是opengl座標系。而且setviewmatrix(mv)最終顯示的是mv的逆矩陣得到的效果,所以一定要注意。可以這樣:

setviewmatrix(inverse(a)*繞x軸旋轉-90度),這樣可以把a看作是matrixmanipulator的z向上的座標系(即z向上,y向里,視線朝y軸正向)。且可看作是在z向上的座標系下(視線為y軸正向,即垂直xz平面朝里),把視點按a變換,且此時,而且外面的一些變換也可以看作是z向上的座標系,如tankxform->setposition( osg::vec3(0,60,8) );此時相當於是在z軸正向上移動了8,即往上移動了8,且在y軸上移動了60,即朝內移動60。

記住:上面的只是看作(想像)z向上的座標系,實質仍是opengl座標系,可只用opengl座標系來看,以免出錯。

總結:

(1)對setviewmatrix(a~),可以這樣分析:視點v和幾何體座標點p都在opengl座標下,且對視點進行a(連同視點的區域性opengl座標系)變換,然後看點p在a的視線上的位置。

(2)viewer.getcamera()->setviewmatrix(osg::matrixf::inverse(osg::matrix::rotate(osg::pi/2.0, 1, 0, 0 ) r t ));則可以把視點v和幾何體座標點p都放在osg座標下,且對視點r * t變換。

OSG座標系解釋????????

對於下面的 選自 osg海軍教程 第十課第一節 使用自定義矩陣來放置相機,但資料有更改 tankxform setposition osg vec3 0,60,8 相機位於坦克後方60個單元,上方7個單元。t.maketranslate 0,0,15 沿z平移 15 a r t 設r是繞y軸旋轉 2...

osg 相機座標系

先看這個例子 include include include include int main int argc,char argv return 0 1 程式執行結果 將相機設定到世界座標系 0,0,12 的位置,向下看牛。同時,牛繞著x軸自傳。2 解說 相機座標系,和opengl的相機座標系一致...

座標系變換與座標變換理解

在slam中經常用到空間點的座標變換。假設已獲得相機某一位置的位姿pose,pose包括相機座標系相對於世界座標系的旋轉r和平移t,此時若已知某點p在相機座標系下的座標為pc,計算點p在世界座標系下的座標pw,可使用 pw r pc t t pc 開始的時候我有這樣的疑問 t表示世界座標到相機座標系...