Piel

Estos sistemas implementan una manera flexible de controlar la deformación de piel, usando varias cadenas de huesos flexibles que interactúan entre sí. Han sido desarrollados como base para el nuevo sistema modular de control de caras de Rigify. Estas son las ideas principales del sistema:

Cadena genérica de huesos flexibles

Una idea central del sistema es que la mayor parte de la deformación debería ser implementada mediante la utilización de un sistema de control que use cadenas estándar de huesos flexibles. Estas cadenas soportan un comportamiento avanzado, mediante su interacción con otros componentes del sistema de control. Esto, en contraste a tener múltiples sistemas de control específicos de ciertos dominios, y que cada uno de ellos genere sus propias cadenas de deformación.

La implementación proporcionará dos versiones del sistema de control: skin.basic_chain simplemente anclará huesos flexibles a los controles, sin ningún tipo de automatización agregada a los controles en sí mismos. Y skin.stretchy_chain que, además, interpolará el movimiento de los controles finales (y opcionalmente de los medios) según el movimiento de los demás controles de la cadena.

Fusión automática de controles

La parte deformante del sistema consistirá en cadenas de uno o más huesos flexibles, conectando puntos de control (nodos). Cuando los controles de dos cadenas se encuentren completamente superpuestos entre sí, serán fusionados de manera automática.

Para cada control fusionado, una de las cadenas será seleccionada como su propietaria, basándose en factores heurísticos, como la profundidad del superior desde el hueso principal, la presencia de etiquetas demarcadoras de simetría como .T/.B .L/.R y hasta el propio orden alfabético, como último recurso. Esto podrá ser redefinido mediante una opción de prioridad, en caso de que las técnicas de tanteo no dieran buenos resultados.

La cadena propietaria y sus superiores determinarán otras automatizaciones adicionales, que podrán ser ubicadas en el control. Como caso especial, si un control fuera fusionado con su contraparte simétrica .T/.B, .L/.R (detectada puramente en base a su nomenclatura), la automatización proveniente de todos los controles simétricos del propietario serán promediada.

Controladores superiores

En vez de simplemente usar el hueso superior (ORG) del metarig como superior para los controles y mecanismos de una cadena, el nuevo sistema incluirá una interfaz para los sistemas de control superiores. Ésta, proporcionará de forma explícita huesos superiores y generará mecanismos de automatización de los controles superiores hacia los controles de cadenas subordinadas, heredando desde la base apropiada y redefiniendo métodos.

Esto permitirá la implementación de sistemas de control que integren y administren sus cadenas subordinadas de forma inteligente, para agregar automatizaciones adicionales específicas para ciertas áreas. El sistema de piel básico incluirá un modelo de sistema de control simple skin.transform.basic, que trasladará sus puntos de control subordinados de acuerdo a la transformación de su hueso de control.

Sistemas de control personalizados

Finalmente, el nuevo sistema proporciona formas de integrar automatizaciones personalizadas, incluidas en el metarig mediante dos componentes adicionales del sistema de control.

El sistema de control skin.anchor generará un control individual con restricciones heredadas, etc., de manera similar al basic.super_copy. Sin embargo, también se integrará en el sistema de piel como una cadena de longitud cero con la prioridad más alta. Esto permitirá redefinir el comportamiento normal, proporcionando un elemento bajo completo control del usuario, y al cual otras cadenas se anclarán automáticamente.

El sistema de control skin.glue, por otra parte, se anclará al control que sea generado en su misma posición (sería un error, si no hubiera uno allí). Podrá ser usado por sistemas de control personalizados del metarig para leer la posición dicho control, o para inyectar restricciones en el hueso de control. Será también posible detectar el control en la cola del hueso de adhesión y usarlo como objetivo en las restricciones, copiando así transformaciones entre controles.

skin.basic_chain

Este es el sistema de control de cadenas básico, que puentea los controles utilizando huesos flexibles, pero que no agrega ninguna automatización a los controles en sí mismos.

Cuando los controles son movidos, las cadenas actuarán como si se estuvieran usando asas estándar automáticas, pero rotar y (opcionalmente) escalar los controles permitirá ajustar el resultado final.

Segmentos de hueso flexible

Permitirá especificar la cantidad de segmentos a ser usados. Al establecer esta opción en 1, se desactivarán todos los comportamientos avanzados y simplemente se puentearán los puntos usando un hueso con un hueso estirado.

Fusionar rotación y escala del superior

Esta opción podrá ser activada para permitir a la cadena responder a la rotación y escala inducidas por los superiores de controles de otras cadenas con las que el control de esta cadena se ha fusionado.

Usar escala

Activará el uso de la escala del control para controlar la escala y/o el suavizado del hueso flexible.

Conectar simétrica

Especificará si los extremos de la cadena deberían conectarse de forma suave al fusionarse sus controles con los de sus contrapartes simétricas .T/.B .L/.R. La opción relevante deberá estar activa en ambas cadenas para que tenga efecto.

Conectar siguiente

Especificará si el final de la cadena debería conectarse al extremo opuesto de otra cadena, al fusionar controles. Esto permitirá conformar una cadena continua y suave fluyendo en la misma dirección. La opción relevante deberá estar activa en ambas cadenas para que tenga efecto.

Definir

Especificará si el sistema de control deberá generar un mecanismo para formar una esquina definida en el extremo conectado relevante, dependiendo del ángulo formado por las ubicaciones de los controles adyacentes. Cuando el ángulo entre los controles sea más agudo que el valor especificad, el suavizado comenzará a reducirse de 1 a 0.

Orientación

Especificará que los controles deberán estar orientados de la misma forma que el hueso seleccionado, en vez de estar alineados a la cadena.

