Advertencia

Este documento está un poco desactualizado. FIXME(A tener en cuenta): menciona solo FBX (verifica si glTF también es compatible), contiene contenido alojado en HiFi

Personaliza las Animaciones del Avatar

You can express yourself by overriding Overte's standard set of animations with your own custom animations such as dancing, juggling, or waving. Any custom animations you set up will be independent to each avatar you own and wear.

Nota

A menudo actualizamos nuestro proceso para importar animaciones personalizadas para que sea más fácil de usar. A medida que desarrolles animaciones personalizadas, ten en cuenta que es posible que debas modificarlas en el futuro a medida que nuestro soporte de animación personalizada continúe mejorando.

Prerrequisitos

A medida que profundizamos en la creación de animaciones personalizadas, es posible que usemos terminología con la que no estés familiarizado. A continuación, se muestran algunos términos con los que puedes encontrarte:

Términos

Descripción

Animaciones de avatar

Avatar animations are FBX files that define how your avatar moves. For example, turn_left.fbx is the standard animation file for your avatar turning left.

Funciones de animación

Las funciones de animación son disparadores que se asignan a una acción que puede realizar un avatar. Por ejemplo, turnLeft es una función de animación que hace que tu avatar gire a la izquierda mientras está parado. Esta función de animación se asigna al archivo turn_left.fbx. Puedes ver esto en acción presionando la tecla de flecha izquierda o A en el modo Escritorio o usando los controladores de mano en el modo VR.

Animación de Avatar JSON o Archivo Gráfico de Animación

The standard animation system blends and layers a series of animations from FBX files using a JSON data file. This JSON file is called the Animation Graph file, and it specifies exactly which animations to play and how they are blended. It also determines the order of operations, so that operations like Inverse Kinematics occur after the rest of the body has been animated by traditional means. By default, every avatar uses the same Animation Graph file.

Prepara Tu Animación Personalizada

Antes de reemplazar las animaciones estándar existentes, debes preparar tu archivo de animación personalizado. Utiliza nuestro Guía de estándares de Avatar y ten en cuenta las siguientes pautas:

  • Animations must have standard joint names for Overte.

  • Las animaciones deben tener orientaciones articulares estándar (y hacia abajo del hueso).

  • Los fotogramas clave deben tener fotogramas clave para cada articulación a un intervalo uniforme de 30 fotogramas por segundo.

  • La fase de animación de locomoción tiene el tobillo izquierdo en posición de primer paso en el primer fotograma. Intenta hacer coincidir esta fase si quieres que tu animación de locomoción se mezcle con el conjunto predeterminado.

Una vez que creas tu animación:

  1. Exporta tu animación desde la herramienta externa de tu elección como un archivo FBX.

  2. Sube tu archivo FBX de animación a un servidor en la nube y copia la URL.

Reemplazar Animaciones Estándar

Puedes hacer que tu avatar use tus animaciones personalizadas reemplazando las animaciones predeterminadas. Hay dos formas diferentes de hacer esto:

Reemplazar Usando un archivo Script

You can write a script and use the MyAvatar namespace to override an existing animation or animation role.

Hemos enumerado los métodos que puedes utilizar para reemplazar las animaciones estándar de tu avatar.

Método

Descripción

MyAvatar.overrideAnimation

Este método puede utilizarse para reproducir cualquier animación en el avatar actual. Se moverá suavemente desde la pose actual hasta el fotograma inicial de la animación personalizada. Por ejemplo, si su avatar está saludando, este script detendrá su avatar y reproducirá la animación personalizada proporcionada.

AnimationCache.prefetch

Este método busca un recurso. Puedes usar esto para obtener una animación personalizada que hayas alojado en un servidor en la nube. Si no buscas previamente tus animaciones antes de reproducirlas, es posible que veas una pose en T brevemente mientras se descarga la animación.

MyAvatar.restoreAnimation

Este método evita que la función de reemplazo (override) reproduzca cualquier animación personalizada. Tu avatar volverá a reproducir las animaciones estándar.

Nota

Este proceso para reemplazar una animación existente tomará el control completo de todas las articulaciones del avatar. Se desactivará la cinemática inversa de las manos y la cabeza de los usuarios de HMD.

También puedes reemplazar una asignación de función de animación existente:

  1. Use MyAvatar.getAnimationRoles to view the list of roles for the current avatar.

  2. You can replace the animation for each role with a custom animation (FBX file) using MyAvatar.overrideRoleAnimation.

We've listed the animation roles and their description. These are frequently updated, so we recommend using MyAvatar.getAnimationRoles to get the latest animation roles before continuing. The standard animation FBX files for these roles can be found in the Overte source code repository on GitHub.

