Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Quaterniones

Iniciado por CoLSoN2, 07 de Enero de 2003, 05:37:27 PM

« anterior - próximo »

CordayUK

                                pues eso, no tienen nada de complejo :)

lo unico operar con quaternions no es facil, hay que saber de matematicas por supuesto, sumar multiplicar quaternions entre si etc... asi como transforamr de quaternion a matrix y viceversa .... pero de eso no te tienes que preocuparte ya que hay muchas librerias por ahi, lo unico que hay que hacer es usarlos :)                                

BeRSeRKeR

                                Jaja x-alien pues ya puedes empezar a utilizar quaternions porque Carmack los utiliza como mínimo para interpolar entre frames de animación en los MD3 :D...y por si me preguntas que cómo lo se...creo recordar que había código en las fuentes de las herramientas de quake3...¿o era en el código de las librerías del juego (para hacer mods)?  :?:

De cualquier forma, en todos los visores que he visto de MD3 (bueno en muchas cosas más como por ejemplo que una cámara siga una spline...pues para interpolar entre las diferentes keys de animación), utilizan los quaternions para interpolar entre rotaciones...

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

CordayUK

                                sipe, casi cualquier caracter animado que use bones se interpola por quaternions. md3 tambien.
y pienso que todas las camaras deberian usarlos tambien XDD                                

Mars Attacks

                                A ver, dado lo que he leído de la tipeta esta, me da la sensación de que se usan los quaterniones porque "están de moda" más que porque sean realmente necesarios. ¿No sería mucho más recomendable currarse una librería que resolviera esos problemas de la forma en la que propone la tipeta?                                

Grugnorr

                                Uhmm, más bien es al revés. EL resúmen es que los quaternions son una herramienta más eficiente para algunas cosas que las matrices eulerianas. Son la herramienta óptima, las soluciones con matrices son como parches que son menos apropiados para el problema, aunque sean más simples de entender si no se sabe nada de quaternions.

A mí me sonaba muy mucho más raro eso de regenerar las bases no sé qué Eulerianas para evitar el GimbalLock que ver que aprender a usar los quaternions. Evidentemente el 99% no tenemos ni puta idea de la teoría matemática de la que surgen, algo así como la extensión de los números complejos a las 4 dimensiones o algo así que acojona  :jaja:

Respecto a lo de la librería... depende. Si usas DX, las librerías d3dx es seguro lo mejor que puedas tener, están implementadas usando los SIMD y demás ASM específicos para éstas cosas, dependiendo del procesador que tengas se usa una cosa u otra... ya te lo dan hecho MS,Intel y AMD...                                
hat the hells!

Mars Attacks

                                Pues a eso me refiero, hasta qué punto se usan los quaternion porque ya está desarrollada la librería. La señora matemática sostiene y prueba que no son más eficientes que el uso de vectores y que una correcta implementación matemática evita los problemas del Gimbal Lock, permite una interpolación perfecta (¿más suave que perfecto existe?) de rotaciones y blablabla. La demostración que ofrece en el link me parece estupenda, además relaciona el coste operacional de quaterniones versus vectores y acaba resultando que es más costoso usar quaterniones.
Por eso repregunto, ¿no sería más sensato construir una librería robusta con las aplicaciones matemáticas de vector bien especificadas para evitar los efectos secundarios y obtener las mejoras con respecto a los quaterniones?
De todas formas, a mí me da lo mismo, que conste. Yo no soy programador, pero también me da la sensación de que usar quaterniones es dar un rodeo a toda la habitación para salir por la puerta.

Por cierto, ¿alguien podría explicarme con sus palabras en qué consiste exactamente el Gimbal Lock?                                

CoLSoN2

                                digo yo, si antes no se usaban quaterniones, y ahora sí (una inmensa mayoría (de profesionales)), no creo que sea por una moda, sino porque realmente mejoran la situación.

Por cierto, estoy intentando usar quaterniones para rotar objetos, exactamente un cubo (para hacer practicas y tal), usando D3DX, y hace cosas locas (se sale de la pantalla (sin moverlo de 0,0,0) a los 0.5 secs XD

Lo que hago es:

- la función cCube::Rotate(x, y, z) comprueba si cada numero (x,y o z: son rotaciones en radianes) no es 0, en cuyo caso, para x por ejemplo creo una variable VEC3 axis(1,0,0) y tras convertir el quaternion actual a matriz, transformo esos axis con D3DXVec3TransformCoord. Despues, inicializo un quaternion con valores D3DXQUATERNION(x,axis.x,axis.y,axis.z) y multiplico este quat por el total del objeto Esto lo hago para cada eje (x,y,z, los parametros).
- En render, paso el quaternion a matriz, lo multiplico por una de translación 0,0,0 y lo uso como world matrix

-> Basado en un codigo de sonoro xD

si alguien sabe qué hago mal.. pos eso ;P                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Mars Attacks

                                Ya veo que es sencillísimo ¬¬
Supongo que si antes no se usaban era porque la gente se las apañaba con vectores hasta que llegó alguien que no se aclaraba, le buscó los tres gatos al pie y sacó la librería de quaterniones, y luego todos los que no se aclaraban usaron quaterniones hasta que se convirtió en la moda (me refiero a la moda estadística, a lo más usado, no a una moda pasajera de ropa o cosas así).
Por cierto... ¿para qué multiplicas por una matriz de translación 0,0,0?                                

CoLSoN2

                                he probao con ella y sin ella y hace igual, lo hacia pa ver si con eso cambiaba algo :P

Lo de no aclararse con vectores y matrices... yo veo más lioso de entender lo de quaterniones, otra cosa es usarlos, y igual de fácil es usar unos como otros.                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Grugnorr

                                Lo de la libreria de quaterniones ya me lo explicarás otro día ;)

