2012-12-03 173 views
9

我想通過glm :: mat4(camera.rotationMatrix)轉換glm :: vec3(camera.target)。我嘗試乘以這給我一個錯誤:錯誤:'originalTarget *((相機*)這個)' - >相機:: rotationMatrix''中'operator *'不匹配。我想我不能乘以vec3 * mat4。 GLM有一些功能可以改變這一點嗎?其他方式來做轉換?我如何通過glm :: mat4來轉換glm :: vec3

代碼:

void Camera::Update(void) 
{ 
// Aplicamos la rotacion sobre el target 
glm::vec3 originalTarget = target; 
glm::vec3 rotatedTarget = originalTarget * rotationMatrix; 

// Aplicamos la rotacion sobre el Up 
glm::vec3 originalUp = up; 
glm::vec3 rotatedUp = originalUp * rotationMatrix; 

// Establecemos las matrices de vista y proyeccion 
view = lookAt(
position, //eye 
rotatedTarget, //direction 
rotatedUp //up 
); 
projection = perspective(
FOV, 
(float) getParent()->getEngine()->GetCurrentWidth()/getParent()->getEngine()->GetCurrentWidth() , 
near_plane, 
far_plane); 
} 

回答

13

你想先轉換你glm::vec3與第四元素的0一個glm::vec4,然後它們相乘。

glm::vec4 v(originalUp, 0); 
+5

猜你的意思是「第四元素等於1.0」,不是嗎?翻譯transfroms將不會使用0. –

+2

由於它是相機的向上向量,因此不需要翻譯,因此在這種情況下零更合適 – Slicedpan

+0

對不起。沒有完整閱讀的代碼 –