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 |
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:
Exporta tu animación desde la herramienta externa de tu elección como un archivo FBX.
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:
Reemplázalas usando un Archivo Script: Escribe un script para anular las animaciones estándar.
Crear un archivo JSON de Animación de Avatar Personalizado: Puedes modificar este archivo o crear un nuevo archivo de datos.
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 |
---|---|
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. |
|
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. |
|
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:
Use MyAvatar.getAnimationRoles to view the list of roles for the current avatar.
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:
Sube tu archivo JSON personalizado a un servidor en la nube y copia la URL.
En Interface, abre tu HUD o Tablet y ve a Avatar.
Haz clic en el icono de Configuración en la esquina superior derecha.
En "Avatar Animation JSON", pega la URL de tu archivo JSON.
O
Abre el archivo FST de tu avatar en un editor de texto.
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.

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