Windows Phone中通過XNA為開發人員提供了游戲框架,大大提高了游戲開發的效率,這個就不必多言了。在享受使用XNA進行2D開發的便捷的同時,還可以同樣便捷的實現3D開發,我想通過系列文章對此進行介紹,供想在Windows Phone環境中使用XNA進行3D開發的朋友參考。
3D開發需要更多的知識,包括線性代數、計算機圖形學等,這些理論不在本文的范圍當中,有需要的朋友可以找到很多參考書,這里不詳細介紹。
下面,我們來了解一下3D世界的基本情況。
首先,我們來看一下坐標系。在2D平面中,坐標系是再熟悉不過的了,用的是笛卡爾坐標系,由互相垂直的x、y兩個坐標軸唯一確定了一個平面,平面中所有的點都可以表示成(x,y)的形式。
在3D空間中,由于引入了深度,所以平面坐標顯然不能滿足要求了,需要有三維坐標來表示空間中的點。三維坐標系有時也稱為世界坐標系,使用x、y、z三個坐標軸,是在平面坐標系的x、y軸平面上引入一條垂直于該平面的z軸。在Windows Phone中,采用了右手坐標系,當手機屏幕面對我們時,z軸的正方向從手機屏幕向外指向人臉。空間中所有的點都被表示成(x,y,z)的形式,原點是(0,0,0)。坐標系如下圖所示。(注:圖片來源于微軟的實驗手冊)

既然空間中所有的點都需要使用(x,y,z)的形式來表示,為了便于編程,XNA中提供了Vector3類。Vector3類為空間中的點和矢量的表示帶來了便利,常見的用戶法是:
Vector3 pos=new Vector3(0,0, 20);
對于零向量或常用的向量,Vector3類也提供了靜態方法供我們使用,比如創建一個零向量可以寫成:
Vector3 pos=Vector3.Zero;
Vector3類還提供了加、減、乘、除等運算,以及求交點、距離的運算,可以方便的在程序開發中使用。
這樣,我們知道了3D坐標系的使用和在代碼中的表達,但是,這還不足以進行3D開發。試想,空間中的一個物體,雖然它所處的坐標不變,但我們可以從任意的角度來觀看,每個角度觀看到的結果卻是不一樣的。因此,僅有坐標系還是不夠的,在下文中我們還要增加新的內容,才能確定一個空間中的物體的真實表達。欲知后事如何,且待下文分解。
——歡迎轉載,請注明出處 [http://blog.csdn.net/caowenbin](http://blog.csdn.net/caowenbin) ——
- 前言
- Windows Phone 7開發環境初體驗
- Windows Phone 7 3D開發中使用紋理貼圖
- 在Windows Phone中進行3D開發之一坐標系
- 在Windows Phone中進行3D開發之二攝像機
- 在Windows Phone中進行3D開發之三空間
- 在Windows Phone中進行3D開發之四三角形
- 在Windows Phone中進行3D開發之五平移縮放
- 在Windows Phone中進行3D開發之六旋轉
- 在Windows Phone中進行3D開發之七紋理
- 在Windows Phone中進行3D開發之八光照
- 在Windows Phone中進行3D開發之九模型
- 在Windows Phone中進行3D開發之十組件
- 在Windows Phone中進行3D開發之十一天空
- 在Windows Phone中進行3D開發之十二飛行
- 在Windows Phone中進行3D開發之十三陽光
- 在Windows Phone中進行3D開發之后記(附源碼)