Warning

This document is slightly outdated. FIXME: Texture resolutions should have more guidance, contains HiFi hosted resources

Guía de Estándares del Avatar

Este documento describe los estándares que debes seguir cuando creas tu avatar. Tu avatar usa huesos para animar las extremidades del personaje y definir la escala variable de las extremidades. Puedes agregar huesos personalizados para ajustar aún más la forma del avatar. La personalización de tu avatar se puede ajustar utilizando combinaciones de formas (blendshapes) para animar la cara y scripts (secuencias de comandos) para definir comportamientos avanzados.

En Esta Página:

Glosario

A medida que profundizamos en la creación de avatares personalizados, 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:

  • Avatar - Una representación virtual de una persona o NPC.

  • Malla - La colección de vértices y triángulos 3D para el modelo del avatar. Sin esto, el avatar es invisible.

  • Huesos - Un componente de un esqueleto que define una "extremidad" como un brazo, pierna, etc. Cada hueso podría ser animado como un extremidad separada de tu avatar.

  • Esqueleto - Una jerarquía de articulaciones.

  • Rigging: el proceso de creación de un esqueleto para el modelo del avatar.

  • Blendshapes: Variaciones de la topología que define cómo se modifica la malla para crear varias "formas".

  • Archivo FST: El archivo principal del avatar, que contiene información sobre el esqueleto, las formas de combinación (blendshapes), el archivo FBX y las texturas utilizadas por un avatar.

Pose de Referencia

Para la pose de referencia, usa una pose en T que cumpla con las especificaciones de a continuación. Es posible que quieras consultar el avatar fbx de ejemplo correctamente configurado con los archivos de origen.

  • El personaje debe mirar a lo largo de la dirección positiva del eje Z.

  • Los brazos deben estar extendidos a lo largo del eje X. Por lo tanto, el brazo izquierdo debe apuntar a lo largo de la dirección positiva del eje X.

  • La parte superior de la cabeza del personaje debe estar hacia arriba, en la dirección positiva del eje Y.

  • Las manos del personaje son planas, las palmas hacia el suelo, con los pulgares paralelos al eje X.

  • Los pies del personaje deben estar perpendiculares a las piernas (con los dedos apuntando a lo largo del eje Z como se muestra). Los pies no deben rotarse alrededor del eje Y (lo que significa que los dedos del pie izquierdo no deben apuntar hacia adentro hacia la pierna derecha o hacia afuera alejándose de la pierna derecha).

Puedes descargar el esqueleto estándar de Vircadia aquí. Este esqueleto se ajusta a las especificaciones anteriores.

Esqueleto

El esqueleto humanoide estándar de tu avatar debe seguir el Esqueleto HumanIK con algunas modificaciones hechas para Mixamo. Este sistema de esqueleto funcionará con los sistemas de entrada que ya existen en Vircadia y permitirá a los usuarios usar sus dispositivos de entrada para controlar los movimientos de los dedos y los brazos de su avatar (si los tienen).

Los avatares de Vircadia deben coincidir con la siguiente estructura esquelética estándar. Cada una de estas articulaciones se puede animar.

Note

Finger #1 is not the metacarpal; instead, it is the first joint between the proximal and intermediate.

Huesos de Flujo

Los prefijos sim and flow están reservados para los huesos de flujo (flow bones), como ropa, cabello y colas. Estos huesos no deben ser animados por un animador. (Muchas gracias a Akazukin por el modelo Ouka Miko(櫻歌ミコ) utilizado en este diagrama!)

Por ejemplo, considera una capa completa que rodea al avatar:

simBackCape1 - first bone of the cape, center back
simBackCape# - additional bone(s) of the cape, center back
simFrontCape1 - first bone of the cape, center front
simFrontCape# - additional bone(s) of the cape, center front
simLeftCape1 - first bone of the cape, left
simLeftCape# - additional bone(s) of the cape, left
simRightCape1 - first bone of the cape, right
simRightCape# - additional bone(s) of the cape, right

Alternativamente, puede usar el prefijo flow, separando el nombre y el número de conjunto con un guión bajo. La misma capa de arriba se vería así:

flow_BackCape_01
flow_BackCape_02
flow_FrontCape_01
flow_FrontCape_#
flow_LeftCape_01
flow_LeftCape_#
flow_RightCape_01
flow_RightCape_#

Vectores de Mirada

Los vectores de mirada son manejados por el vector z de las articulaciones del ojo.

El eje +z de las articulaciones del ojo debe pasar por el centro de la pupila y debe continuar haciéndolo mientras se gira la articulación del ojo.

Las articulaciones del ojo se definen en el FST.

