sábado, 13 de octubre de 2007

Las Armatures y sus características

En ésta imagen, los vértices seleccionados pertenecerán al hueso que rodean

En Blender, los esqueletos son conocidos como Armatures. Armatures, en realidad, no son como esqueletos de la vida real. La mejor manera de imaginar un hueso en animacón por computadora, es imaginarlo como algo que posee los vertices de una malla como hijos.

El objeto Armature en Blender, es un contenedor de sub-objetos, llamados bones (huesos). Vamos a recorrer todas las caracteristicas de los objetos armature, y puede probarlos a medida que avanzamos. Un armature se agrega de la misma forma que se agrega cualquier otro objeto en Blender, a través del menú que se despliega al apretar la barra espaciadora. Cada vez que se agrega un objeto a una escena, se debe eliminar su rotación con Alt R desde el modo Objeto.

Armatures y su modo de trabajar

Armatures poseen un modo objeto y un modo edición, como los objetos malla (mesh), y se puede cambiar de uno a otro con la tecla TAB. El estado que se ve la armature cuando se está en modo edición, es conocido como “Rest Position” ó “Posición de reposo”. Las armatures están hechas para ser animadas, asi que para cumplir éste propósito, poseen otro modo: “Pose mode” ó Modo Posar. Se puede cambiar a este modo presionando Ctrl Tab. El modo posar es diferente del de edición en el sentido que se pueden cambiar la selección a otros objetos fuera del armature, sin tener que salir del modo. Si se cambia la selección a algún otro objeto, cuando se vuelva a seleccionar el armature, todavía estará en modo posar. La selección de huesos es preservada cuando se cambia entre modos. Y cuando un Armature es agregado, se comienza en modo Edición, como cualquier otro objeto en Blender.

Modo Edición de armatures

Los Huesos son manipulados como un par de puntos mientras se está en modo edición.

Modo edición es desde donde se agrega, se eliminan y se sitúan huesos. En modo edición, los huesos son situados en puntos móviles. Cada hueso tiene dos puntos, una raíz y una punta. Un objeto armature tiene un hueso por defecto, pero más pueden ser agregados desde el menú de la barra espaciadora, o se puede seleccionar la punta de un hueso y extrudar uno nuevo con la tecla E, o haciendo click izquierdo Image:Template-LMB.pngmanteniendo la tecla Ctrl en la ventana 3D. Se pueden ver la cantidad de huesos y los puntos de los mismos en el header superior. Extrudando se crea un hueso que es hijo del cual se hizo el extrudado, y les da a los dos la relación especial de estar conectados. Ésto puede ser cambiado con el botón Con en el panel de botones Armature Bones mientras se tiene el hueso en cuestión seleccionado.

Modo Objeto de Armatures

Cosas malas pasan cuando un armature o su malla son transofrmados de forma relativa a cada uno.

En modo objeto, un armature se comportará como cualquier otro objeto 3D (aún cuando contenga multiples huesos, los cuales son objetos en sí mismos). Los armatures pueden ser movidos, re-escalados y rotados. Es una buena práctica no realizar transformaciones a los armatures. Para que éstas deformen una malla correctamente, la ubicación, orientación y tamaño del mesh -- en relación al armature -- Debe ser constante. La única forma de asegurar esto, es aplicandole constraints de ubicacion, escalado y rotación al mesh, tomando como objeto el armature. Para hacer que el mesh se deforme con el armature, debemos hacerlo hijo del armature, o usar un modificador. Éste ultimo es el método preferido ya que habilita muchas características útiles.

Modo posar en Armatures (Pose Mode)

El modo posar, es el modo en donde la animación del armature puede ser hecha. Los huesos son técnicamente sub-objetos del armature. El número total de huesos y el número de huesos seleccionados es mostrado en el encabezado superior. Aparte de animar, también se pueden crear y administrar constraints para los huesos en éste modo. En modo edición, se define la posición de reposo del armature. En modo posar, cuando se eliminan las transformaciones de los huesos (Alt R, Alt S, Alt G), la posición de reposo es lo que se debería tener, asumiendo que no se tiene ninguna constraint evitando que el hueso regrese a su posición de reposo. También se pueden hacer objetos externos al armature, hijos de un hueso, seleccionando el objeto con click izquierdo Image:Template-LMB.png, y luego emparentándolo con el hueso con Ctrl P.

Construyendo un Armature/Rig: Técnicas de construcción

