場景對象創建
場景中的所有對象,包括可移動與不可移動的:lights, cameras, entities,particle system,
billboards, skyboxes, static geometry , world geometry.都由場景管理器來創建。場景中的
任何東西都由場景管理器來管理。任何通過場景管理器得到的東西,都必須由場景管理器來銷毀。
用戶不能delete通過由場景管理器得到的指針。
場景結點只有一個父結點,可能有多個子結點。可以隨意的attach 和 detach 這些場景中的結點。
在明確告訴場景管理器銷毀這些結點前,它們總是存在。如果不想渲染場景中的某些結點上的內容,
我們可以很方便地對她們進行detach.場景中總是存在一個Root結點。可以把多個內容對象attach到
同一個結點上。不能同時把一個實例對象掛到兩個場景結點上,一個場景結點也不能有兩個父結點。
總是場景結點在執行空間操作(平移,旋轉,縮放)而不是實體對象。
場景查詢
場景管理器的第二個最常用的功能是進行場景查詢。包括射線查詢,球查詢,綁定盒查詢,綁定平面
查詢,相交查詢。Terrain clamping:在崎嶇不平的路上,勇敢地向下發射一束光,不管你告訴我你有
多高,我永遠把你踩在腳下..(是不是不太像筆記?^_^)。所有這些查詢都是 maskble的,這表明可
以在查詢時過濾掉不關心的對象類型。如球查詢時,只想看看它包含了多少lights,其他的對象即使包含
在球里也不必返回,實際上根本不用計算。
空間關系與3D變換
world , parent , local世界空間中的變換是相對于全局坐標系的源點(0,0,0),這也是root scene node的位置。因此可以認為世界空間中的變換是相對于Root scene node的。父空間中的變換是相對于場點結點的父結點的,本地空間的變換是相對于物體所掛接的結點的。大多數情況下,我們會在父空間中做平移,在本地空間中做旋轉,ogre中的這些操作,都是在上述的這種方式下。
object space
從模型導出的頂點數據與它的源點之間的關系是不變的,當它被掛到場景結點上,這個結點就是認為是
它的源點。建模時與導出時不假設測量單位,以世界單位導出(也就是無單位)。
ogre平移與設置位置不同:平移可以有多個參照點(world,local,parent space),而用setPosition()
時,總是相對于parent-space 坐標系的。
可移動的場景對象
基于資源的對象:最普通的是mesh(陪伴著skeleton),這種類型的對象被資源管理系統管理。
場景管理器不負責實際的裝載,它調用Ogreuq資源管理器來完成。
基于四邊形的對象:粒子系統,公告板,ribbon trail,overlay,天空盒。它們通常是面向相機的,
使用動態材質。它們的主要資源是腳本,這些腳本定義了如何映射材質,以及它們的生命期(對于粒子系統與ribbon trail來說)。天空盒直接用場景管理器來定義。
skyplane,skydome,skybox
主要的相似點是它們與相機保持一個常量的距離。它們可以在場景中其它對象
之前或是之后渲染。它們使用普通的ogre material,因此紋理動畫與其他紋理沒有什么不同。它們可以
被場景管理器打開或關閉,與相機的距離也可以設置。
skyplane 是一個平面。用距離和法線定義它與相機的位置關系。可以彎曲,可以分多個段,可對紋理進行多次平鋪。skydome由五個平面組成,底部空。使用改變紋理坐標的方式來達到外觀上的曲率變化。有一個值用來調節,值越低,曲率越柔和,值越高,越陡峭。skybox 像skydome,但他不能“彎曲”材質坐標。它可以使用立方材質。可使用硬件加速功能達到很好渲染效率。
光
使用光的限制:單個通道通常最大支持8個燈。使用更多的燈,通過多通道。
光與物體之間的距離,決定光對物體實際的影響。Ogre支持點光源,平等光,聚光燈。
世界幾何
當創建基于mesh的景物或關卡,應該分成較小的部分,以便于裁減。Paging Scene Manager提供了這樣的工具。
空間分割方案
Ogre是基于硬件加速渲染引擎,因此以最大化幾何體batching的方式會比基于實際多邊形進行空間分割
效果要好的多。Modern GPUs prefer to render a few large batches of geometry instead of
many small batches.
The more visible geometry you can render in a single batch, the better your application’s
performance is likely to be (within reason, of course; other classic issues such as fillrate and
overdraw can still take over if you just blindly blast polygons at the GPU, batched or not).
靜態幾何使用注意:
靜態幾何在使用之間必須被建立。
使用相同材質的幾何體將被放到同一渲染操作中(batch):different materials still require a separate batch.
努力的方向是,最大化一個調用的三角形數,最小化調用的次數。
不能移動被包含在static geometry中的對象。只有一個世界轉換應用到完整的static geometry對象上.
比同樣規模的movable geometry占用更多的內存。
假如組中的任何東西在視錐之內,那么組中的所有對象都將被渲染。
?
posted on 2007-03-09 14:25
清源游民 閱讀(1884)
評論(0) 編輯 收藏 引用 所屬分類:
OGRE