Funciones de Animación

Descripción

rightHandGraspOpen

Cuando no se aprieta el gatillo del controlador de mano.

rightHandGraspClosed

Cuando se aprieta completamente el gatillo del controlador de mano.

rightIndexPointOpen

Gesto de señalar.

rightIndexPointClosed

Gesto de señalar con el gatillo apretado.

rightThumbRaiseOpen

Gesto de pulgar hacia arriba.

rightThumbRaiseClosed

Gesto de pulgar hacia arriba con el gatillo apretado.

rightIndexPointAndThumbRaiseOpen

Pulgar hacia arriba y gesto de señalar simultáneamente.

rightIndexPointAndThumbRaiseClosed

Pulgar hacia arriba y gesto de señalar simultáneamente, con el gatillo apretado.

leftHandGraspOpen

Cuando no se aprieta el gatillo del controlador de mano.

leftHandGraspClosed

Cuando se aprieta completamente el gatillo del controlador de mano.

leftIndexPointOpen

Gesto de señalar.

leftIndexPointClosed

Gesto de señalar con el gatillo apretado.

leftThumbRaiseOpen

Gesto de pulgar hacia arriba.

leftThumbRaiseClosed

Gesto de pulgar hacia arriba con el gatillo apretado.

leftIndexPointAndThumbRaiseOpen

Pulgar hacia arriba y gesto de señalar simultáneamente.

leftIndexPointAndThumbRaiseClosed

Pulgar hacia arriba y gesto de señalar simultáneamente, con el gatillo apretado.

idleStand

Quedarse quieto, sin hablar.

idleTalk

Quedarse quieto, pero el avatar está hablando mientras tanto.

walkFwdShort_c

Caminando hacia adelante a 0.5 m/s.

walkFwdNormal_c, walkFwdFast_c

Caminando hacia adelante a 1.8 m/s. Caminando hacia adelante a 2.3 m/s.

walkFwdJog_c, walkFwdRun_c

Caminando hacia adelante a 3.2 m/s. Caminando hacia adelante a 4.5 m/s.

idleToWalkFwd, idleSettle

Transición corta de estar inactivo a caminar hacia adelante. Transición de caminar a inactivo.

walkBwdShort_c

Caminando hacia atrás a 0,6 m/s.

walkBwdFast_c, jogBwd_c, runBwd_c

Caminando hacia atrás a 1,6 m/s. Trota hacia atrás a 2,3 m/s. Trota hacia atrás a 3,1 m/s.

turnLeft

Animación de pie girando en el lugar.

turnRight

Animación de pie girando en el lugar.

strafeLeftShortStep_c

Paso lateral a 0,1 m/s.

strafeLeftStep_c, strafeLeftWalk_c, strafeLeftWalkFast_c, strafeLeftJog_c

Dar paso lateral a 0,5 m/s. Caminar de lado a 1,0 m/s. Caminar de lado a 2,6 m/s. Trote lateral a 3,0 m/s.

strafeRightShortStep_c, strafeRightStep_c

Dar paso lateral a 0,1 m/s. Dar paso lateral a 0,5 m/s.

strafeRightWalk_c, strafeRightFast_c, strafeRightJog_c, stepLeftShort_c, stepLeft_c, strafeLeftAnim_c, stepRightShort_c, stepRight_c, strafeRightAnim_c

Caminar de lado a 1 m/s. Caminar de lado a 2,6 m/s. Trote lateral a 3 m/s. Paso de HMD a la izquierda a 0 m/s. Paso de HMD a la izquierda a 0,5 m/s. Desplazamiento de HMD a la izquierda a 2,5 m/s. Paso de HMD a la derecha a 0 m/s. Paso de HMD a la derecha a 0,5 m/s. Desplazamiento de HMD a la derecha a 2,5 m/s.

fly

Volando inactivo.

takeoffStand

Pararse con salto de pies.

TAKEOFFRUN

Saltar rápidamente al correr.

inAirStandPreApex

Salto de pie en el aire en el camino hacia arriba hacia el vértice del salto.

inAirStandApex

Salto de pie en el aire en el vértice del salto.

inAirStandPostApex

Salto de pie en el aire en el arco descendente del salto.

inAirRunPreApex

Saltar corriendo en el aire en el camino hacia arriba hacia el vértice del salto.

inAirRunApex

Salto corriendo en el aire en el vértice del salto.

inAirRunPostApex

Saltar mientras se corre en el aire durante el arco descendente del salto.

landStandImpact

De pie sobre el piso.

landStand

De pie sobre el piso.

LANDRUN

Corriendo sobre el piso.

Crear un Archivo JSON de animación de Avatar Personalizado

Si no te sientes cómodo usando un script (archivo de código fuente), puedes editar o reemplazar el archivo JSON de Animación de Avatar existente para anular las animaciones estándar.

Nota

Si creas un archivo JSON personalizado para las animaciones de tu avatar, no heredará ninguna actualización hecha en el archivo JSON de las animaciones estándar. Puedes realizar modificaciones al texto de la última versión en cualquier momento.

El archivo JSON muestra qué función de animación se asigna a qué archivo FBX de animación. Puedes reemplazar los archivos FBX de animación estándar con los archivos FBX de tu animación personalizada. O, puedes escribir un nuevo archivo JSON con las nuevas asignaciones para cada función de animación.

Para reemplazar animaciones estándar:

  1. Sube tu archivo JSON personalizado a un servidor en la nube y copia la URL.

  2. En Interface, abre tu HUD o Tablet y ve a Avatar.

  3. Haz clic en el icono de Configuración en la esquina superior derecha.

  4. En "Avatar Animation JSON", pega la URL de tu archivo JSON.

O

  1. Abre el archivo FST de tu avatar en un editor de texto.

  2. Agrega la URL de tu archivo de Gráfico de Animación.

Nota

Deberás ejecutar los archivos de tu avatar a través del paquete Empaquetador de Avatar para incluir los cambios en tu archivo FST.

animGraphUrl = URL

Ejemplos

  • Here is the current default avatar-animation.json file.

  • Este archivo scoot-animation.json reemplaza las animaciones de inactividad y caminata con una pose sentada. Este ejemplo muestra cómo puedes reemplazar algunas de las animaciones predeterminadas de un avatar.

Tema avanzado: Sistema AnimNode

El archivo JSON de Animación de Avatar contiene un árbol jerárquico de nodos llamado Sistema AnimNode. El sistema AnimNode define cómo se mueve un avatar y se describe en el archivo JSON de Animación Gráfica.

El movimiento de un avatar está determinado por una combinación compleja de animación de procedimiento, clips de animación pregrabados y cinemática inversa. Esta combinación se calcula en cada fotograma para garantizar que el cuerpo del avatar siga la física y la entrada del controlador lo más rápido posible. Debe manejar la animación para usuarios de escritorio, usuarios de HMD y usuarios que lleven un conjunto completo de rastreadores HTC Vive. Debe configurarse sobre la marcha a medida que se agregan y eliminan sensores del sistema. También debería estar abierto a extensiones para que sean posibles animaciones únicas y configuraciones de avatar. Estas funcionalidades son manejadas por el sistema AnimNode.

Hemos enumerado algunas características del sistema:

  • El sistema AnimNode es un gráfico de nodos.

  • Algunos nodos solo tienen salida, como los clips de animación pregrabados.

  • Otros nodos producen resultados procesando los nodos debajo de él en el grafo y combinando los resultados.

  • Al manipular la jerarquía de nodos, ciertas acciones de animación ocurrirán antes o después de otras acciones de animación.

  • Los parámetros del nodo se pueden cambiar dinámicamente en tiempo de ejecución. Esta flexibilidad es necesaria para lograr buenos resultados visuales.

  • El sistema está en el archivo JSON de Gráfico de Animación predeterminado y se carga durante la inicialización del avatar.

Conceptos clave

El sistema AnimNode funciona como un árbol de análisis de expresiones. Por ejemplo, la siguiente expresión: 4 + 3 * 7 - (5 / (3 + 4)) + 6, se puede representar mediante el siguiente árbol de análisis.

../../_images/animnode.png

Este árbol de análisis puede evaluarse en tiempo de ejecución para calcular el valor real. En este árbol, los nodos hoja son valores y los nodos interiores son operaciones que combinan dos o más subárboles y producen un nuevo valor. El árbol se evalúa hasta que quede un único valor, que debería ser el resultado de toda la expresión: 30.2957142.

En la expresión del caso (expression case), el valor de salida de cada nodo es un número de punto flotante, y las operaciones se pueden implementar simplemente evaluando cada subárbol y luego combinándolos con una operación aritmética, como la suma o la multiplicación.

El sistema AnimNode funciona con un concepto similar. Excepto que el valor de cada nodo contiene todas las traslaciones y rotaciones de las articulaciones del avatar. Los nodos de hoja pueden ser poses del avatar estáticas, como la pose de T, o pueden ser un solo fotograma de un clip de animación. Los nodos interiores pueden realizar operaciones como combinar dos o más subárboles o combinar el cuerpo superior de una animación con el cuerpo inferior de otra.

Ver también