Conociendo como agregar y mover huesos no es todo lo que necesita saber para armar un rig. Mucho trabajo es hecho con armatures utilizando la herramienta snapping encontrada en Shift S, y operaciones con el cursor como punto de pivot. Debe entender la diferencia entre usar como punto de pivot Bounding Box Center (o centro de la caja) y usar el Cursor 3D como punto de pivot. A través de los tutoriales de rig en ésta sección se va a requerir hacer mucho snapping y operaciones de pivot con el cursor.

Ubicando un nuevo hueso

Muy seguido, un nuevo hueso necesita ser agregado en la misma ubicación que una raíz (root) o una punta. Para hacer esto, ubique el cursor en la misma ubicación del punto existente (Snapping) y agregue un nuevo hueso con el menú de la barra espaciadora.

También se puede agregar un nuevo hueso en exactamente la mitad de otros dos. Para hacer esto, seleccione las raíces de los dos huesos existentes y haga snap del cursor a ellos. Se ubicará a mitad de distancia de ambos, y podrá agregar un nuevo hueso.

Cambiando el tamaño de un hueso



Existen dos formas de cambiar el tamaño de un hueso. La forma facil es seleccionar la raíz y la punta, llevar el cursor a la selección, y luego llevar la punta al cursor. Ésto provoca que el hueso sea de la mitad de la longitud original. En los tutoriales, cuando se lea “cambiar el tamaño al 50%” , así es como se hace. Si ve “cambiar el tamaño a un 25%”, entonces se hace esto dos veces.

La otra manera es llevar el cursor al punto raíz, configurar el cursor como punto de pivot, y luego escalar la punta hacia el cursor (o alejándose del mismo). Éste método permite cambiar el tamaño a cualquier porcentaje del original.

Apuntando un hueso a otro

Mucho del diseño del rig requiere que un hueso siga (Apunte a) otro hueso. Ësto significa que el hueso que hace el seguimiento tiene que estar apuntando exactamente al hueso objetivo. Para hacer esto, se lleva el cursor a los puntos de raíz de ambos huesos, y luego se lleva la punta del hueso que “persigue” hacia el cursor.

Armatures y Botones

Muchas características para los armatures y huesos son accesibles a través de la ventana de botones. Aquí abajo pueden observarse dos paneles de los botones de edición (F9). El panel “Armature Bones” cambia basado en un número de factores que incluyen:

  • El modo actual del armature

  • El hueso o los huesos seleccionado(s)

  • El estado del hueso seleccionado en cuanto a parte de una cadena de IK o no.

Ésto afecta a todos los huesos del armature

Éstos botones afectan a los huesos seleccionados



El panel Armatures


Enlarge

Opciones de edición


  • X-Axis Mirror: Activa la edición espejada para todos los huesos espejo. Use Shift E para hacer extrudados espejados, cuando el “X-Axis Mirror” se encuentra activado

  • X-Ray: Provoca que el armature se dibuje en la escena al último, haciéndolo visible por encima de todos los otros objetos, excepto por otros objetos que tambien tengan activada esta opción (ver Draw Panel).

  • Auto IK: Ésta es una característica nueva, y está bastante fuera de desarrollo en éste punto. Permite posar un armature clickeando y arrastrando desde cualquier hueso. Por lo general Automatic IK no funciona con rigs, y debería ser usado principalmente como una herramienta de posicionado para armatures FK.

  • Ghost: Habilita el dibujado fantasma, el cual es visible si los huesos son animados. Él numero representa las copias fantasma que Blender dibujará

  • Step: El número aquí es el número de imágenes entre las copias fantasma.







Opciones de Display


  • Bone Layers:

    Ésto funciona de la misma manera que los botones de layers del mundo (o capas). Cada botón representa una capa, y cuando se encuentra activado, esa capa es visible. las capas de los huesos es una configuración local de cada armature.

  • Display Modes:

    Éstoso botones configuran el modo de vista de los Armatures

  • Draw Axes: Activa el dibujado de ejes para todos los huesos del armature.

  • Draw Names: Habilita el dibujado e nombres de huesos en la ventana 3D.

Opciones de deformado:


  • Vertex Groups: Permite a los huesos deformar una malla por medio de grupos de vértices.

  • Envelopes: Permite a los huesos deformar la malla por medio de “envolturas”.

  • Rest Position: Fuerza al armature a la posición de reposo cuando se encuentra en modo pose.

  • Delay Deform: Desabilita la deformación de objetos mala hijos.



El panel “Armature Bones”



