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

2021-06-03 11:11:38 字數 1735 閱讀 6810

「材質(material)」,材質是乙個很基本的術語,表示你的物體對光的反射方式。但是對它的實現並不像其解釋這樣簡單,我們會用這一章節進行詳細地介紹ogre中相關的技術。

我們剛才提及過,材質定義了物體對光線反射的處理方法。這裡暗示了材質的表現與光源的型別相關:聚光(spotlights)、點光源(point lights)以及有向光(directional lights)對材質的表現有著完全不同的影響。簡單來講,它們都是對物理世界真實光源型別的模擬,所以材質對它們的反射也遵守著其在物理世界中的規則。

注意:雖然在ogre裡面,材質定義了物體如何反射光線的方法,但實際上並沒有真的把光反射到附近的物體上。換句話說,場景中物體的輻射和反射屬性並沒有給場景增加任何光照。這是因為ogre(以及目前絕大多數的即時渲染演算法中)使用了區域性輻射的演算法來處理光照效果。

為了幫助大家更好的理解區域性輻射,在這裡講解一下與其相對的全域性輻射演算法的概念。所謂全域性輻射光照模型,指的是通過光線跟蹤等技術,計算場景中所有包括反射、輻射等所有光線的照明結果的演算法模型。雖然全域性光照模型可以產生和真實**媲美的渲染結果,但因為其演算法相對比較消耗時間,所以目前仍然無法應用於即時渲染領域(即時運算的3d應用程式,至少要每秒產生30幀畫面)。所以全域性光照模型現在只活躍於用來產生**質量動畫的「離線」渲染工具中,比如pixar』s renderman( ray(包括3d studio max 等商業軟體所使用的工具),pov-ray(乙個開源的光線跟蹤渲染工具)以及aqsis(乙個免費開源的符合renderman標準的離線渲染器)中。

材質的101[1]報告

ogre是乙個硬體加速的事實3d渲染引擎。換句話說,它盡可能的使用硬體(gpu)來處理更多的渲染過程。而對於硬體來說,不論多麼複雜的材質,最終渲染到螢幕的結果只有乙個型別,那就是顏色。而ogre作為乙個典型的渲染引擎,把物體上的顏色分解成四種不同的光照作用:環境反射(ambient)、漫反射(diffuse)、放射(emissive)以及鏡面反射(specular)。

物體著色的基礎

在前乙個章節中,我們介紹了ogre中光源的型別。而在ogre所採用的區域性輻射度模型的著色演算法中,對物體顏色產生影響的除了光源本身的屬性之外,還有觀察的角度以及物體本身的顏色(在實際處理中等同於的是攝像機的角度和物體所用材質屬性)。

下面列舉了所有四種影響最終顏色的材質屬性,以及它們的含義。

·環境反射:近似的模擬了場景中的全域性輻射;也就是用來近似模擬所有光在場景中不斷散射的結果。材質中有相應的屬性來代表這種環境反射顏色。

·漫反射:這種顏色是接收到直接從光源發射的光之後產生的,「漫反射」這個詞**於現實世界,描述光被物體反射到各個方向的效果(換句話說就是散射)。

·放射:指的是自發光物體所擁有的顏色。這裡有乙個有趣的話題,因為在區域性輻射光照模型中,放射光只能照亮自己卻不能對周圍任何物體產生影響,有時候這種效果卻可以讓人覺得極其虛幻(設想一下,在你的房間裡有乙個灼熱的物體,卻不會照亮周圍任何東西,你就會了解這種感覺了)。

·鏡面反射:描述了物體對被光照後的「高光」效果。設想一下假如你有乙個紅色皮球,而且擦得光亮。現在把它放在乙個高瓦度的燈泡下面,你就會在上面看到乙個被稱為鏡面高光的亮斑。這是因為光線被光滑的表面直接反射到你的眼睛中的緣故。

在這裡鏡面反射的高光的顏色是可以被使用者定義的。這是因為在現實世界中,和環境光、漫反射以及輻射光不同,鏡面反射高光的顏色除了材質自身和光的顏色之外也受到周圍其他的一些因素的影響。所以這裡允許通過手動調整,使用較低的代價來達到對真實世界的簡單模擬。另外我們也可以手動調整鏡面高光的反射能量,簡單的說就是可以用引數來控制紅色皮球上「光斑」的大小,同時調節物體發亮的程度:能量大的時候,光斑變得又小又亮。

Ogre3D 實現角色換裝

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

Ogre3D嵌入Qt框架 之 小結

public ogreview qwidget parent ogreview qsize minimumsizehint const qsize sizehint const protected void setupview 建立ogre使用的內容,場景內容 void update 通過它,手動更...

Ogre3D嵌入Qt框架 之 小結

public ogreview qwidget parent ogreview qsize minimumsizehint const qsize sizehint const protected void setupview 建立ogre使用的內容,場景內容 void update 通過它,手動更...