Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Hari en 01 de Enero de 1970, 01:00:00 AM

Título: Algo de álgebra
Publicado por: Hari en 01 de Enero de 1970, 01:00:00 AM
                                Hola a todos,

Os mando a todos un saludo, ya que hace bastante tiempo que no entro por el chat por cuestiones laborales.

Así que vamos a probar el foro :sonriendo:

Necesito convertir una matriz de transformación en "right-handed" a "left-handed", ¿alguien lo ha hecho? ¿hay que descomponerla primero en sus respectivas rotación, traslación y escala?

Gracias y un saludo.                                
Título: Algo de álgebra
Publicado por: _Grey en 01 de Enero de 1970, 01:00:00 AM
                                Usar "right-handed" o "left-handed", es algo anterior a crear la matriz, pero te bastara con invertir el valor de Z, de positivo a negativo y a la inversa.

Chao.                                
Título: Algo de álgebra
Publicado por: Hari en 01 de Enero de 1970, 01:00:00 AM
                                En este caso no es antes, importando de un formato que almacena la geometría en "right-handed", puedo convertir los vertices, las coord. de textura, etc, pero la matriz de transformación está en "right-handed", por eso debo transformarla a posteriori, por eso la pregunta.

Gracias y un saludo.                                
Título: Algo de álgebra
Publicado por: BeRSeRKeR en 01 de Enero de 1970, 01:00:00 AM
                                Creo que a las únicas matrices que les afecta el sistema de coordenadas utilizado es a la de vista y a la de proyección...¿me equivoco?

Un saludo
                               
Título: Algo de álgebra
Publicado por: Drácula en 01 de Enero de 1970, 01:00:00 AM
                                Creo que lo que quiere decir es que él tiene un sistema de coordenadas, pero carga objetos con diferentes sistemas de coordenadas y quiero convertirlos al que él utiliza.

Algo así como cuando cargas un objeto de 3DS en DirectX, que debes invertir la Z. Pero ya le han respondido a eso anteriormente.

¿me equivoco?                                
Título: Algo de álgebra
Publicado por: _Grey en 01 de Enero de 1970, 01:00:00 AM
                                Exactamente, "importando de un formato que almacena la geometría en "right-handed"", si el caso es este deberias invertir la coordenada Z, pero ten en cuenta que algunos modeladores usan "right-handed" o "left-handed", y ademas combian la de sentido las coordenadas, yo me e encontrado con algun modelador(no recuerdo ahora cual...) que usaba la Y como si fuese la Z, en cualquier caso cuando veas la maya veras los cambios que le tienes que aplicar, y como te e contado, un cambio de "mano" es invirtiendo el valor de Z.                                
Título: Algo de álgebra
Publicado por: Hari en 01 de Enero de 1970, 01:00:00 AM
                                Exactamente, el caso en concreto es el que comenta Dracula (3ds -> dx), igual es que no estoy interpretando bien la información que da en LOCAL_MATRIX, pero según he visto por ahí almacena la matriz de transformación del objeto. Con respecto a lo que me comentas _Grey, las dos formas de convertir de un sistema de coordenadas de right a left son las que dices, o cambias la y por la z, con lo cual rotas el objeto, o inviertes la z, correcto, yo he implementado las dos y funcionan, el problema que comentaba es el siguiente, igual no me he explicado con claridad. Supongamos que tenemos una matriz de transformación en "left", centremonos en la traslación, sabemos que la x,y,z están respectivamente en la [4,1] [4,2] [4,3], obviamente si al transformar de "right" los vertices invertimos z o alternamos la y por la z, la matriz de transformación en ese sistema de coordenadas no nos sirve después de hacer el cambio; y este caso es el mas sencillo, ya que si hablamos de rotaciones por eje ya la matriz se va complicando. Entonces, mi pregunta es sencilla, y centremonos en la solución de invertir la z, ¿habrá que realizar alguna conversión a la matriz original, no? De hecho, es que hay algunos objetos que no me salen correctamente situados, y creo casi con toda seguridad, por lógica, que la matriz de transformación no puede seguir siendo válida si estamos invirtiendo o sustituyendo el orden de los vertices.

Gracias y un saludo.                                
Título: Algo de álgebra
Publicado por: Ryuchan en 01 de Enero de 1970, 01:00:00 AM
                                Bueno, pues yo tuve ese problema y a base de ir probando saque los pasos a seguir.
Quiza se puede hacer de otra manera, pero esta funciona:

- Rotar -90º en X
- Rotar 90º em Y
- Escalar por (-1,1,1) Invertir la componente X
- Invertir las normales del modelo

Pruebalo a ver si te furrula.