2012-12-03 12 views
9

Chcę przekształcić glm :: vec3 (camera.target) przez glm :: mat4 (camera.rotationMatrix). Próbuję pomnożyć to, daj mi błąd: error: no match for 'operator *' w 'originalTarget * ((Camera *) this) -> Camera :: rotationMatrix'. Przypuszczam, że nie mogę pomnożyć vec3 * mat4. Czy GLM niektóre funkcje to przekształcić? Innym sposobem na przekształcenie?Jak mogę przekształcić glm :: vec3 przez glm :: mat4

Kod:

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); 
} 

Odpowiedz

13

Chcesz najpierw konwertować glm::vec3 do glm::vec4 z 4 elementu A 0, a następnie pomnożyć je razem.

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

Zgadnij, że oznaczałeś "z czwartym elementem równa się 1,0", nie? Tłumacz transfroms nie będzie działał z 0. –

+2

Ponieważ jest to wektor w górę dla kamery, nie trzeba go tłumaczyć, więc zero jest bardziej odpowiednie w tym przypadku. – Slicedpan

+0

Przepraszamy. Nie przeczytałem dokładnie kodu, –

Powiązane problemy