XNA-3D座標系統

XNA-3D座標系統

3D的世界和2D不同,且差異算是很大的,雖然三度空間也只是比二度空間多一個z軸,但是複雜度就整個高了許多。

XNA在畫3D圖的時候,需要設定三種矩陣:世界矩陣、觀察矩陣、投影矩陣。

世界矩陣:

用來定義物體在世界的座標,就是物體在空間中的座標。
而世界矩陣是由縮放矩陣 x 旋轉矩陣 x 平移矩陣得到,且因為矩陣沒有交換律,所以順序不能對調。三矩陣可由下列函式方便取得。

縮放矩陣:

Matrix.CreateScale(
    float scale
)
參數:
scale
放大倍率

旋轉矩陣:

Matrix.CreateRotationX(
    float radians
)

參數:
radians
旋轉弧度

平移矩陣:

Matrix.CreateTranslation(
    Vector3 position
)

參數:
position
平移座標

觀察矩陣:

用來定義觀察者的座標和視線方向以及向上的向量。

 

Matrix.CreateLookAt (
         Vector3 cameraPosition,
         Vector3 cameraTarget,
         Vector3 cameraUpVector
)

參數:
cameraPosition
攝影機座標
cameraTarget
攝影機焦點座標
cameraUpVector
攝影機向上的向量

投影矩陣:

用來定義投射到螢幕的矩陣,因為空間中的物體最終還是要顯示在平面的螢幕上。


 

Matrix CreatePerspectiveFieldOfView (
         float fieldOfView,
         float aspectRatio,
         float nearPlaneDistance,
         float farPlaneDistance
)

參數:
fieldOfView
畫面視角
aspectRatio
畫面長寬比
nearPlaneDistance
近景(比此數值靠近的不畫)
farPlaneDistance
遠景(比此數值還遠的不畫)