Blendshapes (Interpolación de Formas)

Vircadia usa blendshapes (formas de combinación) para animar la cara de tu avatar. Blendshapes te permite especificar un nuevo estado para la malla de tu avatar, y las posiciones faciales se animan al moverse entre los diferentes estados de las expresiones de tu avatar. Los comportamientos de Blendshape se definen en el archivo FST de tu avatar y se agregan a la malla del avatar utilizando una herramienta de modelado 3D como Blender (Shape Keys) o Maya. El programa Fuse de Adobe y la canalización de Mixamo te permiten exportar blendshapes como parte de tu FBX, pero si estás modelando un avatar desde cero, es probable que debas especificar sus propias expresiones faciales.

Los avatares de Vircadia admiten un número de blendshapes (combinación de formas) para crear diferentes expresiones faciales.

Blendshapes Básicos

  • EyeBlink_L: Acción de parpadeo para el ojo izquierdo.

  • EyeBlink_R: Acción de parpadeo para el ojo derecho.

  • JawOpen: Apertura de la mandíbula.

Blendshapes de Audio

Estos blendshapes se utilizan cuando hablas.

Tus cejas son formas mixtas que reaccionan a un cambio de volumen. Se moverán hacia arriba cuando tu voz se vuelva más fuerte. Éstas incluyen:

  • BrowsU_C: Elevación del Centro de la ceja

  • BrowsU_L: Elevación de la esquina exterior de la ceja izquierda

  • BrowsU_R: Elevación de la esquina exterior de la ceja derecha

Otros audios de blendshapes se mezclan aleatoriamente cuando hablas. Éstos incluyen:

  • MouthSmile_L: El lado izquierdo de la boca se levanta en una sonrisa

  • MouthSmile_R: El lado derecho de la boca se levanta en una sonrisa

  • LipsFunnel: Embudo de labios, como cuando dices "¡Oh!"

  • LipsUpperClose: Labios superiores enrollados hacia adentro

Desplazamiento del Párpado

Para asegurarse de que la parte superior del párpado descanse sobre el iris, se utilizan blendshapes para rastrear la posición actual del ojo junto con la orientación de la cabeza.

  • EyeBlink_L: Acción de parpadeo para el ojo izquierdo

  • EyeBlink_R: Acción de parpadeo para el ojo derecho

  • EyeOpen_L: Apertura del ojo izquierdo

  • EyeOpen_R: Apertura del ojo derecho

  • BrowsD_L: Esquina exterior de la ceja izquierda moviéndose hacia abajo

  • BrowsD_R: Esquina exterior de la ceja derecha moviéndose hacia abajo

Aplicamos un pequeño desplazamiento procedural a los coeficientes de blendshape para evitar párpados somnolientos o locos:

  • Si estás mirando al frente: Los coeficientes EyeBlink y EyeOpen serán 0.

  • Si tus ojos comienzan a mirar hacia arriba: EyeBlink, EyeOpen y BrowsU comienzan a cambiar de valor, alcanzando los valores de -1, 1 y 0.5 respectivamente a 16.3 grados. Esto tendrá el efecto de levantar los párpados y las cejas al mirar hacia arriba.

  • Si tus ojos comienzan a mirar hacia abajo: EyeBlink y EyeOpen comienzan a cambiar de valor. EyeBlink alcanza un valor de 0.5 a 32 grados. EyeOpen alcanzará un valor de 0.5 a 27 grados. Esto tendrá el efecto de bajar los párpados mientras mira hacia abajo.

Los ajustes a tus blendshapes se pueden realizar con una herramienta de modelado 3D o directamente en el archivo FST de tu avatar. En el archivo FST, los blendshapes se definen con la sintaxis:

bs = [blendshape constant] = [your key/blendshape name] = [value between 0 and 1]

Aquí hay un ejemplo de cómo modificar tus blendshapes en tu archivo FST:

bs = BrowsU_L = head_BS_brow_up = 0.3
bs = BrowsU_C = head_BS_brow_up = 0.3
bs = BrowsU_R = head_BS_brow_up = 0.3
bs = BrowsD_R = head_BS_brow_down = 0.5
bs = BrowsD_L = head_BS_brow_down = 0.5
bs = EyeBlink_L = head_BS_L_eye_close = 1
bs = EyeBlink_R = head_BS_R_eye_close = 1
bs = EyeOpen_L = head_BS_L_eye_open = 1
bs = EyeOpen_R = head_BS_R_eye_open = 1
bs = JawOpen = JawOpen = 1
bs = MouthSmile_R = head_BS_L_smile = 0.6
bs = MouthSmile_L = head_BS_R_smile = 0.6
bs = LipsFunnel = head_BS_oo = 0.5
bs = LipsUpperClose = head_BS_mouth_down = 0.1