Huesos seleccionados

  • OB: El nombre del hueso se muestra aqui. También se puede utilizar el panel “Transform Properties” en la vista 3D (N).

  • Dist: La distancia del “envoltorio” se muestra aqui. Está expresado en unidades desde la superficie del hueso (en modo Envelope) hasta el exterior del campo envoltorio.

  • Weight: El peso que se utiliza para calcular la influencia a los vértices cuando se usan envoltorios.


Segm: El número de segmentos de los b-bone

  • In: El valor de “blend-in”. Afecta la forma de la curva bezier del b-bone.

  • Out: El valor “blend-out”. Afecta la forma de la curva bezier del b-bone.

  • Hinge: Ésta opción permite a los huesos desafiar las reglas de la relación padre/hijo. Cuando se activa, ésta característica causa que los huesos mantengan la ubicación apropiada de acuerdo al systema coordenado de los padres, pero no tamaño y rotación.

  • Deform: Habilita a los huesos para afectar los vértices del mesh. También tiene en cuenta huesos mientras se se crean grupos de vértices automáticos de forma automática.

  • Mult: Provoca que el peso de un grupo de vértices sea multiplicado por el peso del “envoltorio”. Cuando se encuentra activado, un peso de 0 asignado a algunos vértices provoca que no sean afectados por el “envoltorio”

  • OB: Especifica otro objeto para ser usar para la geometría del hueso.


Bone Layers:

Indica a que capa pertenece éste hueso.


Éstos botones solo aparecen para huesos que forman parte de una cadena IK:

  • Lock Axis Rot: Permite prevenir que el hueso rote en un determinado eje.

  • Stiff: Valores para la resistencia a la rotación.

  • Limit Axis: Da acceso a AdL (Ángulos de libertad, o DoF por su nombre en inglés “Degrees of Freedom”). Permite especificar valores máximos y mínimos de rotación.


Stretch: Permite a los huesos ser escalados más grandes o más pequeños en respuesta a un movimiento del efector IK.


Los Modos de Dibujado de los Armatures




Los armatures poseen 4 diferentes modos de representar los huesos, llamados Display Modes. Cada uno es solo un método distinto de representar el armature. No importa que modo se use, ningún cambio es hecho a los huesos o el armature.

Pero, algunos modos de vista dan acceso a propiedades y visualizaciones especiales de los huesos, que otros no dan.

Octahedron: Éste es el modo clásico de mostrar los huesos. Antes de que los otros tipos existieran, así es como lucían los huesos (y es un modo muy profesional de dibujarlos).

B-Bones: Muestra la figura de los huesos cuando están segmentados (En modo Pose).

Stick: Para animadores, éste modo es perfecto, porque los objetos hueso no ocupan mucho espacio en la pantalla, lo cual es usado para dibujar el personaje. Después de todo, es el personaje el que se anima.

Envelopes: Éste modo muestra las áreas de influencia de los huesos seleccionados.

Moviendo la Malla

Los armatures son inútiles si no mueven las partes de nuestra malla que forman nuestros personajes. Hay dos formas de hacer esto en Blender:

  • Vertex Groups: Los vértices son asignados a grupos con nombres. Todos los vértices en un grupo son afectados por el hueso con el mismo nombre del grupo (asumiendo que el armature está afectando a la malla, ya sea por emparentamiento, o por modificador).

  • Bone Envelopes: Todos los vértices que se encuentran dentro de los limites de influencia de los huesos son afectados por el mismo(asumiendo que el armature está afectando a la malla, ya sea por emparentamiento, o por modificador).

Armatures y accesos rapidos

aquí hay algunas teclas de acceso rápido para trabajar con huesos en modo edición y pose. Algunas no son listadas, como Ctrl D, que duplica un hueso en modo edición. Se asume ya que Ctrl D se usa para duplicar otro tipo de objetos, y Blender por lo general usa la misma tecla para la misma función, así los objetos o modos sean distintos.

Modo Edición

  • Ctrl N: Recalcula los ángulos de rotación del hueso.

  • Ctrl P: Hace el hueso seleccionado hijo del hueso activo.

  • W: Abre un menu para renombrar los huesos, o para subdividirlo.

  • M: Abre un menu de opciones para espejar el hueso.

  • L: Selecciona todos los huesos conectados al hueso debajo del puntero del mouse.

  • Alt S: En b-bone, escala el grosor, en modo “envelope” cambia el tamaño del envoltorio

