Posts Tagged ‘ Animación ’

Blender: Restricción “Seguir trayectoria” con fotogramas clave (control de distintas velocidades)

Muchas veces, tras concluir el clásico ejercicio de un objeto que sigue una trayectoria, mis alumnos más inquietos de Digital Learning y de Aula Mentor me preguntan:

– ¿Cómo hago para poder decidir, cuándo se mueve el objeto? ¿Y si quiero que se quede parado cierto tiempo antes de que empiece la animación?

La solución está en la inserción de fotogramas clave en el campo “Tiempo de evaluación” aunque, por norma general, ese concepto aún no se ha estudiado cuando se afronta este ejercicio.

Ahí va el método:

Blender: ejercicio de bouncing ball sin squash&stretch

Después del vistazo general a la documentación de Animation Fundamentals in Blender me he animado a mirar con detenimiento todos los recursos que se tratan en el primer ejercicio sobre bouncing ball sin squash&stretch. El resultado no es nada espectacular pero he repasado un montón de cosas y he cogido mucha soltura en el manejo de las curvas de interpolación. En el próximo ejercicio se le aplica el típico efecto de squash&stretch

“Animation Fundamentals in Blender” de Beorn Leonard

Beorn Leonard tras graduarse el Animation Mentor ha trabajado en una formidable documentación llamada Animation Fundamentals in Blender.

Me he encargado la descarga del DVD mediante prepago de 28 dólares y puedo decir que es una formidable inversión. Después de visualizar el material y jugar con los rigs que incorpora he quedado maravillado. Buenas explicaciones. El nivel al que está destinado es iniciación/medio pero deja muy bien asentados los conceptos que pretende trasmitir.

El personaje con rigging completo, llamado Clive, es una joya para iniciarse. A ver si saco lago de tiempo y lo pongo en movimiento :).

Aquí dejo un vídeo promocional que se puede ver en el enlace que puse arriba…

Blender: Pelota rodando en un eje (ya quisiera que fueran dos)

DESCARGA EL BLEND

Si esto se titula “Pelota rodando en un eje” es porque he sido incapaz de encontrar la solución para que la pelota ruede en más de uno…

Lo que yo me proponía era un setup para una pelota que me permitiera echarla a rodar. La idea fundamental era crear una restricción para que al desplazar un objeto en X la pelota rodara sobre su eje Y de una manera convincente (léase, sin patinar). No me resultó difícil llegar a este setup usando estos dos objetos: pelota y control.
Sitúo control desplazado en Z respecto a pelota

Y ahora a pelota le aplico la restricción evidente de Copiar Posición con Objetivo:control y activando sólo el eje X

Luego llegó el momento de las pruebas y tras unos intentos todo salió bien al aplicar una restricción de tipo Tranformación con Objetivo:control y estos parámetros

  • Activamos Extrapolar para que la rotación se pueda repetir periódicamente y no solo una vuelta
  • Origen: Loc. Esto está claro porque lo que quiero es que lo que origine la rotación de pelota sea un desplazamiento de control
  • X. Min: 6.283. Esto es posible si estamos trabajando con la esfera que sale a escena por defecto ya que tiene 2 unidades Blender de diámetro.  6.283 será 2·p·r (p es 3.14159)
  • Mapeo de origen a destino. Hay que cambiar Y a X con lo que queda X>>Y.
  • Destino: Rot. Evidente
  • Y. Max: -360. Ese es el valor de los grados que gira la rueda mientras se desplaza 6.283 unidades Blender. Como el valor de X en Loc es positivo, el ángulo debe ser negativo.

Hasta aquí todo bien. Desplazo control a lo largo de X y pelota se comporta perfectamente. Pero de momento no he sido capaz de hacer que responda correctamente al desplazar en Y y, sobre todo, que ruede con coherencia al desplazar de una manera oblícua entre X e Y.
Se admiten sugerencias 🙂

Lectura recomendada: Blender 2.5 Character Animation Cookbook

Comienzo el regreso de este amplio periodo de descanso con dos lecturas recomendadas sobre Blender a las que dedicaré post separados.

En primer lugar el más que interesante Blender 2.5 Character Animation Cookbook  de Virgilio Vasconcelos y editado por Packt Publishing.