Blendshapes de ReadyPlayerMe

Los blendshapes de ReadyPlayerMe se convierten automáticamente en blendshapes de Vircadia.

Blendshapes no Soportados

Para utilizar los blendshapes (interpolación de formas o malla deformada) presentes en los avatares, deben coincidir con los blenshapes de a continuación. Alternativamente, se puede usar un archivo .fst para reasignar los blendshapes a cualquiera de los siguientes.

Blendshapes de Ojo

  • EyeBlink_L

  • EyeBlink_R

  • EyeSquint_L

  • EyeSquint_R

  • EyeDown_L

  • EyeDown_R

  • EyeIn_L

  • EyeIn_R

  • EyeOpen_L

  • EyeOpen_R

  • EyeOut_L

  • EyeOut_R

  • EyeUp_L

  • EyeUp_R

  • BrowsD_L

  • BrowsD_R

  • BrowsU_C

  • BrowsU_L

  • BrowsU_R

Blendshapes de Mandíbula

  • JawFwd

  • JawLeft

  • JawOpen

  • JawRight

  • MouthLeft

  • MouthRight

  • MouthFrown_L

  • MouthFrown_R

  • MouthSmile_L

  • MouthSmile_R

  • MouthDimple_L

  • MouthDimple_R

Blendshapes de Labios

  • LipsStretch_L

  • LipsStretch_R

  • LipsUpperClose

  • LipsLowerClose

  • LipsFunnel

  • LipsPucker

  • Puff

Blendshapes de Boca, Mejilla y de Usuario

  • CheekSquint_L

  • CheekSquint_R

  • MouthClose

  • MouthUpperUp_L

  • MouthUpperUp_R

  • MouthLowerDown_L

  • MouthLowerDown_R

  • MouthPress_L

  • MouthPress_R

  • MouthShrugLower

  • MouthShrugUpper

  • NoseSneer_L

  • NoseSneer_R

  • TongueOut

  • UserBlendshape0

  • UserBlendshape1

  • UserBlendshape2

  • UserBlendshape3

  • UserBlendshape4

  • UserBlendshape5

  • UserBlendshape6

  • UserBlendshape7

  • UserBlendshape8

  • UserBlendshape9

Otras Consideraciones

Optimización de Archivos

Los creadores de contenido tendrán un ancho de banda limitado en los servidores (lee la letra pequeña en cualquier plan de host ilimitado) por lo que la optimización es importante, tanto para los usuarios finales como para los creadores de contenido. Cuantos más polígonos y texturas más grandes utilices, más ancho de banda estarás utilizando de tus servidores por carga. De manera óptima, mantén tus modelos de avatar por debajo de 20 MB.

Texturas

Te recomendamos que intentes mantener el tamaño total de todas las texturas por avatar por debajo de 8 MB. Deben ser siempre menores de 1024x1024, a menos que todas las texturas estén en un solo archivo. Si usas varios archivos de textura, cuanto más pequeños, mejor, especialmente si puedes hacer que las texturas sean más pequeñas. Recuerda que puedes obtener muchos más detalles a través de la rugosidad y el mapeo normal, que solo con texturas. Se sugiere que mantengas Albedo en un tamaño más pequeño que su rugosidad para obtener el mejor detalle a través del reflejo de la luz en lugar de la variación de color.

Cascos de Colisión de Avatar

Cuando uses diferentes avatares, notarás que cada avatar tiene una forma de colisión o casco de colisión diferente. El casco de colisión es el área invisible alrededor de tu avatar que se usa para detectar cuando otros avatares o entidades chocan contigo.

Dependiendo del diseño del avatar, los cascos de colisión pueden ser muy grandes o pequeños. Esto ocurre porque Vircadia analiza la forma del torso del avatar (desde las caderas hasta la cabeza) y trata de encontrar la mejor forma que rodee a la malla. Por ejemplo, si tu avatar tiene caderas grandes o tal vez una cola completamente extendida, Vircadia piensa que la punta de la cola es parte de sus caderas y crea un casco de colisión muy grande. Para reducir el tamaño del casco de colisión, puede agregar uniones de esqueleto a la cola de tu avatar.

Miniaturas de Avatar

La aplicación de Avatar buscará una miniatura con una extensión .jpg con el mismo nombre y en la misma ubicación URL que la de tu avatar. Por ejemplo, si tu avatar está alojado en https://vircadia.dev/avatar.fbx, luego buscará una miniatura en https://vircadia.dev/avatar.jpg.

Ver también