Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Agua, Fuego, Explosiones

Iniciado por Degiik, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

BeRSeRKeR

                                Si me fijé bien, en Doom3, algunas partículas hacen un roll (rotan en el eje Z), además de estar encarando a la cámara...y bueno, hacer esto es simplemente añadir a la concatenación de matrices una matriz de rotación en el eje Z....no creo que sea problema...

Saludos.                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Mars Attacks

                                Bueno, te refieres a que rotan en los otros ejes que no son paralelos al de la cámara. Puessss... a ver... sacas el plano perpendicular al de la cámara y lo rotas sobre el eje de la cámara. De hecho, si es un billboard ya tendrás el plano perpendicular, y sólo tendrás que rotarlo sobre el eje de la cámara (en directx no sé, en opengl transladarías y rotarías el conjunto plano-eje hasta que coincidiera con el origen, rotarías y volverías a transladar a la posición inicial).                                

Degiik

                                Berserker, tienes razon, el doom 3 lo utiliza, de esa el humillo de las armas es mas espectacular, mas real. ¿ Puedes ser un poco mas explicito de como conseguir ese efecto ?                                
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )

Degiik

                                Berserker help !!!! pliz
te he visto activo en el foro... ...me puedes explicar como conseguir ese giro de las particulas ?

gracias. :)                                
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )

BeRSeRKeR

                                Te remito al code que te puso CordayUK

Citar
matrix matTranspose, matBBRot, matView;  

matView = pCamera->GetViewMatrix ();  

MatrixTranspose (&matView, &matTranspose); //in,out  
MatrixIdentity (&matBBRot); //in  

matBBRot._11 = matTranspose._11;  
matBBRot._12 = matTranspose._12;  
matBBRot._13 = matTranspose._13;  
matBBRot._21 = matTranspose._21;  
matBBRot._22 = matTranspose._22;  
matBBRot._23 = matTranspose._23;  
matBBRot._31 = matTranspose._31;  
matBBRot._32 = matTranspose._32;  
matBBRot._33 = matTranspose._33;  

m_matWld = m_matRot * matBBRot * m_matLoc;

Si te fijas, en la concatenación final hay un m_matRot que es la rotación local de la partícula (por ejemplo la rotación en Z que quieres hacer). Es posible que en OpenGL el orden de la concatenación cambie pero no estoy seguro...

De todas formas, leete la explicación que te dió CordayUK sobre el code de arriba. Creo que está en la página 3 de este thread...

Saludos y feliz año                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.