摘要: 在Direct3D的一個場景中,最多可設置8個光源,設置光源由IDirect3DDevice9::SetLight()函數完成。
函數IDirect3DDevice9::SetLight()只是設置光源,在默認情況下,設置的任何光源都還不起作用,具體使用哪些光源,由函數IDirect3DDevice9::LightEnable()確定。
閱讀全文

越過道德的邊境
我們走過愛的禁區
享受幸福的錯覺
誤解了快樂的意義
是誰太勇敢說喜歡離別
只要今天不要明天眼睜睜看著
愛從指縫中溜走還說再見
不夠時間好好來愛你
早該停止風流的游戲
----------------------------------------------------------
廣島之戀給我的感悟:色即空,空即色。
畢竟愛和性是兩回事。
摘要: 光照計算模型說明圖形系統以什么樣的方法計算燈光照射在物體上的顏色值,它是一種計算方法,而不是具體的燈光。光源則定義了三維場景中具體的燈光,包括位置、方向、強度等信息。相同的光源可以根據物體表面材質的不同,通過不同的光照模型顯示。比如,在臥室中的一盞臺燈,照射在布質床單上時,應使用漫反射模型;而照射在玻璃表面的桌子上時,則應使用鏡面反射模型計算光照效果。
閱讀全文
摘要: 在三維圖形程序中使用光照效果能夠有效地增強場景的真實感。在Direct3D中,通過計算場景中的光線和物體表面材質反射光線顏色的數學交互,可使光線模型接近于真實世界的照明系統。
在真實世界中,光線在到達眼睛之前經過了物體表面的多次反射,每次反射時,物體表面都會吸收一些光,有些被隨機反射擴散出去,其余的到達下一個物體的表面或眼睛。真實世界中光線反射的效果就是光線跟蹤算法需要模擬實現的。盡管光線跟蹤算法能夠創建非常逼真的與自然界中觀察到極為相似的景象,但是還沒有實時程序能夠完成這些運算。考慮到實時渲染的需要,Direct3D使用更簡單的方法進行光照計算。Direct3D光照計算模型包括4種:環境光、漫反射光、鏡面反射光和自發光。它們的結合能靈活高效地解決三維圖形程序中的光照問題。
閱讀全文
摘要: 空間中的物體需要使用三維坐標來描述,而顯示器是一個二維的表面,所以在屏幕上渲染一個三維場景時,首先需要將描述空間物體的三維坐標變換為二維坐標(世界坐標到屏幕坐標),這在Direct3D中稱為頂點坐標變換。頂點坐標變換通常通過矩陣來完成。可以把頂點坐標變換想象成攝像過程,三維世界的景物通過攝像機的拍攝顯示在二維的相片上,所不同的是把相片換成了屏幕。
閱讀全文
摘要: 為了讓物體運動起來,需要不斷改變相應的世界矩陣,而投影矩陣和觀察矩陣通常不變,特別是投影矩陣在設置好之后基本上不需要重新設置。
在默認情況下,對于窗口顯示模式的應用程序,視口的大小就是當前窗口的客戶區的大小,對于全屏模式的應用程序,視口的大小就是屏幕的分辨率。除非特殊需要,絕大多數程序都采用這一默認設置,所以在以后的示例程序中都將略過視口設置,而采用其默認設置。
閱讀全文
摘要: 視區(視口)變換是Direct3D頂點變換流水線的最后一步,它通過定義視區信息(屏幕顯示區域的實際寬和高等參數),完成頂點裁剪以及將頂點坐標從投影坐標變換為最終顯示的以像素為單位的屏幕坐標等操作。裁剪過程保證不渲染完全在觀察平截面以外的對象,還確保對于與觀察平截面相交的對象,可以如下方式進行渲染:即在視口指定范圍以外的部分不繪制像素。
閱讀全文
摘要: 將攝影空間中的三維物體投影到二維膠片上,也就是Direct3D中的屏幕,這種三維到二維的變換過程就是投影變換,即從取景空間到攝影空間的變換。設三維物體在觀察空間中的坐標為Pview,投影矩陣為Mproj,則頂點在投影空間中的坐標為:
Pproj = Pview * Mproj
閱讀全文
摘要: 取景變換(也稱觀察變換)是在世界空間下架設一個攝像機,把各個頂點坐標從世界空間變換到攝影空間(觀察空間)。在攝影空間里,攝像機或者說觀察點位于原點,向著z軸正方向。因為Direct3D采用左手坐標系,所以z軸正方向指向屏幕里面。設三維頂點在世界坐標系的坐標為Pworld,在攝影空間內的坐標為Pview,則:
Pview = Pworld * Mview
閱讀全文
摘要: 世界變換就是將物體頂點坐標從模型空間轉換到世界空間。在模型空間里,頂點位置坐標依據模型的本地坐標系的原點而定,在世界空間里,所有模型的頂點共用一個原點,即世界坐標系原點。事實上,世界變換就是將一個模型從本地空間重新定位到世界空間內。從模型空間到世界空間的轉換實際上就是對模型進行平移、旋轉、縮放以及它們的任意組合變換。
閱讀全文