Personaliza las Animaciones del Avatar
Puedes expresarte reemplazando el conjunto estándar de animaciones de Overte con tus propias animaciones personalizadas, como bailar, hacer malabarismos o saludar. Cualquier animación personalizada que configures será independiente de cada avatar que poseas y uses.
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 |
Las animaciones de avatar son archivos FBX que definen cómo se mueve tu avatar. Por ejemplo, turn_left.fbx es el archivo de animación estándar para que tu avatar gire a la izquierda. |
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 |
El sistema de animación estándar combina y superpone una serie de animaciones de archivos FBX utilizando un archivo de datos JSON. Este archivo JSON se denomina archivo gráfico de animación y especifica exactamente qué animaciones reproducir y cómo combinarlas. También determina el orden de las operaciones, de modo que operaciones como la cinemática inversa ocurren después de que el resto del cuerpo ha sido animado por medios tradicionales. Por defecto, cada avatar usa el mismo Archivo Gráfico de Animación. |
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:
Las animaciones deben tener nombres comunes estándar para 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
Puedes escribir un script y usar el espacio de nombres (namespace) MyAvatar para reemplazar una animación o función de animación existente.
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:
Usa MyAvatar.getAnimationRoles para ver la lista de funciones del avatar actual.
Puedes reemplazar la animación para cada función con una animación personalizada (archivo FBX) usando 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
Aquí está el archivo avatar-animation.json.
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.
Example of avatar with custom animations: Golden Dragon.
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