2012-12-03 19 views
9

ile nasıl dönüştürebilirim? Glm :: vec3 (camera.target) öğesini bir glm :: mat4 (camera.rotationMatrix) ile dönüştürmek istiyorum. Çoğunu deneyin, bana bir hata verin: hata: 'originalTarget *' da ('kamera *') 'operatör *' için eşleşme yok -> Kamera :: rotationMatrix '. Sanırım bir vec3 * mat4 çarpamıyorum. GLM bir kısmı bunu dönüştürmek için çalışıyor mu? Dönüşümü yapmanın başka bir yolu var mı?Bir glm :: vec3'ü bir glm :: mat4

kodu:

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

cevap

13

Önce dönüştürmek istediğiniz senin 4 elemanı bir 0 ile glm::vec4 içine glm::vec3 ve sonra onları bir arada çarpın.

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

Sanırım "4. öğe eşittir 1.0 ile", değil mi? Transfromları 0 ile çalışmayacaksınız. –

+2

Fotoğraf makinesinin yukarı vektörü olduğu için tercüme edilmesine gerek olmadığından, bu durumda sıfırın daha uygun olması – Slicedpan

+0

Üzgünüz. Tamamen –