PD: También dejas de lado que un quaternion ocupa menos(creo que la mitad) y eso para definir animaciones skeleticas es algo a tener en cuenta....                                
hat the hells!

Mars Attacks

                                Hmmm... ¿no habéis dicho que habían librerías que implementaban funciones de quaterniones en el d3d?
Lo del tamaño que ocupen... a ver para cuándo un CDLS (Código De La Semana, HLCYDTA -Hasta Los Cojones Ya De Tanto Anglicanismo-) sobre templates para funciones matriciales de rotación e interpolación ;)
Quizás sea influencia de álgebra, informática gráfica y robótica, pero creo que existen formas mucho más simples y efectivas de hacer una rotación que meterse en 4D (no, si va a servir para algo la carrera y tó :P).
Lo de regenerar las bases Eulerianas, no sé si te refieres a que a cada cierto tiempo es conveniente restaurar la matriz identidad de transformaciones, que puede corromperse si no me equivoco por los errores de precisión de la máquina tras las sucesivas multiplicaciones de matrices y tal y cual Pascual.
Vamos, que creo que todo está en el grado de desarrollo que le queramos dar al asunto: si trabajamos con quaterniones, difícilmente trabajaremos suficiente el tema de matrices y vectores como para llegar al punto que podamos simplificarlos y encapsularlos para poder usarlos robustamente a un coste mínimo.
Essss... como el tema del petróleo. Si usáramos más la energía solar ya habríamos investigado y avanzado lo suficiente como para subsistir únicamente de ella, pero como la "costumbre" y las presiones empresariales hacen que el mundo siga moviéndose por el petróleo, pues así nos va... (me he ido del tema, sorry).                                

Grugnorr

                                Esas mismas librerias, las d3dx, tienen matrices también...

Weno, estamos discutiendo de temas que no tenemos ni puñetera idea, así que creo que mejor lo dejamos ahí. Yo sostengo que hay casos en los que los Quaternions son más adecuados, y ya está. Las matrices se siguen necesitando, tranquilos....


PD: Lo de regenerar bases es para evitar el GimbalLock...                                
hat the hells!

Grugnorr

                               
Citar
Vamos, que creo que todo está en el grado de desarrollo que le queramos dar al asunto: si trabajamos con quaterniones, difícilmente trabajaremos suficiente el tema de matrices y vectores como para llegar al punto que podamos simplificarlos y encapsularlos para poder usarlos robustamente a un coste mínimo.  


Ein?, de qué me estás hablando?  :o .

Si hablas de hallar nuevos algoritmos más eficientes usando matrices... chungo parece, deben llevar desde los años 50 lo menos buscando mejoras, tienes multiplicaciones encadenadas de matrices por Strassen y cosas de esas... pero poco más. Las mejoras que han ido encontrando empiezan por Quat.....  :jaja:

PD:La teoría matemática no es como una fábrica de microprocesadores... Como mucho te pueden implementar alguna cosa por HW de forma más rápida, pero el Órden de complejidad de un algoritmo investigado no se mejora fácilmente...                                
hat the hells!

Grugnorr

                                Por cierto, en la analogía esa loca con el petróleo y las energías renovables, yo lo diría al revés: Lo conocido pero con desventajas es el petróleo, y lo menos conocido, que conlleva un pequeño gasto de implantación pero aporta mejoras, son los Quaternions...



PD: Menuda discusión más chorra filosófico-cutre estamos haciendo, Mars  :jaja: . Me piro de juerga, chaops....                                
hat the hells!

Mars Attacks

                               
Citar
Citar
Vamos, que creo que todo está en el grado de desarrollo que le queramos dar al asunto: si trabajamos con quaterniones, difícilmente trabajaremos suficiente el tema de matrices y vectores como para llegar al punto que podamos simplificarlos y encapsularlos para poder usarlos robustamente a un coste mínimo.  
Ein?, de qué me estás hablando?  :o .

De la implementación (adecuada para evitar Gimbals Locks, y que alguien me cuente de qué va eso) y la divulgación, no de la investigación.
En fin, realmente es un poco una conversación de besugos y mejor pasamos de ella, pero que alguien me explique en qué consiste el Gimbal Lock o no dormiré bien esta noche  :(                                






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.