Cómo crear y controlar un sistema IK/FK en animación 3D

Freemind - 13/05/2012 22:41

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165650


.Ik_fk.

Esto son solo unos apuntes de todo lo que ido sacando de información sobre el tema. Se trata de crear un hueso con IK y a la vez, con otro hueso, poder controlar el cambio de IK a FK
(IK).- Cinemática inversa te permite determinar el movimiento de todas las partes de los objetos. (Inverse Kinematics)
(FK).- Cinemática directa, hay que ir moviendo los huesos uno por uno, arrastrando los padres a los hijos. (forwardque Kinematics)
Para empezar añadiremos un hueso a la escena:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165651



Lo rotamos (r) y extrudimos (e) para crear una armature de cuatro huesos:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165652



Presionamos Control + N para asegurarnos de que los huesos no están girados:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165653



Y le podemos poner el nombre que queramos, en este caso solo voy a poner números:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165654



Todos los huesos, menos el primero, están emparentados a otro hueso, de tal forma que si rotamos el 2 por ejemplo, los siguientes (el 3 y el 4) le siguen, lo que vamos a hacer ahora, es seleccionar en hueso número 4 y le vamos a borrar ese emparentamiento. Para ello, lo seleccionamos, y le borramos el nombre con Supr y enter:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165655



Vamos a aprovechar que ya no tiene emparentamiento para duplicarlo, y lo movemos a una posición superior. Y le cambiamos el nombre y le ponemos el número 5, más o menos, debemos tener unos huesos como en la imagen siguiente:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165656



Antes de seguir, voy a aprovechar, para explicar un poco lo que es una constraint, en este caso la llamada limit location, constraint es una restricción, en este caso (limit location) sería una restricción de localización en el espacio, determinada por unos límites, creo que se va a entender mejor cuando lo hagamos, para ello seleccionamos el hueso 5 y en la ventana de bone constraints añadimos (add constraint) una de tipo limit location:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165657



Nos saldrá una ventana, con una serie de datos de coordenadas:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165658



Para ver para qué sirven todas estas coordenadas y ejes, vamos a hacer lo siguiente. Vamos a marcar todos las casillas de máximos y mínimos:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165659



Ahora veremos, que el hueso se ha movido y se ha situado en el centro del visor 3d. Esta en coordenada cero:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165660



Como no lo queremos en esa posición, porque nos molesta, vamos a subirlo un poco. Para ello cambiamos los valores de z (es la que sube y baja, en la imagen):

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165661



Y veremos que el hueso se ha desplazado un recuadro hacia arriba. Si intentamos mover el hueso, veremos que no podemos, porque por eso le hemos puesto una restricción de coordenadas, para tener un recorrido en el eje X vamos a cambiar el valor de máximo a 1:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165662



Ahora podemos ver que el hueso lo podemos mover de izquierda a derecha en ese límite que le hemos indicado:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165663



Seguimos con la IK y FK, lo primero que vamos a hacer, es una IK. Hay varias formas de hacerlo, pero yo utilizo la siguiente forma, estando en pose mode:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165664



Seleccionamos primero el hueso número 4 (no tiene emparentamiento) y con shift presionado, seleccionamos el número 3:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165665



Presionamos shift+i y ya tenemos nuestro hueso con IK que se habrá vuelto de un color amarillento para indicar que tiene una restricción (constraint), si ahora movemos el hueso número 4 veremos que arrastra al resto de los huesos. Con mover ese hueso, ya hace que toda la cadena de huesos siga las rotaciones y movimientos:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165666



Ahora viene la parte de hacer un driver para que funcione luego el cambio de IK a FK, antes que nada, voy a preparar las vistas y abrir una ventana de tipo Graph editor:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165667



Más o menos, nos tiene que quedar una cosa como en la imagen inferior:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165668



Seleccionamos el hueso número 3, el que tiene la IK, y vamos a presionar con el botón derecho del ratón, sobre la barra de la constraint llamada influence, al presionar, nos debe de salir una ventana donde debemos seleccionar, add driver:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165669



Ahora en el editor gráfico, vamos a cambiar a drivers, y tiene que salir una ruta de armature y una barra llamada influence:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165670



Pinchamos sobre esa barra llamada influence y presionamos la letra n:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165671



En los valores de drivers vamos a cambiar el type: a averaged value:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165671



Y pinchando sobre add variable, añadimos una nueva:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165672



De tipo transform channel:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165673



Para indicarle la ruta, debemos presionar sobre la imagen del cubo:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165674



Seleccionamos armature y el bone número 5 que es el que hemos puesto en la parte superior:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165675



Y que hemos conseguido con esto, pues muy sencillo. Hemos logrado darle o quitarle la influencia (influence) sobre la IK
Si movemos el hueso número 5 a la derecha estará en lo que hemos hecho al principio, el IK y podemos mover con el hueso 4 todo el esqueleto, si movemos el hueso número 5 a la izquierda estará en FK y podemos mover los huesos independientemente:

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165676



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165677



Tutorial creado por Solimán.

-- IMÁGENES ADJUNTAS --

🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165650



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165651



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165652



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165653



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165654



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165655



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165656



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165657



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165658



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165659



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165660



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165661



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165662



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165663



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165664



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165665



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165666



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165667



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165668



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165669



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165670



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165671



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165672



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165673



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165674



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165675



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165676



🖼️

Estamos trabajando para mostrar las imágenes del foro

Adjunto #165677