Copiar a seleccionados

Copiará el valor de la opción a los sistemas de control seleccionados que contengan la misma opción. Esto permitirá seleccionar huesos de manera indiscriminada, sin que se terminen asignando valores de forma innecesaria.

Prioridad de la cadena

Permitirá redefinir el cálculo heurístico usado para seleccionar la cadena propietaria, al fusionar controles.

skin.stretchy_chain

Este sistema de control extenderá la cadena básica con una automatización que propagará el movimiento del inicio y el final, así como de un control medio opcional, hacia otros controles. Esto resultará en un estiramiento de la cadena completa al mover uno de sus extremos (en vez de simplemente los huesos flexibles inmediatamente adyacentes).

Posición del control medio

Especificará la posición del control medio dentro de la cadena; cuando el valor sea cero, el control medio quedará inactivo.

Decaimiento

Especificará las curvas de decaimiento de influencia de los controles inicial, medio y final. Cero producirá un decaimiento lineal, valores mayores ensancharán la influencia y -10 desactivará completamente la influencia de ese control.

Decaimiento esférico

Interruptores para cambiar la forma de las curvas de decaimiento, de una curva exponencial, que con un decaimiento de 1 producirá una parábola \(1 - x^{2^d}\) a una curva que producirá un círculo \((1 - x^{2^d})^{2^{-d}}\).

Decaimiento sobre curva de cadena

Calculará la curva de decaimiento a lo largo de la curva de la cadena, en vez de proyectarlo sobre una línea recta conectando los puntos de inicio y fin.

Propagar torsión

Especificará si la torsión de la cadena debe ser propagada hacia los puntos de control entre los controles principales o no.

Propagar escala

Especificará si la escala perpendicular de la cadena debe ser propagada hacia los puntos de control entre los controles principales o no.

Propagar a controles

Permitirá que otras cadenas vean la torsión y escala propagadas mediante la opción Fusionar rotación y escala del superior cuando sus controles sean fusionados en esta cadena, en vez de que sean completamente locales a esta cadena.

Capas de controles primarios

Especificará, opcionalmente, colecciones de huesos para los controles finales.

Capas de controles secundarios

Especificará, opcionalmente, colecciones de huesos para el control medio, usando de forma alternativa las Capas de controles primarios, en caso de no estar establecida.

Los controles principales con decaimiento activo tendrán el efecto de Fusionar rotación y escala del superior activado automáticamente, sólo para ellos.

skin.anchor

Este sistema de control actuará efectivamente como una cadena de longitud cero con prioridad máxima, asegurando que se convierta en la propietaria cuando se fusionen controles con otras cadenas. También permitirá la inclusión de influencias personalizadas automáticas en el sistema de piel.

Todas las restricciones en el hueso del metarig serán movidas al control creado.

Generar hueso deformante

Creará un hueso deformante subordinado al control.

Suprimir control

Transformará al control en un hueso de mecanismo oculto, para que el usuario no lo vea.

Tipo de control

Permitirá seleccionar qué tipo de forma generar para el control.

Revincular restricciones

Opera igual que en basic.raw_copy, excepto que todas las restricciones serán movidas desde ORG al hueso de control.

Orientación

Especificará el hueso a usar para orientar el control, como para otras cadenas.

skin.glue

Este sistema de control es, en concepto, similar a skin.anchor, pero en vez de redefinir controles, es usado para leer o ajustar el estado de controles generados por otros sistemas de control. La cabeza del hueso deberá estar superpuesta con un control de otro sistema de control de piel.

El sistema de control configurará su hueso ORG para que lea el estado del control, moviendo todas las restricciones que originalmente se encontraban en el hueso al control.

Modo de ashesión

Permitirá especificar cómo se conectará el hueso ORG al control de la piel.

Subordinado al control

Hará que el hueso ORG esté subordinado al hueso de control.

Simétrico del control

Hará que el hueso ORG se encuentre al mismo nivel jerárquico que el control, usando una restricción Copiar transformaciones que apunte al control. La transformación en espacio local resultante será la misma que la del control en su espacio local.

Simétrico con superiores

Subordinará el hueso ORG a la automatización proveniente del superior, que un control del sistema de adhesión hubiera tenido, haciéndolo a la vez seguir al propio control. Esto incluirá el movimiento del control (tanto el directo, como el inducido por sus superiores) en el espacio local de transformaciones del hueso.

Puente deformante

Además de agregar restricciones de adhesión al control, el sistema de control actuará como una cadena deformante básica de un solo segmento. Esto resultará conveniente cuando se necesite puentear un par de controles, tanto con un hueso de adhesión como con uno deformante.

Revincular restricciones

Opera igual que en basic.raw_copy, excepto que todas las restricciones serán movidas desde ORG al hueso de control.

Usar cola como objetivo

Revinculará al OBJETIVO o a cualquier restricción que tenga un hueso objetivo vacío y no tenga especificada una revinculación, para que referencie al control ubicado en la cola del hueso de adhesión.

Objetivo local con superiores

Cambiará el objetivo de la cola para que opere de forma similar a la opción Simétrico con superiores.

Agregar restricción

Permitirá agregar una típica restricción de adhesión con una Influencia específica, como si se encontrara al inicio de la pila de restricciones del hueso ORG.

skin.transform.basic

Este sistema de control proporcionará un controlador superior simplista, que usará la posición, rotación o escala regulares para modificar las posiciones, pero no las orientaciones, ni las escalas de los controles de la cadena subordinada.

Generar control

Permitirá indicar que se genere un control visible, o que se usen las transformaciones del hueso ORG como parte de una configuración más compleja y específica del sistema de control.