問題
1.什么叫做模型矩陣
2.什么叫做投影矩陣
3.什么叫做照相機(jī)
4.什么叫做視景體
5.什么叫做管道
6.我們所觀察到的最后的圖形矩陣是什么
答案
1.什么叫做模型矩陣
在視覺計(jì)算機(jī)世界中:矩陣是用來存儲(chǔ)數(shù)據(jù)
模型矩陣:一個(gè)物體經(jīng)過 平移,旋轉(zhuǎn),縮放等變換 ,這個(gè)模型矩陣的值會(huì)發(fā)生變化
在OpenGL中的類是:
GLMatrixStack modelViewMatrix;
2.什么叫做投影矩陣
在視覺計(jì)算機(jī)世界中:矩陣是用來存儲(chǔ)數(shù)據(jù)
投影矩陣:投影矩陣分為 正投影 和 透視投影
正投影:指平行投射線垂直于投影面
透視投影:它是從某個(gè)投射中心將物體投射到單一投影面上所得到的圖形好渠。透視圖與人們觀看物體時(shí)所產(chǎn)生的視覺效果非常接近恩伺,所以它能更加生動(dòng)形象地表現(xiàn)建筑外貌及內(nèi)部裝飾
在OpenGL中的類是:
GLMatrixStack projectionMatrix;
3.什么叫做照相機(jī)
照相機(jī):就是我們?cè)谟^看一個(gè)物體的時(shí)候我們所在的位置
在OpenGL中的類是:
//觀察者位置
GLFrame cameraFrame;
4.什么叫做視景體
視景體:這個(gè)是用來設(shè)置我們觀察物體的角度,距離等,通過視景體,我們可以獲取正投影數(shù)據(jù)或者是透視投影數(shù)據(jù)
在OpenGL中的類是:
//視景體,用來構(gòu)造投影矩陣
GLFrustum viewFrustum;
5.什么叫做管道
管道:是用來管理矩陣堆棧
在OpenGL 中的類是
GLGeometryTransform transformPipeline;
例如:
//使用transformPipeline 管道管理模型視圖矩陣堆棧 和 投影矩陣堆棧
transformPipeline.SetMatrixStacks(modelViewMatrix, projectionMatrix);
6.我們所觀察到的最后的圖形矩陣是什么
世界坐標(biāo)系 的變換矩陣 * 照相機(jī)的變換矩陣 * 視景體的矩陣(也就是正投影矩陣 或者是 透視投影矩陣)
例如:
//獲取攝像頭矩陣
M3DMatrix44f mCamera;
//從camereaFrame中獲取矩陣到mCamera
cameraFrame.GetCameraMatrix(mCamera);
//模型視圖堆棧的 矩陣與mCamera矩陣 相乘之后蠢正,存儲(chǔ)到modelViewMatrix矩陣堆棧中
modelViewMatrix.MultMatrix(mCamera);
// 獲取世界坐標(biāo)系的矩陣
//創(chuàng)建矩陣mObjectFrame
M3DMatrix44f mObjectFrame;
//從ObjectFrame 獲取矩陣到mOjectFrame中
objectFrame.GetMatrix(mObjectFrame);
//將modelViewMatrix 的堆棧中的矩陣 與 mOjbectFrame 矩陣相乘,存儲(chǔ)到modelViewMatrix矩陣堆棧中
modelViewMatrix.MultMatrix(mObjectFrame);
// 獲取投影矩陣:
//視景體,用來構(gòu)造投影矩陣
GLFrustum viewFrustum;
//透視投影
viewFrustum.SetPerspective(35.0f, float(w) / float(h), 1.0f, 500.0f);
//projectionMatrix 矩陣堆棧 加載透視投影矩陣
projectionMatrix.LoadMatrix(viewFrustum.GetProjectionMatrix());
//modelViewMatrix 矩陣堆棧 加載單元矩陣
modelViewMatrix.LoadIdentity();