我們的3d世界通常開始時看上去的感覺是非常複雜的,但它們目前都有乙個很明顯的缺點:它們都被乙個空白的背景所提供。
我們為我們的精靈工程建立乙個背景,通過在渲染精靈前,先簡單用繪製乙個螢幕大小的。這個工作在2d中是很好完成的,但在3d中它就會崩潰:隨著相機移動,背景也必須跟著移動,我們不能讓這個發生在乙個靜態的中。
這有多種方法,我們可以採取工作的3d背景來實現,這裡你所看到的稱為天空體。之所以這麼稱呼,因為它實現效果是乙個盒子(乙個立方體),放置在相機中。相機在集中在盒子裡,並且它的角度變化為看到的圍繞的場景,它也環顧四周的天空體。結果是現實的外觀背景移動與在場景中的相機和物件一致的。
下圖可以看到天空體。
雖然這個示例使用了乙個雲天空,天空體技術可以未所有型別的背景效果來使用,從城市的地平線到星際的星空域。
在任何其它渲染發生並關閉寫入深度緩衝前,天空體就繪製了。這將確保立方體總是在背景中呈現,它沒有任何效果或妨礙物件繪製在場景的前景中。立方體確實非常小,事實上要小於在主要場景中的物件,但渲染順序確保對終端使用者來說這不是很明顯。
為了使天空體看起來更真實,我們必須用一種特殊的方式來移動它;或者我們必須去放置從相機的觀點看到的移動。由於相機通過世界向前移動,所有在場景中的物件應該更越近越大,但立方體仍然在乙個恆定的距離。這給人的印象是立方體要比實際上的藥更大更遠。
我們通過經常設定天空體的座標為立方體實現這個移動行為為了和相機完全匹配。由於相機圍繞場景移動,天空體也是如此。
因此,相對於相機,立方體並不是在移動,導致它明顯的恆定位置。
然而,僅相機的位置被複製到天空體中:天空體旋轉,向上向量保持不變。結果,當相機環視世界時,它也將環視在天空體中。
建立天空體
天空體實際上作為乙個立方管實現 它沒有頂部或底部面。這大大簡化為天空體建立圖形的任務。用這種方式使用管子的效果已經隱藏在天空體的頂部,通過確保天空紋理的頂部邊緣和場景的背景色有相同的顏色,使得在天空體終點處和背景的開始處很難看到它,除非它是直接看到的。在底部邊緣,我們確保足夠的面來繪製來隱藏紋理較低...
Ogre 建立天空盒 天空穹 天空面
1.天空盒 立方體 六面 stevecube up,stevecube dn,stevecube lf,stevecube rt,stevecube fr,stevecube bk.jpg 建立 mscenemgr setskebox 是否啟用,材質名,skybox與camera的距離,渲染級別 m...
opengl 天空盒 ThingJS玩轉天空盒技術
在計算機的三維世界中,三維天空的繪製肯定不可能像現實生活中的天空一樣,一望無際綿延無盡 thingjs的天空盒技術是認真的。引用地圖元件指令碼之後地球相機引數就改變,需要校正天空盒。為什麼偏偏是天空盒呢?這就得問一下,天空盒的原理是什麼?opengl中天空盒的思想就是繪製乙個大的立方體,然後將觀察者...