2010-08-07 47 views
2

正如你所知道的,當我們想在DirectX中繪製一個三維對象時,我們應該定義一個攝像頭 。現在我們有一個Device對象,它的名字是'device1'。它是我的問題: device1.View = Matrix.Look ...(New Vector3(),New Vector3(),New Vector3()); 參數#3是向上向量。它究竟做了什麼?Up Vector在DirectX中的確做了什麼?

回答

8

顧名思義,它定義了向上的方向。這是一件非常重要的事情。你需要知道相機的位置,你需要知道它面對的是哪個方向,但是你也需要知道它是如何轉向的 - 即上下左右都會看到什麼。

在我們的現實世界中,我們視野的「向上」矢量(通常)是由重力場暗示的,即它是由地球施加的重力矢量的反向(向上而不是向下)。

2

在相機矩陣中,您需要形成一個「正交」基矩陣來描述座標系。

如果您想到任何3D座標系,那麼您有3個座標軸。 X軸(或側面/側面向量),Y軸(向上向量)和Z軸(方向向量)。

向上矢量對定義該座標系非常重要。

甲行主基矩陣的定義如下:

xx, xy, xz, 0 
yx, yy, yz, 0 
zx, zy, zz, 0 
px, py, pz, 1 

XX,XY,XZ是定義x軸,YX 3矢量,YY,YZ y軸,ZX, zy,zz z軸和px,py,pz定義位置向量。

此外,如果你想到它,如果你指出向上的向量,那麼你會期望看到一切倒過來..對吧?此外,因爲您還沒有將向上的向量旋轉到向下的位置,您還會注意到向量的方向是錯誤的,所以您會看到一些出現在X軸上的鏡像以及正在顛倒的東西。