Lejos de ser un tostón sobre riggings en los que se repite siempre lo mismo Blender 2.5 Character Animation Cookbook es un recetario de trucos y técnicas que se centran exclusivamente en la práctica y en la funcionalidad. Cada receta está destinada a un asunto en particular y mientras avanza el libro vemos como nuestro proyecto de personaje va adquiriendo todos los elementos necesarios para moverse con soltura. No deja escapar ni uno solo de los recursos que quiere usar el aprendiz: orientación de hueso, deformaciones, drivers para crear controladores gráficos, weight paint para animación de cuerpos blandos, shape keys…

Dos de los asuntos que me hacen darle una gran calificación son:

  • dedicación exhaustiva a explicar la técnica para conjugar en un mismo rigging la cinemática inversa, la directa y la deformación de la malla con su drivers correspondientes.
  • explicación en detalle para el uso de lattices en las deformaciones faciales y similares.

Llegados a la parte final del libro le dedica unas secciones al render, uso de máscaras, edición del vídeo… Estos asuntos se agradecen y deben ser casi considerados como regalos porque van mucho más allá del propio título del libro.

No sólo las técnicas para crear el rig se  desarrollan en el libro. Muchos son los consejos que nos da el autor para usar correctamente los conocidos recursos de squash y stretch de las mallas, elegir la pose, el encuadre…

Es cierto que avanzamos de los asuntos más básicos a un nivel muy avanzado pero sólo se centra en la animacón de personájes humanoides deformables (el personaje que aprendemos a riggear y animar es Otto) quedando fuera los temas relativos a animaciones de personajes mecánicos con restricciones en los movimientos.

Más de cien .blends para seguir los capítulos se pueden descargar desde aquí.

Como pega sólo puedo mencionar el idioma (sólo en inglés) para aquellos que no lo dominen un poco, aunque es un mal menor porque está plagado de capturas explicativas.

Blender: Parent/Unparent durante una animación

Qué mejor manera que celebrar la llegada de Bender 2.58 que con un bonito tutorial con Joaclint 🙂

DESCARGAR EL .BLEND

Hace no mucho que publiqué una entrada motivada por la inquietud de un compañero de trabajo que se anda peleando con un proyecto ambicioso de una animación en el que un brazo robótico con una pinza mecánica en el extremo se dedica a recoger elementos del suelo y a llevarlos a otra parte. Tras la solución al problema para crear un Shape Key que controle la apertura de la pinza ha llegado el momento de hacer que esa pinza suelte un objeto y se vaya a buscar otro. La cosa no es una tontería y nos ha dado un buen quebradero de cabeza hasta llegar a la opción que lo permite: un tipo de keyframe con muy poca publicidad Visual LocRot.
Partimos de la misma pinza mecánica que obtuvimos en el tutorial antes mencionado.
Antes de emparentar objetos y ediciones similares es importante que los objetos que van a intervenir en la animación (los objetos móviles para que nos entendamos) se deshagan de toda la información interna relativa a escalado y rotaciones y que todo estos valores se reinicien. Estas operaciones las hacemos desde Object Mode con Object/Apply/Rotation & Scale
Desde el comienzo de la animación creamos una restricción de tipo Child Of para cada uno de los cubos (menos el que no se mueve en toda la animación) en las que el padre es siempre el elemento fijo de la pinza (mano) y no olvidamos:

  • poner, de momento, el valor Influence a 0.000
  • mantener el objeto en su lugar tras el emparentamiento con Set Inverse

El el frame 1 creamos todos los keyframes de tipo LocRot (uno para cada objeto de los que se van a mover en la animación teniendo en cuenta que de la pinza sólo vamos a mover en la ventana DopeSheet el elemento fijo porque los dedos se editan en la ventana Shape Keys Editor gracias al Shape Key que ya tenemos creado del otro tutorial).
Y comienza la acción.
La pinza hace los movimientos necesarios para agarrar el primero de los cubos (el azul) y que va a colocar sobre el cubo inmóvil de color rojo. Como el valor de Influence en la restricción del cubo es de 0.000 éste permanece quieto mientras la pinza hace su maniobra. Pero a partir de ese momento, para que el cubo siga los movimientos de la pinza, es necesario que el valor de Influence de su restricción sea 1.000. Cómo se resuelve este primer conflicto:

  1. En el frame 1 creamos un keyframe (tecla “I” sobre el campo o clic derecho para el menú contextual) en el parámetro Influence: 0.000 del cubo azul.
  2. En el frame donde queremos que comience a seguir a la pinza creamos un keyframe sobre Influence: 1.000.

