ogre3D學習基礎6 場景管理器的使用

2022-01-29 01:38:47 字數 3156 閱讀 1688

場景管理器的使用

最常使用的座標系統空間(同時也是

ogre

程式所能提供的)即是世界空間(

world

)、父節點空間(

parent

)以及本地空間(

local

)。1、世界空間

就是物體所存在的地方,當我們把乙個模型放進世界模型裡面去,那麼它就有了乙個世界座標,這個世界座標是用來標記世界中不同的模型所處的位置的。在世界空間裡,世界的中心就是遠點(0,0,0)。而在ogre中,這個也相當於場景根節點的位置,所以世界空間在ogre中也可以理解為「相對於場景根節點」。世界空間也意味著用全域性的x,y,z座標。

父節點空間變換是相對於乙個節點的父節點,也就是把父節點的座標作為變換空間的矩陣原點。本地空間變換是相對於物件繫結的節點本身。大多數情況下,物體的移動是在父空間裡面進行,旋轉和縮放是在本體空間裡面做,這也是ogre中所預設的操作方式。

2、物體空間

你所建立的物體最終都要放到世界空間裡。而所謂物體空間是指相對於物體本身的座標系。

3、本地空間

本地空間   ----   就是繞著自己的軸旋轉,相對於自己的中心進行縮放。

4、父節點空間(parent space)

父節點空間變換就是相對于父節點的變換。

5、場景中的活動物體(movable scene object

活動物體(movable object)由場景管理器建立,並且繫結到場景節點上,最後再由場景管理器銷毀。

以資源為基礎的物體(resource-based objects)

在ogre

中有相當多的場景內容是根據磁碟的資訊來建立的,在這裡把它們稱為以資源為基礎(也可稱為磁碟基礎)的活動物體,其中最常見的莫過於模型本身以及相應的骨骼資料。

以四邊形為基礎的物體(qurd-based objects)

在活動物體中有很多的以四邊形(

quad

)為基礎的實體,其中包括了粒子系統(

particle system

)、公告欄(

billboards

)、跟蹤軌跡(

ribbon trail

)、表層(

overlay

)和天空盒(

skybox

,以及相關的天空面

skyplane

和穹頂skydemo

)。天空面、天空盒和穹頂之間的區別

其中最大的共同點是它們總是和攝像機保持著固定距離;其次,它們要麼是在所有場景物體渲染之前渲染(這也是預設的情況),要麼是在所有場景物體渲染之後渲染;

天空面(skyplane)  

天空面就是用來模擬現實世界中天空的乙個平面。和ogre中所有其他的平面一樣,通過法線和距離來確定在場景中放置位置。

穹頂(skydome)

穹頂技術使用了五個平面來來構造天空,它是乙個頂和四個側面組成的半盒,就是沒有底額盒子。天空半盒的每乙個面都和攝像機保持固定的距離。這個距離可以交給具體應用來配置。

天空盒(skybox)

首先要注意的是,天空盒並不是簡單的在穹頂技術上增加乙個底部平面。而是使用了標準的uv座標變換對映的方法來處理相應紋理,進而只有天空盒才能使用立方體紋理(cubic texture)技術來實現天空的細節。

渲染物件(rendering object)

渲染物件是指用來幫助場景圖進行渲染功能的物件,而不是渲染到螢幕的物體。在場景中兩個最重要的物件是攝像機和燈光,其中攝像機幫助我們拍攝場景中的物體,而活動的燈光則是你的場景顯得更立體和真實。

攝像機(camera)

定義產生乙個視截體用來處理渲染工作,有乙個近截面和乙個遠截面。

燈光(light)

分三種,點光源,聚光燈光源,有向光源。

場景管理器例子:

使用過程:首先要建立乙個場景管理器的例項,然後至少還要構建乙個攝像機,並執行「放置乙個實體到場景中」的操作。

建立乙個場景管理器和攝像機

1   virtual void choosescenemanager(void)2

6 virtual void createcamera(void)7

建立實體和燈光

1

void createscene(void)2

場景節點的移動和旋轉

mscenenode->translate(100.0, 10.0, 0.0);//場景節點在預設的情況下變換空間為父節點空間(

ts_parent

)mscenenode->translate(100.0, 10.0, 0.0, ts_world);//如果在世界空間進行節點變換,就這樣呼叫

mscenenode->translate(0.0,0.0,100.0,ts_local);//對於本體空間的變換也是類似,本例是

將乙個節點沿著它朝向的方向「向前」移動

100個單位

對於旋轉場景節點而言,預設的變換空間為本地空間(ts_local);如果你需要不同的旋轉空間,必須明確的告知ogre:

1

//物件繞自己的y軸旋轉一弧度,大約57角度

2 mscenenode->yaw(ogre::radian(1.0));//3//

物件繞父節點的x軸旋轉一弧度,大約57角度

4 mscenenode->pitch(ogre::radian(1.0), ts_parent);//5//

物件繞世界的z軸旋轉一弧度,大約57角度

6 mscenenode->roll(ogre::radian(1.0),ts_world);//

縮放不需要關係空間;它在節點本身執行,同時影響節點的所有子節點。

mscenenode->scale(2.0, 1.0, 1.0);// 在x軸縮放兩倍,其他軸不縮放

OGRE 3D 程式設計 Ogre 材質1 轉

材質 material 材質是乙個很基本的術語,表示你的物體對光的反射方式。但是對它的實現並不像其解釋這樣簡單,我們會用這一章節進行詳細地介紹ogre中相關的技術。我們剛才提及過,材質定義了物體對光線反射的處理方法。這裡暗示了材質的表現與光源的型別相關 聚光 spotlights 點光源 point...

Ogre3D 實現角色換裝

乙個角色由多個模型組成,這些模型掛在同乙個主節點上,由同乙個骨骼動畫控制著。換裝就是剔除或新增一些模型,如果只是刪增模型,那樣只可以實現一起平移和旋轉。因為裝備,如衣服都是要和身體一起發生形變的。所以,模型之間要統一這些發生形變的方式,那就是骨骼。分類 1.屬於掛接物體,不屬於換裝範疇,建立乙個節點...

ogre3D學習基礎9 光源程式例項

這一章練習一下光源的使用,光源分為三種 點光源,聚光源,有向光。具體內容前面說過,這裡就不解釋了。繼續在上一章的程式的基礎上實現。1 建立攝像機 camera 1 class example1 public212 其他 13 2 建立視口 viewport 1 virtual void create...