osg三維世界中,會使用到幾個不同的座標系統,下面會講解幾個常用概念,通過使用照相機拍照的過程進行模擬:
這個過程就相當於我們拍照時調整被拍攝物體的位置和姿態以及調整相機的位置和姿態。物體的位置和姿態成為模型變換;相機的位置和姿態稱為視點變換,這兩種變換在一起統稱為模型視點變換。
在拍攝乙個物體的時候,移動物體的位置姿態和移動相機的位置姿態可以達到同樣的效果。比如物體向x軸方向移動了10公尺,相當於相機在x軸方向上移動了-10公尺。也就是說模型變換和視點變換是互逆的。
經過模型視點變換之後的場景有世界座標系裝換成相機座標系。
相當於在拍照時選擇鏡頭和調整焦距等,將場景景物投射到二維底片的過程。例如:增加相機拍攝距離的鏡頭稱為長焦鏡頭,增大視角的鏡頭稱為廣角鏡頭。在osg中三維的投影變換,主要的操作物件是乙個立方體或者稜臺形狀的視景體。
在視景體之外的場景不會被投影到二維平面上,視景體的遠近裁切平面相當於長短焦鏡頭的作用,而稜臺狀視景體還可以通過改變稜台上底面與試點的距離來改變視角的範圍,起到廣角鏡頭的作用。
立方體形狀的視景體稱為平行視景體,其結果是生成乙個正射投影矩陣。
稜台式視景體又稱為視錐體,主要用來透視投影。即:離視點近的物體看上去較大,離視點遠的物體看上去較小。
投影變換相當於把相機座標系裝換成投影座標系。
場景投影變換的影象反映到螢幕視窗上去的,相當於把底片沖洗出**來。還可以將**進行放大或者縮小,以及拉伸等。最終將場景變換到視窗座標系中。
三維場景中的視點變換,也就是camera。視點矩陣又稱觀察矩陣,它負責將世界座標系裝換成相機座標系。同時相機節點還負責構建觀察的投影矩陣和視窗矩陣,實現三維場景到二維場景的對映;並且通過觀察矩陣、投影矩陣和視窗矩陣的不斷變化實現三維瀏覽和場景的漫遊。
多個相機節點允許共享一顆子節點書結構,也就是多台相機可以從不同的角度、以不同的方式觀察同乙個模型物體。
camera節點和普通的節點有很大的不同,它是場景裁剪和渲染過程的乙個重要載體。而普通的節點只是乙個儲存場景資料的工具。乙個相機的所有子節點都只會被渲染到這個相機所對應的圖形裝置中。相機的設定引數也決定了它所採用的場景裁剪方法及其子節點是否在裁剪過程中被剔除等屬性。
設定乙個相機的正交投影從場景正上方**模型場景,如圖所示。
OSG座標問題
v push back osg vec3 1.f,0.f,1.f v push back osg vec3 1.f,0.f,1.f v push back osg vec3 1.f,0.f,1.f v push back osg vec3 1.f,0.f,1.f 這是乙個快速入門上面第乙個例子的部分...
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座標系理解
對於下面的 選自 osg海軍教程 第十課第一節 使用自定義矩陣來放置相機,但資料有更改 相機位於坦克後方60個單元,上方7個單元。tankxform setposition osg vec3 0,60,8 t.maketranslate 0,0,15 沿z平移 15 a r t 設r是繞y軸旋轉 2...