我無法在OpleGL中獲得正確的轉換。幾何 - > OpenGL
我有三維點 - P(X,Y,Z),以及投影矩陣M,其等於K *(R | T)其中
的K - 照相機校準矩陣
(R | T) - 點(對象)座標系變換(R - 旋轉矩陣,T - 平移矢量)
正如我們所投影的點爲p = M * P結果
我知道P,K,R,T和我不會用OpenGl來計算p。
在OpenCV的條款將如下所示(有點抽象代碼):
CvMat* R = cvCreateMat(4,4, CV_32F, getRotationData());
CvMat* T = cvCreateMat(4,1, CV_32F, getTranslationData());
CvMat* K = cvCreateMat(4,4, CV_32F, getCameraCalibrationData());
// (R|T)
R->data.fl[3] = T->data.fl[0];
R->data.fl[7] = T->data.fl[1];
R->data.fl[11] = T->data.fl[2];
R->data.fl[15] = T->data.fl[3];
CvMat M = cvMat(4,4, CV_32F);
// M = R*(R|T)
cvMulMat(K, R, &M);
CvMat* P = cvCreateMat(4,1, CV_32F, getTestedPoint3D());
cvMar p = cvMat(4,1, CV_32F); // result transformation
// p = M*P
cvMulMat(&M, P, &p);
// project
float z = p.data.fl[2];
float x = p.data.fl[0]/z;
float y = p.data.fl[1]/z;
printf("Point projection [%f,%f]", x, y);
cvDrawPonit(img, cvPoint(x,y), CV_RGB(255,0,0)); /// <- !!!!
我怎麼能這樣的邏輯轉換爲OpenGL的?
我怎樣才能設置GL_PROJECTION,我能做些什麼GL_MODELVIEW模式或其他?
最近我發現將模型視圖矩陣分解成單獨的模型和視圖也讓我更好地理解了這個主題。 – 2012-06-13 14:15:12