XNA那些事(四) 3D知識初步

2021-08-26 03:10:27 字數 1924 閱讀 5505

首先要向大家解釋一下,我馬上要當爸爸了,家事繁忙所以很久沒有更新部落格了。但是我會堅持把這個系列的部落格新增完整的。

前面已經和大家談了有關xna 2d的相關知識與介紹,其實2d的世界已經可以做不少事情了,比如前面所提到的那些像植物大戰,還有連連看**礦工等等,但是做為乙個xna的開發者還是要知道3d建模的相關知識的。

那麼我想說這節內容其實是一節數學方面的補漏課,如果大家的幾何學得夠好,比如什麼右手座標,矩陣變換這些概念都已經非常理解的情況下那麼可以跳過這一節。

說到3d其實必須要說的是座標系的概念,在平面或者說2d開發當中這個很簡單,x正向朝左,y正向朝上,這個我覺得不會有什麼人疏漏,但是如果現在我問您什麼是右手定則,可能有很多朋友就會表示不記得了。

那麼說到底其實座標系除了定下方向,還要規定哪個方向代表正方向。直角座標系的 x-軸,y-軸,與 z-軸必須相互垂直。稱包含 z-軸的直線為 z-線。在三維空間裡,當我們設定了 x-軸,y-軸的位置與方向的同時,我們也設定了 z-線的方向。可是,我們仍舊必須選擇,在 z-線以原點為共同點的兩條半線中,那一條半線的點的座標是正值的,那一條是負值的?這兩種不同的座標系統,稱為右手座標系左手座標系。右手座標系又稱為標準座標系,或正值座標系

右手座標系這名詞是由右手定則而來的。先將右手的手掌與手指伸直。然後,將中指指嚮往手掌的掌面 半空間,與食指呈直角關係。再將大拇指往上指去,與中指,食指都呈直角關係。則大拇指,食指,與中指分別表示了右手座標系的 x-軸,y-軸,與 z-軸。同樣地,用左手也可以表示出左手座標系。見下圖:

了解過了座標系,還要再提到乙個矩陣的概念,雖然xna的matrix類已經做了很多任務作,把很多的方法都隱藏了起來,但是一些基本概念還是要有

1.單位矩陣,什麼是單位矩陣,一句話說就是乙個主對角線上的元素全是1,其它位置上的元素都是0的矩陣,他的性質是任何矩陣與它相乘都是原矩陣本身。這個矩陣在xna當中對應這個值:matrix.identity。

2.平移矩陣,旋轉矩陣等概念由於xna已經封裝很好了如果讀者感興趣,可以去查一下,但是行列式,矩陣的逆,轉置,等等概念都是高階的內容,在這裡就不加介紹了。

接下來是3d開發中的乙個重要概念。

攝像機:

其實這是任何乙個3d建模都需要理解概念,

攝像機需要兩個概念進行定義,乙個是位置引數,乙個是幾何性質的引數,讓我們來看一下一段典型的攝像機建模的**。

public camera(game game, vector3 pos, vector3 target, vector3 up)

: base(game)

其中matrix.createlookat(pos, target, up);就是指定攝像機的幾何位置,第乙個引數pos好理解,就是攝像機的位置,第二個引數target就是攝像機朝向如果把眼睛理解為攝像機那麼這個引數就是定義眼睛往哪看,第三個引數up是攝像機的正向,這個引數比較難理解其實可以這樣理解,假如您的眼睛位置不變,看的方向不變,但如果你是站著的與你是倒立的兩種狀態所看到的影象還是不一樣的,所以這個引數定義的是你頭頂的方向。

好再看 projection = matrix.createperspectivefieldofview(

mathhelper.piover4,

(float)game.window.clientbounds.width /

(float)game.window.clientbounds.height,

1, 3000);

這句定義幾何性質。matrix.createperspectivefieldofview接受4個引數

第乙個引數定義視角,第二個引數定義了攝像機的長寬比,第三個引數與第四個引數定義攝像機可以拍攝到的最近距離與最遠距離,例如人眼在很近的地方與很遠的地方都是看不到物體的,這兩個引數定義視距。

好了,有了上述幾個概念,相信大家對於xna3d已經有了一定的認識,希望有幫助。

XNA系列 3d模型的匯入

using system using system.collections.generic using microsoft.xna.framework using microsoft.xna.framework.audio using microsoft.xna.framework.content ...

用CSS3做3D動畫的那些事

年會做了個3d變換的 系統,在這裡分享下通過css3製作3d效果的心得。系統雖然夠炫酷,可惜抽的時候出了點bug,好幾百人啊我的小心臟啊。雖然這個鍋後面甩給會場的老爺電腦了 手動白眼 首先介紹幾個實現3d效果的css3屬性 rotatey translatez 這兩個transform屬性值是實現3...

3D基本小知識

用3d資料生成乙個2d影象的過程叫做渲染,在計算機上顯示的是由矩形 的顏色點組成的,這些矩形的顏色點 做畫素。畫素乙個畫素點由3各顏色單元構成,乙個紅點 綠點 藍點組成。影象是以每個像 至少包含 3 個值的乙個陣列存 在電 的存 器中的。第乙個值 指定了像 的 色元 的強度,第 個值代表 色強度,第...