2013-08-23 36 views
0

如何MatrixCamera的設置轉換成ProjectionCamera如何MatrixCamera的設置轉換成ProjectionCamera

我的代碼如下所示:

  var vm = new Matrix3D(matrixarray[0], matrixarray[1], matrixarray[2], matrixarray[3], matrixarray[4], 
           matrixarray[5], matrixarray[6], matrixarray[7], matrixarray[8], matrixarray[9], 
           matrixarray[10], matrixarray[11], matrixarray[12], matrixarray[13], 
           matrixarray[14], matrixarray[15]); 




     var pm = this.CreateFrustumMatrix(frustumArray[0], frustumArray[1], frustumArray[2], frustumArray[3], 
              frustumArray[4], frustumArray[5]); 
     var mc = new MatrixCamera(vm, pm); 

,但我想用一個ProjectionCamera,所以,我想將其轉換爲ProjectionCamera

+0

望着文檔快速ProjectionCamera是一個抽象類 – Sayse

回答

1

ProjectionCamera是一個抽象類,PerspectiveCameraOrthographicCamera分享。

如果你想透視(距離較遠的物體看起來較小),則構造一個PerspectiveCamera,否則構造一個OrthographicCamera

您將需要look vector,up vector,eye pointfield of view以構建這些相機中的任何一個。您可以直接從視圖矩陣(look,up和eye)和投影矩陣(fov)中的行中獲取這些矢量。

使用您的視圖矩陣:

Look: <m13, m23, m33> 
Up: <m12, m22, m32> 
Eye: <m41, m42, m43> 

注:m13意味着matrix [0][2] ...因爲矩陣佈局爲內存線性塊,你訪問它是這樣的:matrix [x*4+y]

使用您的投影矩陣:

FOV: 2.0 * tan^-1 (1.0/m11) 

注:譚^ -1被稱爲Math.Atan (...)在C#

+0

非常感謝你 – zbw911