Voglio trasformare un glm :: vec3 (camera.target) da un glm :: mat4 (camera.rotationMatrix). Cerco di moltiplicare questo mi dà un errore: errore: nessuna corrispondenza per 'operator *' in 'originalTarget * ((Camera *) questo) -> Camera :: rotationMatrix'. Suppongo di non poter moltiplicare un vec3 * mat4. GLM ha qualche funzione per trasformare questo? Altro modo di fare la trasformazione?Come posso trasformare glm :: vec3 da glm :: mat4
Il codice:
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);
}
Indovina che intendevi "con il 4 ° elemento uguale a 1.0", no? Traduci transfroms non funziona con 0. –
Poiché è il vettore in su per la fotocamera, non ha bisogno di essere tradotto, quindi uno zero è più appropriato in questo caso – Slicedpan
Siamo spiacenti. Non ho letto il codice completamente –