Modo Pose

  • Ctrl Alt C: Le da una constraint al hueso activo, teniendo como objetivo otro hueso seleccionado.

  • Ctrl I: Le da una Constraint IK solver al hueso activo, con objetivo en el otro hueso seleccionado.

  • Ctrl C: Abre un menu para copiar los atributos del hueso seleccionado, a todos los otros huesos seleccionados.

  • M: Abre un menu de opciones para espejar los huesos seleccionados.

  • L: Selecciona todos los huesos conectados al hueso que se encuentra debajo del puntero del mouse.

  • Alt S: En b-bone, escala el grosor, en modo “envelope” cambia el tamaño del envoltorio.


Traducido por Frapell de la documentacion oficial de Blender (http://wiki.blender.org/index.php/BSoD/Introduction_to_Rigging/The_Armature_Object)

Introducción al diseño de la manipulación de personajes (rigging)

En ésta sección, voy a mostrar cómo ha evolucionado la animación de personajes desde sus comienzos, hasta lo que es hoy. Esto le va a ayudar a entender los conceptos universales y técnicas de control de personajes que se usan hoy en la animacion digital en 3D. Luego vamos a profundizar en los detalles más específicos relacionados a la implementación de estas técnicas en Blender



Los comienzos

"Money for Nothing"

"Money for Nothing"

Los primeros personajes en 3D comenzaron a aparecer en peliculas entre 1980 y 1985. En 1984, la banda de rock “Dire Straits” sacó un video musical para su cancion “Money for Nothing”, en el que aparecian un par de personajes de pocos polígonos

Cómo Hacer Un Movimiento

Probablemente no existía un objeto esqueleto en las aplicaciones 3D por aquella época, asi que ¿cómo podía alguien animar un personaje si no tenía esqueleto?



La solución fue usar una serie de objetos múltiples para aproximar la forma del personaje, y situarlos en herencia.



Ésto creó una técnica de animación bastante sencilla, simplemente se animaba la rotación de cada uno de estos diferentes objetos. Puede probar esto por usted mismo creando una herencia de objetos y luego rotándolos uno por vez. Ésta tecnica se hizo conocida como Cinematica directa, ó FK (por su nombre en inglés “Forward Kinematics”)

Un Esqueleto Ha Nacido

FK es un bueno proceso para generar movimiento, pero no se pueden utilizar múltiples objetos para todas las partes de nuestro personaje, porque parece falso. Si queremos que se vea algo orgánico, todo el personaje tiene que consistir de solo una malla (mesh). No hay quiebres en la piel alrededor de un codo humano, y así debería ser en un personaje humano generado por computadora. Así es que el objeto esqueleto fue creado. Es un objeto que puede ser rotado, movido y escalado, al igual que la gran mayoría de otros tipos de objetos 3D, pero es especial porque lo podemos usar para mover los vértices de un objeto malla. En Blender, éste objeto es llamado Armature, y nos referiremos a él de esa manera en adelante. Nótese que los ganchos (hooks) son también objetos que pueden mover los vértices de un objeto malla.

De Vuelta A Cinemática

Todavía existía un tema que resolver. Consideremos dos ejemplos; un brazo y una pierna. Un brazo puede moverse en el aire, pero las piernas necesitan hacer contacto con el suelo. El pie necesita estar completamente quieto (en relación con el piso, no el cuerpo) o cualquier chance de aparentar un movimiento realista se pierde. Si queremos que el personaje se mueva de parado a agachado, ¿cómo mantenemos el pie en un lugar mientras la rodilla y las caderas están rotando?

An IK effector in Motion

Un efector IK en movimiento

La solución a éste problema fue crear un nuevo método que implementa un proceso recursivo, que rota los huesos de manera que lleguen hacia un objetivo. Mientras el objetivo se encuentro dentro de rango, la cadena de objetos rota lo necesario para tocar el objeto. Este proceso es llamado Cinemática Inversa, o IK (por su nombre en inglés “Inverse Kinematics”)

Cuando se trabaja con FK, se debe rotar cada articulación a mano. Cuando se trabaja con IK, se mueve un objetivo, y los huesos están hechos para tocar el objetivo, de manera que todas las rotaciones se hacen solas automáticamente. Suena genial, ¿no?, ¿Quien necesita FK?. Bueno, los animadores, y la siguiente imagen muestra que IK y FK tienen comportamientos muy diferentes.

FK vs IK

FK vs IK

Estos dos brazos tienen dos “key frames”, pero el de la derecha está animado con IK y el de la izquierda con FK. Para el brazo de la derecha, esto significa que el efector IK posee una posicion inicial, y una final. Para Blender, ésto significa que el animador está diciendo “ir desde el punto A, al punto B”, así que obviamente el efector va a viajar en línea recta. ¿Pero es eso lo que queremos? Quizás si, o quizás no, depende del personaje. Si es el brazo de un nadador olímpico en una piscina, entonces probablemente querramos un movimiento como el que vemos en el brazo de la izquierda. Pero si éste es el brazo robótico de una maquina que esta cortando una línea perfectamente recta en un pedazo de metal, entonces probablemente querramos algo como el movimiento del brazo de la derecha. Por lo general, sin embargo, necesitamos de IK y FK en el mismo personaje, pero en momentos distintos. Quizás nuestro nadador olímpico va a nadar hacia las escaleras, salir de la piscina y abrir una puerta corrediza, en cuyo caso su mano debe sincronizarse con la manija de la puerta mientras la mueve. Cubriremos la animacion IK y FK más adelante.

Sumario

Con suerte, la información que hemos cubierto hasta el momento, le ha ayudado a entender cómo la animación de personajes evolucionó desde lo que era a lo que es hoy. Con suerte, ésto le ha ayudado a ver cuales son los métodos y objetivos, y cómo las técnicas IK y FK encajan en la gran imagen que es la animación de personajes.

Mientras progresa más y más profundo en la animación de personajes, va a ver los términos “animación” y “manipulación” desperdigados por ahí, pero puede que no comprenda completamente los significados y diferencias entre estos dos términos. “Animación” es un par de cosas. En particular, es el acto específico de simular un movimiento. Por otra parte, básicamente todo en una película, TV o juegos, es hecho con el solo propósito de crear animación.

Por lo general, cuando a los profesionales de la industra se les pregunta “¿A que te dedicas?”, ellos siempre responden, “Soy un animador por computadora”. Ésto no tiene que significar que ellos de hecho hacen la animación, puede significar que trabajan para una compañía que produce animaciones. Con este criterio, todos los temas de gráficos de computadora, pueden ubicarse bajo el paraguas de la animación por computadora.

Ésta sección habla específicamente acerca del área en animación por computadora denominada “manipulación” (en adelante “rigging”). El rigging de un personaje es como diseñar los controles para una marioneta que cuelga de hilos, marionetas que se sientan en manos, marionetas que se mueven con barras metálicas, y por supuesto, todo tipo de marionetas animatronicas. Incluso en gráficos de computadora, necesitamos herramientas que nos ayuden a crear el movimiento. Éste es el mundo del rigging. Algunas de nuestras herramientas son:

A series of connected bones is called a "chain", and these are the terms we use to refer to the elements in a chain.

Una serie de huesos conectados es llamado una “Cadena” (chain), y éstos son los términos que usamos para referirnos a los elementos en una cadena.

  • Herencia de objetos

  • Bloqueos en los ejes

  • Ángulos de libertad

  • Coacción de objetos (y)

        • Otros tipos de relaciones de objetos



Como las marionetas reales, las marionetas digitales necesitan uniones, y para eso tenemos objetos digitales como esqueletos (de ahora en adelante Armatures). Ordenamos estos objetos dentro de herencias de manera que cuando el cuello del personaje se mueva, su cabeza vaya con él. O cuando el brazo se mueva, el antebrazo no quede flotando por sí mismo, ni se necesita mover por si mismo para seguirlo. Dado que lo hicimos hijo del brazo en herencia, simplemente se mantiene unido. Y esto es igual para el brazo con el hombro, quien a su vez es hijo de la espina

A veces tenemos un objeto que trabaja como un control para las partes de nuestro personaje, pero queremos limitar las formas en que puede ser manipulado. Para estas situaciones, tenemos bloqueos de ejes. Esto nos permite hacer algunos huesos (bones) inmóviles, sin permitir rotación ni escalado tampoco. Hay 3 ejes para cada tipo de transformación, haciendo un total de 9 ejes, y podemos bloquear tantos como querramos o necesitemos

En algunas cadenas IK, queremos limitar el rango de movimiento de ciertos huesos. Un ejemplo podría ser la muñeca de una persona, debe rotar solo 180º. En Blender, podemos hacer esto usando AdM, Ángulo de movimiento, o DoF por su nombre en inglés Degrees of Freedom.

La herramienta más usada en el rigging es la de coacción (de ahora en adelante Constraint). Nos permite definir otros tipos de relaciones que las herencias puedan darnos. Tambien tenemos otras herramientas especiales, como los controladores IPO, pydrivers(controladores python) y Scripts Python


Traducido por Frapell de la documentacion oficial de Blender (http://wiki.blender.org/index.php/BSoD/Introduction_to_Rigging/Character_Rigging_In_Review)