2017-09-01 96 views
0

這是很容易設置ViewMatrix與GLM:改造modelMatrix

glm::lookAt(Position, Direction, UpVector); 

,但如果我嘗試使用的Funktion與modelMatrix,我會得到comfusing值(型號是不是在正確的位置並且旋轉看起來不正確)。 我只是想設置一個對象相同的方式設置相機。 我可以使用lookAt功能並在之後進行一些更改嗎?或者我必須爲此編寫自己的功能?如果是這樣,怎麼樣?

我定這個位置:

m_Orientation = glm::lookAtLH(Position, Direction, UpVector); 
m_Orientation[3][0] = -m_Orientation[3][0]; 
m_Orientation[3][1] = -m_Orientation[3][1]; 
m_Orientation[3][2] = -m_Orientation[3][2]; 

我也用這個vertexshader內:

gl_Position = CameraMatrix * ModelMatrix * Pos; 

其中CameraMatrix是viewProjectionMatrix,ModelMatrix(我的問題)和POS是位置我的頂點在模型空間中

+1

顯示一些關於如何操縱模型的代碼。 – Robinson

+0

閱讀[glm - 矩陣變換函數](https://glm.g-truc.net/0.9.2/api/a00245.html) – Rabbid76

+0

@Robinson我不知道我應該發佈什麼...它必須很容易設置模型matrix ... – Thomas

回答

1

在渲染中,場景中的每個網格通常都會通過模型矩陣,視圖矩陣和投影矩陣進行變換。

  • 投影矩陣:
    投影矩陣描述了從一個場景的3D點的映射,到視區的2D點。投影矩陣從視圖空間轉換到剪輯空間,並且剪輯空間中的座標被轉換爲範圍從(-1,-1,-1)到(1,1,1)的歸一化設備座標(NDC)通過用剪輯座標的w分量分割。

projection

  • 視矩陣:
    視圖矩陣描述從該場景搜索的方向和位置。視圖矩陣從Wolrd空間轉換到視圖(眼睛)空間。在視口的座標系中,X軸指向左側,Y軸向上,Z軸不在視圖中(注意在右側系統中,Z軸是X軸的叉積)軸和Y軸)。

view

  • 模型矩陣:
    模型矩陣定義的位置,並且oriantation場景中的網狀物的相對大小。模型矩陣將頂點位置從網格變換到世界空間。

model

模型矩陣如下所示:

(X-axis.x, X-axis.y, X-axis.z, 0) 
(Y-axis.x, Y-axis.y, Y-axis.z, 0) 
(Z-axis.x, Z-axis.y, Z-axis.z, 0) 
(trans.x, trans.y, trans.z, 1) 

又見回答以下問題: