yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2008-3-4, PM 5:00 星期二 文章主題: D3D基礎內容概說 |
|
|
初學遊戲設計的很多人都知道DirectX
應該大多數也都知道寫3D遊戲圖型的部份是用DirectX中的Direct3D(簡稱D3D)
但D3D中到底包含哪些內容呢?
今天就大致介紹如下:
一、頂點
D3D的基礎就是一個一個的頂點,這些頂點組成了三角形,再由無數的三角形組成遊戲中的一切物體。
因為頂點由座標組成,而為了方便我們對座標系的直覺認知,我們在繪製流程中又分為「本地空間」、「世界空間」以及「視覺空間」。
另外為了節省相同頂點造成的儲存空間浪費,所以我們還有個索引緩衝器,以一個數字來代替一個頂點(基本的頂點就有x,y,z三個座標,因此存一個頂點要三個數字)來達成減少所需記憶體。
本地空間就是以物體本身的觀點來觀察其座標,比如說,我們觀察自己的左手,勢必在自己身體的左邊…而視覺空間就像是一個站在你對面的人看著你的左手,對他來說,你的左手在他的右邊,到了世界空間,就像是你的左手處於地球上的某個地方…總之就是「觀點」的不同造成了不同的座標。
二、色彩
每個頂點還可以設置自己的顏色,然後選擇一種著色的方法,讓一個三角形參考三個頂點的顏色來畫出自己的顏色,產生一個有色彩的「面」
三、光線
光有了色彩還是不夠的,3D遊戲必須要有打光,因為我們是模擬一個世界,正如同現實中必須有陽光、燈光我們才能看到東西一樣,遊戲中也必須要有光,光又分成很多種,像陽光、燈泡的光、聚光燈那種集中式的光、會自體發亮的東西的光(鮟鱇魚頭上那顆發光體?),又或者紅光、藍光、紫光、綠光、就是那個光(?)。
而為了讓光線可以區分一個面的正反面,所以我們必須在頂點處除了x,y,z座標以及顏色外,再加上所謂的法向量,這個法向量嘛…懶得講,請自行翻閱數學課本。
四、材質
光有了光跟色彩是不夠的,憑這些東西是沒辦法表達出各式各樣的「表皮」的,像是真皮沙發的質感、老虎皮上的黑紋、熊身上溫暖的毛又或者美女皮膚的潔白透亮、溫潤如玉,這些東西嘛,就必須使用畫出來的2D圖形,來當成材質,對著頂點貼上去,覆蓋住頂點組出來的面,就像貼上一層皮膚一樣。
五、混合
混合嘛,就是把前面的色彩跟後面的色彩做混合,這些做出來會有什麼效果呢?就是透明的效果,像是一個半透明的人,或者一顆應該要能看透過去的水球,或是法術、劍光造成的效果,都應該具有跟背景色混合成為半透明的效果。
六、模版
這個聽起來比較難懂,不過嘛,就把它當成一種特殊的遮罩就是了,它主要是用在陰影、鏡影之類的地方,像是鏡子中的反射、水面的照影、金屬物體表面的反映,都是模版發揮功能的地方。
七、字型
這應該沒啥好說的,就是用3D的方式顯示字體。
八、網格
這就是最重要的東西啦,我們說過遊戲中的物體由頂點組成,但一個物體需要的頂點數是很龐大的,我們很難一個頂點一個頂點去設定它,然後組成一個人物或動物出來,所以嘛,我們必須使用3D建模軟體做出模型,然後把它轉檔成D3D的網格模式,說起來,這就是許多頂點的集合體啦,有了這個,我們才能方便地在遊戲中顯示出一些複雜的物體。
九、攝影機
這也沒啥好解釋的,就像拍電影一樣,有個攝影機你才能看到東西。
十、粒子系統
這是拿來模擬一些點狀集合物的,像是雪花、煙火又或者一些法術的特效。(特效可以用材質做也可以用粒子做,視情況及所需效果而定)
十一、揀選
這就是我們的滑鼠遊標囉,我們怎麼知道遊標點在哪呢?畢竟這是3D的世界而不是2D的平面,因此我們必須使用「射線」才能得知玩家在點哪個東西,簡單來說,就有點像是某些會議或課堂上,臺上的人手中拿來指點黑板或螢幕上位置的紅外線發射器,一條線射出去,讓你知道他指在何處。
十二、HLSL(High Level Shading Languages,高階著色語言)
這個嘛,很困難,不過看名稱應該也猜得出來是幹嘛的,大致上來說,想搞什麼卡通著色,就是靠這個東西。說實話,這個我也不是很懂,哈哈,就不介紹了。
D3D大致就以上十二個部份,話說應該是還有其他東西啦,不過我參考的書目只教了這些,哈哈,所以就當成是這樣吧,如果有高手不吝指教我少講了哪些部份,那就先大禮謝過啦。 |
|