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).

You can download the standard Overte skeleton here. This skeleton conforms to the specifications above.

Esqueleto

The standard humanoid skeleton of your avatar should follow HumanIK Skeleton with some modifications made for Mixamo. This skeleton system will work with the input systems already in place in Overte, and will allow users to use their input devices to control their avatar's arm and finger movements (if they have any).

Overte avatars should match the following standard skeletal structure. Each of these joints can be animated.

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)

Overte uses blendshapes to animate your avatar's face. Blendshapes allow you to specify a new state for your avatar's mesh, and facial positions are animated by moving between the different states of your avatar's expressions. Blendshape behaviors are defined in your avatar's FST file, and are added to the avatar mesh using a 3D modeling tool like Blender (Shape Keys) or Maya. Adobe's Fuse program and Mixamo pipeline allow you to export blendshapes as part of your FBX, but if you are modeling an avatar from scratch, you will likely need to specify your own facial expressions.

Overte avatars support a number of blendshapes for creating different facial expressions.

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

ReadyPlayerMe blendshapes are converted into Overte blendshapes automatically.

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.

Depending on the avatar's design, the collision hulls can be very large or small. This occurs because Overte analyzes the shape of the avatar's torso (from hips to head) and tries to find the best shape that encloses the mesh. For example, if your avatar has large hips or perhaps a fully extended tail, Overte thinks that the tip of the tail is part of your hips, and makes a very large collision hull. To reduce the size of the collision hull, you can add skeleton joints to your avatar's tail.

Miniaturas de Avatar

The Avatar app will look for a thumbnail with a .jpg extension with the same name and at the same URL location as your avatar's. For example, if your avatar is hosted at https://overte.org/avatar.fbx, then it will look for a thumbnail at https://overte.org/avatar.jpg.

Ver también