lunes, 5 de agosto de 2013

8 .-. Modelos 3D. Mallas. Animación.

Lo que hemos visto hasta ahora es como cargar una malla estática. Eso nos serviría, por ejemplo, para hacer un elemento fijo del juego. Pero, por lo general, las mallas contienen animaciones y movimientos y, de eso, vamos a tratar en este post.

 
ESQUELETOS

Para animar una malla no se mueven los vértices de la malla por separado y se recalcula, eso sería demasiado pesado y el rendimiento caería estrepitosamente. Para ello los programas de diseño 3D implementan una solución que es la creación de esqueletos.

En realidad, el esqueleto es un conjunto de objetos llamados "huesos" que un animador puede utilizar para cambiar la forma de su modelo. Algo como esto:



Por supuesto, estos no es lo que realmente veremos en el juego. Sobre el conjunto del esqueleto tendríamos una piel o skin que lo recubriría totalmente.

Lo importante aquí es que si el artista quiere cambiar el carácter de la pose, o de un movimiento, todo lo que tiene que hacer es mover los huesos y eso hará que todos los vértices que lo compongan se desplacen junto con él. Esto hace las cosas muy fáciles para la animación, porque no se tiene que volver a crear el modelo sólo para conseguir una animación.

Otro punto importante a plantear es cómo se mueven juntos. Si mueves el brazo, el antebrazo se mueve con él. Lo mismo sucede cuando se mueve el hueso del hombro de su personaje, todos los huesos debajo de él (parte inferior del brazo, la mano, los dedos) se mueven junto con él, al igual que un esqueleto.


ARBOL DE JERARQUIAS

El concepto anterior de un esqueleto es sólo una analogía de lo que está ocurriendo debajo de ls skin o piel de un personaje animado. En DirectX, no estamos realmente hablando de huesos. Eso sería demasiado complejo. DirectX trata de articulaciones, que son una mejor representación de lo que está sucediendo en el código.

Pero incluso esta es sólo una analogía. Lo que realmente existe es una jerarquía de matrices, cada matriz que representa una articulación.




Una matriz  puede contener rotación y traslación. La matriz de cada articulación controla la rotación actual de la articulación, y la mantiene posición de la articulación en relación con el resto de articulaciones que componen el árbol.

Los programas 3D generan este tipo de matrices de forma automática, para el programador es transparente y, lo único a tener en cuenta, es qué matrices debe aplicar en cada movimiento.

Por ejemplo, y siguiendo el esquema, para encontrar la posición del brazo izquierdo de tu personaje, tendrías que multiplicar la matriz torso  por la matriz del antebrazo izquierdo, se obtiene la posición final de ese brazo.

Mantener este concepto en mente, porque es un concepto muy importante en la animación de las mallas. La animación de matrices calcula los movimientos relativos de cada elemento en relación al que lo antecede en el árbol.

No hay comentarios:

Publicar un comentario