所以這就是我想要做的。我想用我的鼠標實現翻譯,以便我翻譯的對象將跟隨我的鼠標移動,即如果我的鼠標光標移動了一定數量的像素,XI希望對象移動該確切相同的X.用glm翻譯對象,使其跟隨鼠標指針
到目前爲止,我一直在使用glm來實現arcball,並且我得到了一個旋轉矩陣。
我正在使用openGL和SDL,因此獲取我的鼠標座標並不困難。 我可以創建一個大小爲3的向量與當前的鼠標,用鼠標移動事件中的座標:
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_MOUSEMOTION:
glm::vec3 vecTranslation(event.motion.x, event.motion.y, 0);
glm::mat4 translationMatrix ;
glm::translate(translationMatrix, vecTranslation) ;
}
}
有了,我有一個轉換矩陣,但不會讓我翻譯下面到底是什麼鼠標光標最終做到了。
有人會對此有所瞭解嗎?
此外,讓我最後的投影矩陣,以便調用glMulMatrix()
,我做的:
glm::matrixCompMult(translationMatrix,rotationMatrix);
但是,當我這樣做,無論是平移和旋轉不工作。如果我簡單地返回旋轉矩陣並直接使用glMulMatrix()
,則我的arcball的行爲與預期相同,但是如果使用上面的代碼,我只能看到我擁有的立方體的一個面,並且它不斷改變其比例但不會旋轉也不翻譯。
至於我使用的繪圖代碼: //假設一些代碼做是爲了知道,應該做些什麼翻譯 matrixProjection = translationMatrix * mMatNow * scaleMatrix; glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glClear(GL_COLOR_BUFFER_BIT); glMultMatrixf(matrixProjection); //比例轉換 glScalef(0.5,0.5,0.5); drawCube();
glFlush();
SDL_GL_SwapBuffers();
,我得到的矩陣是這樣的:首先 :
1; 0; 0; 0; 0; 1; 0; 0; 0; 0; 1; 0; 0; 0; 0; 1;
然後翻譯後:
1; 0; 0; 0; 0; 1; 0; 0; 0; 0; 1; -25; 0; 0; 0; 1;
因此很明顯,翻譯確實發生,但我得到我的畫這個怪異的結果:
原畫:
之前,如果你反對投票和投票關閉請說明原因。如果沒有反饋,問題無法改進 – LBes