Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿Qué es el Gimbal Lock?

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                Qué es esto?                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Astat

                                El Gimbal Lock causa que el eje X e Z sean del mismo orden despues de rotar el eje Y 90/-90 grados... a ver si nos leeemos mas los tutoriales...

...

Aclaracion: Este post es totalmente de coña... ha sido lo primero que me ha salido en el GooGle... :malvado: :jaja:

                               

Emotion

                                El Gimbal Lock es un efecto bastante molesto que se produce cuando rotas cualquier vertice o entidad en el eje Y 90/-90 grados. La consecuencia de esto es que el eje X y el Z acaban apuntando en la misma direccion, con lo que pierdes el control sobre ellos.

Y esto ocurre con cualquier paquete de animacion (3D Studio MAX, Maya, Softimage XSI, etc) y con cualquier motor 3D que utilice para las rotaciones los llamados angulos de EULER.

Por eso una de las formas que se proponen para acabar con el problema del Gimbal Lock son los quaternions.

Para Astat:

jajaja la verdad es que yo tambien he echado un poco de mano al google, si es que al final va a resultar mejor que el Larousse :riendo:

Saludos

_________________
Julio Meca
ALPHA SOFTWARE

[ Este Mensaje fue editado por: Emotion el 2002-04-04 17:37 ]                                
G3: Get the Power!

Drácula

                                Gracias. Lo del google no he querido hacerlo porque me parecía que con lo que aquí se hablaba sobre este tema, la gente podría explicármelo mejor.

Un saludo                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

ethernet

                                mm q de malo tiene q quede el X en la misma direcion del Z ?.
Al hilo de esto he hablado con gente q se hacia TODAS las rotaciones con quaternions. No sera eso menos optimo q hacer la riotaciones normales de toda la vida con opengl o DX q estran mucho mas optmizadas. (no se si D3D tendra quaternions implementados ya).
Saludos                                

mallrat

                                Buenas, a ver si consigo aclarar un poco el tema en vez de liarlo mas, con un ejemplo:

En el Quake 3, como en casi todos los FPS, hay dos giros:

- arriba y abajo (giro en el eje X)
- izda y dcha (giro en el eje Y)
supongamos que tuvieramos también el giro en el eje que se "hunde" en el monitor hacia el fondo, el eje Z.

(para que no haya confusiones debo aclarar que convencionalmente esos ejes son el X, el Z y el Y, respectivamente, pero es cuestión de comodidad).

Ahora podemos hacer giros en los tres ejes, matar unos cuantos campers, etc. pero que pasa si se mira justo al techo o al suelo? el giro de "izda-dcha" (eje Y) tendrá el mismo efecto que el giro en el eje Z, es decir, ahora parece que girar en Y y en Z produce el mismo efecto, el de "voltear" la imagen... en cierto modo hemos perdido un eje.


Lo que ocurre es lo siguiente: en este tipo de juegos, por conveniencia, la orientación se guarda como el ángulo de giro en cada uno de los tres ejes. A la hora de calcular la matriz de rotación, estos tres giros se concatenan siguiendo el orden que nos interese. Por ejemplo:

MatrizRot = RotZ * RotX *RotY

En el ejemplo del Quake 3, para que el eje Z y el Y coincidan, tenemos que girar 90 o -90 grados en X.


Para visualizarlo podemos coger un bolígrafo apuntando hacia el horizonte, de tal forma que el eje Z recorre todo el largo del bolígrafo. Podemos girarlo en Z, y seguira apuntando hacia el horizonte. Si lo giramos en X apuntará al suelo o al techo. Si lo giramos en Y apuntará a la izda o a la dcha.

Partiendo de la posición inicial, vamos girando el boligrafo en Z, y sin dejar de hacerlo, giramos 90 grados en X. Ahora el boligrafo gira igual que antes pero apuntando todo el rato al techo, no olvidemos que primero estamos aplicando el giro en Z y luego en X (RotZ*RotX*RotY).
Sin embargo el giro en Y lo estamos calculando despues del giro en X, es decir que en la posicion actual del boligrafo, si giramos en el eje Y, podemos ver que es el mismo giro que provoca el giro en Z. La razón es que el giro de 90 grados en X hace que el giro en Z que estamos aplicando antes de girar en X, coincida con el giro en Y que aplicaríamos despues de girar en X. El efecto de todo esto es que en vez de tener posibilidad de maniobra en los tres ejes, cuando se solapan dos de ellos es como si perdieramos un eje.

vaya hora para postear cosas...

:-?


[ Este Mensaje fue editado por: mallrat el 2002-04-05 06:05 ]                                

mallrat

                                joer casi una hora escribiendo la parrafada esa y nadie la ha leido? amos....
:ojo:                                

Drácula

                                Yo la he leido!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Gunder

                                Hombre, la esplicacion del pendulo seria mas secilla :ojo:.

Pero esta muy bien.

[ Este Mensaje fue editado por: Gunder el 2002-04-10 09:36 ]                                
riticar, critica hasta el mas tonto.

Ithaqua

                                Resumiendo, que un giro de 90º/-90º causa la pérdida de un grado de libertad usando ángulos Euler.

Ethernet, lo que se quiere decir con 'calcular las rotaciones usando quaternions' es que el motor procesa todas las transformaciones (incluidas las rotaciones como tu dices) para finalmente generar una única matriz de transformación por cada objeto/camara/luz de la escena.
Esa matriz de transformación indica la posición/orientación de la entidad en el mundo y es precisamente la que le indicas a OpenGL/Direct3D para que con ella procese todo el conjunto de datos locales.
El coste de calcular la matriz es ínfimo comparado con el coste de transformar con ella todos los vértices de una malla por ejemplo.
El primer proceso lo realiza tu motor (CPU), el segundo si eres espabilado se lo dejas a la tarjeta :ojo:


           Ithaqua.

http://ithaqua.stravaganza.org                                
thaqua^Stravaganza
http://ithaqua.stravaganza.org

oakshield

                                Habia oido hablar del Glimbal Lock pero no sabia exactamente que problema producia. Gracias por la aclaracion :sonriendo:                                






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.