Sceneform te permite importar modelos con animación. Puedes usar las API de Sceneform para reproducir y controlar la animación, y adjuntar nodos al esqueleto del modelo.
Por ejemplo, el ejemplo Animation de Sceneform incluye archivos que se usan para compilar modelos de Andy, el androide y un sombrero de béisbol. El modelo Andy contiene datos de animación, mientras que el sombrero de béisbol es un modelo no animado. Cuando ejecutas la muestra, Andy se rompe y mueve los brazos mientras el sombrero permanece fijo en la cabeza mediante un nodo.
Comparación entre la animación del modelo de escena y la animación de propiedades de Android
Es importante diferenciar entre la animación del modelo en Sceneform y la animación de propiedad en Android.
Los artistas crean con anticipación las animaciones de modelos mediante software de modelado y animación. Contienen datos de animación esquelético. Estas animaciones deben exportarse como archivos
*.fbx
y, luego, importarse a un archivo*.sfb
para su uso en Sceneform.La animación de propiedades es un concepto fundamental de Android y no es específico de Sceneform. Este tipo de animación puede cambiar cualquier valor mutable en un objeto Java que tenga un método get y un método set. Los valores animados se pueden configurar de forma dinámica, pero no se pueden empaquetar en un archivo
*.sfb
.Tanto la animación de propiedades como la de modelos son compatibles con la API de Animator de Android. Ambos admiten objetos de escucha, control de reproducción (inicio/detención/finalización/pausa/cancelación), duración y retraso de inicio.
En las animaciones del modelo, solo se proporciona compatibilidad limitada para la reproducción de
TimeInterpolators
. No se admite la reproducción inversa en las animaciones del modelo.Para ver el modelado de animación de Sceneform en acción, revisa la muestra de Animación.
Para ver una animación de propiedad con Sceneform en acción, consulta la muestra del sistema solar.
Conceptos de animación de modelos
Antes de comenzar a trabajar con modelos animados, es recomendable comprender los conceptos específicos relacionados con la animación esquelética, así como las restricciones y las funciones relacionadas que se aplican a Sceneform.
Huesos. Un modelo animado contiene huesos que están conectados entre sí y forman relaciones superiores y secundarias en una jerarquía. La animación altera la posición y orientación de los huesos durante la reproducción.
De la misma manera que mover un
Node
superior en Sceneform hace que todos losNode
secundarios también se muevan, al mover un hueso superior en Sceneform, también se mueven los elementos secundarios. Los huesos se pueden mover por animación o se puede acceder a ellos como un nodo a través de la claseSkeletonNode
. Cuando se accede a los huesos como unNode
, las nuevas posiciones se reemplazan en cada fotograma por animación si se está reproduciendo uno.Esqueleto. El esqueleto comprende todos los huesos juntos, lo que forma una jerarquía de relaciones entre padres y niños.
Por ejemplo, un modelo de un brazo humano puede contener huesos como el hombro izquierdo, el hombro izquierdo, el codo izquierdo, el antebrazo izquierdo, etc. A partir del hombro izquierdo, como superior de esta jerarquía, el hombro izquierdo superior se asignaría como elemento secundario. Los hijos del "extremo izquierdo superior" podrían ser el codo izquierdo y los huesos inferiores. Cuando se rota el hueso del hombro, el brazo, el antebrazo, el codo y los huesos inferiores se mueven en tándem.
Sceneform no tiene una API para cambiar las relaciones entre los huesos del esqueleto. Esto se debe hacer con anticipación en un paquete externo de animación y modelado.
Incluso los modelos que representan objetos inorgánicos pueden usar esqueletos para facilitar el realismo. Por ejemplo, un modelo de un sofá podría tener huesos y un esqueleto.
Piel. skin es una ponderación aplicada a la malla de la superficie dibujada del modelo. La posición y la forma de la malla cutánea se calcula a partir de los huesos cercanos. Esta conexión de hueso a piel se relaciona con la deformación del modelo, lo que proporciona un movimiento más realista.
La máscara debe estar preparada con anticipación mediante un paquete de animación y modelado. La forma de la escena puede alterar el material de la malla para cambiar el aspecto de un modelo.