Parece que debería funcionar pero no es así. La curva de interpolación que se ha creado entre esos dos frames es de tipo bezier suavizada lo que se traduce en que entre la primera posición y la última el valor de Influence evoluciona progresivamente.

Nosotros no queremos eso. Queremos que el valor sea o 0.000 o 1.000 sin valores intermedios. Vamos a arreglar eso desde la ventana Graph Editor. Necesitamos seleccionar el primer nodo que forma la curva de interpolación de Influence y después hacer Key/Interpolation Mode/Constant.

Hecho. Gracias a esta edición se mantiene constante un valor hasta que llega el siguiente.
A partir de ese punto seguimos animando la pinza para que desplace el cubo hasta el lugar adecuado encima del cubo rojo.
Y llega el momento de que el cubo vuelva a tener como valor Influence:0.000 en su restricción.Sin embargo la cosa no es tan intuitiva.

El cubo de momento carece de keyframes (salvo aquel LocRot que creamos al comienzo en el frame 1) porque ha obececido al padre para llegar a donde está. Sin embargo tenemos que crear un nuevo kayframe LocRot en el frame en el que deseamos que quede sin influencia del padre y así permanecer donde la pinza le ha dejado. Pero no basta con eso porque al descender el valor de Influence a 0.000 el cubo regresará a su lugar de origen. Si nos fijamos en los keyframes en la ventana DopeSheet, para Blender, la posición del cubo no a cambiado desde el comienzo de la animación.

La novedad está en el frame siguiente (sólo un frame más): aquel en el que deseamos que el cubo no siga más a la pinza. En esa ocasión le aplicamos al cubo un keyframe de tipo Visual LocRot. No nos tenemos que preocupar de hacer que la curva no sea beciez sino constante porque sólo hay un frame de diferencia.
La finalidad de Visual LocRot es obligar al objeto a aparecer en ese lugar y con esa rotación (supongamos, por ejemplo, que la pinza no lo ha dejado en un plano horizontal) respetando todas las restricciones anteriores.
Al crear ese keyframe aún tenemos el valor de Influence a 1.000, así que descendemos ese valor a 0.000 y creamos el keyframe correspondiente para ese campo Influence.
Es posible que en la Ventana 3D el objeto se comporte de una manera inesperada al descender el valor de Influence regresando al origen pero es porque Blender necesita reordenar su información. Cuando movamos el cursor de la línea de tiempo el objeto se reorganizará y responderá  a nuestras expectativas.
A partir de aquí la pinza se podrá ir a buscar el otro cubo con el que tendremos que recurrir al mísmo método para que la pinza lo pueda dejar encima del azul.

DESCARGAR EL .BLEND

Blender: Pinza mecánica con Shape Key

Parece normal que usar un Shape Key para crear una pinza mecánica no sea lo primero que se nos venga a la mente porque para eso están las restricciones (Constraints). Pero debido a la sencillez del mecanismo no es nada descabellado solucionar el problema con este método. El asunto viene motivado por un compañero de trabajo que buscaba una propuesta sencilla para controlar este movimiento desde el modelado para crear fácilmente las poses necesarias.

Partimos de esta geometría basada en dos objetos en la que hay una relación de parentesco por la que la pieza azul es el padre de la blanca (los dos “dedos” de la manos son una sola malla)

Con el objeto de los dedos seleccionado nos vamos al panel de Object Data para crear (desde Object Mode) un Shape Key al que llamamos pinza_abierto y acto seguido otro al que llamamos pinza_cerrado.
Damos por supuesto que pinza_abierto se ha creado según la pose de la imagen anterior. Seleccionamos la pose pinza_cerrado y subimos Value a 1.000 (representa el valor necesario para la pose que vamos a crear; el valor 0.000 representa el valor necesario para llegar a convertirse en la pose pinza_abierto)

Nos vamos a Edit Mode y creamos la pose para la pinza cerrada

Al regresar a Object Mode tiene que funcionar la teoría de antes. Cuanto más descendamos Value, más se alejará de la pose pinza_cerrado_ para aproximarse a la pose pinza_abierto. Y por el medio tendremos todas las poses que pudiéramos necesitar en nuestra animación.
Una cuestión importante es la creación de keyframes que no se crearán en DopeSheet sino en la modalidad ShapeKey Editor

Como podemos ver tiene su propio control de Value, lo que optimiza el trabajo de una manera considerable.