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:
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_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 cejaBrowsU_L
: Elevación de la esquina exterior de la ceja izquierdaBrowsU_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 sonrisaMouthSmile_R
: El lado derecho de la boca se levanta en una sonrisaLipsFunnel
: 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 izquierdoEyeBlink_R
: Acción de parpadeo para el ojo derechoEyeOpen_L
: Apertura del ojo izquierdoEyeOpen_R
: Apertura del ojo derechoBrowsD_L
: Esquina exterior de la ceja izquierda moviéndose hacia abajoBrowsD_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
yEyeOpen
serán0
.Si tus ojos comienzan a mirar hacia arriba:
EyeBlink
,EyeOpen
yBrowsU
comienzan a cambiar de valor, alcanzando los valores de-1
,1
y0.5
respectivamente a16.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
yEyeOpen
comienzan a cambiar de valor.EyeBlink
alcanza un valor de0.5
a32
grados.EyeOpen
alcanzará un valor de0.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:
Aquí hay un ejemplo de cómo modificar tus blendshapes en tu archivo FST:
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