3D遊戲從入門到精通 18

2021-08-22 05:16:01 字數 1096 閱讀 6557

2.10.1

矩陣變換

在3d遊戲裡,要表達不同的東西,每樣東西都在不同的位置。比如構造乙個間教室,那麼就需要根據黑板、講台、座位來不同位置來放置。由於所有模型座標都是區域性座標,都需要變換到世界座標,才顯示出正確位置。還有遊戲裡的很多物體是動起來的,就是位置會變化,大小會變化。比如模擬一輛小車開過馬路,那麼這輛車就需要水平運動起來,車輪還需要旋轉起來。仔細看一下車輪,它不但作平移運動,還需要作自轉運動。要表達物體在不同的位置,需要使用到矩陣。要表達物體旋轉運動和平移運動,也需要使用矩陣。由n元線性方程組的系統數組成的m行n列的數表,就叫做矩陣。如下圖所示:

由於在三維裡的座標變換,都是線性變換,所以可以使用矩陣來表示三維變換。本來三維座標,只有三個座標軸,寫出來的線性方程也只有三個的。但為了方便把所有的座標變換統一到一種矩陣表達方式,就使用了4×4的矩陣來表示變換,而不是採用3×3的矩陣變換。在d3d裡表示如下:

typedef struct _d3dmatrix ;

float m[4][4]; };

} d3dmatrix;

矩陣在3d遊戲裡是怎麼使用的呢?下面來看看這個例子,它已經把矩陣基本特性都使用了。在自然界裡,都多東西都是變化的,運動的。在我們生活的太陽系裡,在很多年前就知道太陽是自轉的,地球有自轉也有公轉,而月亮也自轉,還有繞著地球公轉和太陽公轉。要表達太陽的自轉,就需要使用矩陣來旋轉它的模型。而表達地球的自轉,也需要使用矩陣來旋轉它的模型,並且還需要使用平移的矩陣,然後再旋轉它,這樣才會讓地球繞著太陽轉。而月亮是最複雜的,不但自己要自轉,還要繞著地球公轉和太陽公轉,這樣月亮就需要多次使用旋轉矩陣和平移矩陣。

在d3d裡可以使用矩陣實現物體的縮放、旋轉、平移。在三維座標裡,任何的點(x,y,z)變換到(x', y', z'),都可以使用4×4的矩陣來計算出來,像下面這樣計算它:

電子書mm3d引擎源程式例子源程式49元一套

聯絡人:蔡軍生

****:

email: caimouse1976 at sina.com =

×

3D遊戲從入門到精通 31

當我們看到現實世界裡,有很多山地。那麼這種山地,在 3d世界裡又是怎麼樣顯示出來的呢?要模擬現實中的山地,就需要研究它怎麼樣構成,然後採用各種方法建立出來。在遊戲的世界裡,對於地形的要求是不嚴謹的,只要看起來像山地,就行了,而不像其它地理系統,一定要精確到跟現實世界里山比例一樣。因此,在這裡建立的 ...

3D遊戲從入門到精通 21 22

2.10.1 燈光與材質 在現實的世界裡,沒有光線,是什麼東西也看不見的。在d3d的世界裡,也是一樣的。但是在d3d裡有一種光線,是非常奇怪的,這種光線是沒有方向,沒有位置,整個世界全可以照亮的光線,它就是環境光,它其實有點像我們現實生活裡的無影燈。在d3d裡光線分為三種型別,分別是點光源 聚光燈和...

3D遊戲從入門到精通 11

2.10.1 索引緩衝區 上面已經學習了最簡單的三角形顯示,了解了整個3d物體的顯示流程,下面來學習乙個複雜一點的物體顯示,使用12個三角形構造成的正方體顯示。並且通過個例子學會使用索引緩衝區,提高圖形繪製的速度和效率。1 使用三角形構造立方體 由前面可知,任何複雜的物體,都是由三角形組成的。現在就...