> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-es/wearables-y-emotes/emotes/creating-emotes.md).

# Creación de Emotes

Esta documentación cubrirá las especificaciones de los archivos, los conceptos básicos de la animación en Blender, la forma correcta de exportar un Emote y cómo importarlo en el Builder.

{% hint style="info" %}
**💡 Consejo**: Instala el [plugin de Decentraland Tools para Blender](https://extensions.blender.org/add-ons/decentraland-tools/). Incluye varias funciones útiles para ayudarte a editar y exportar modelos 3D, wearables y emotes.
{% endhint %}

#### Tabla de especificaciones de animación

| Frecuencia de fotogramas         | 30 fps                                      |
| -------------------------------- | ------------------------------------------- |
| Duración máxima                  | 10 segundos (300 frames)                    |
| Animaciones por archivo          | 1                                           |
| Formato de exportación           | .glb                                        |
| Tasa de muestreo                 | 1 por defecto (2 o 3 si es necesario)       |
| Tamaño máximo del archivo        | 1 MB                                        |
| Distancia máxima de la animación | 1 metro (delante/detrás, izquierda/derecha) |
| Altura máxima de la animación    | 4 metros                                    |

Puedes encontrar una explicación más detallada de las especificaciones de animación [**a continuación**](#the-animation-specifications).

### **Recursos**

Esta documentación explica la configuración de Rig 1.0, sus controles y sus funciones.

[Decentraland Blender Rig](https://github.com/decentraland/docs/blob/main/creator/images/emotes/Avatar_File.blend)

{% hint style="info" %}
Si estás usando Maya, puedes descargar este [Maya Rig](https://github.com/decentraland/docs/blob/main/images/emotes/DCL_Maya_Rig.ma) y [selector](https://github.com/decentraland/docs/blob/main/images/emotes/emoteAvatar.pkr) proporcionado por [SparkleStudios](https://www.sparkles.studio/) ❤️.
{% endhint %}

## **Antes de empezar**

### **Frecuencia de fotogramas**

Antes de empezar, es importante comprobar la frecuencia de fotogramas. Las animaciones de Decentraland deben tener una frecuencia de 30 fps. Es probable que el archivo del rig proporcionado ya tenga eso configurado, pero como el valor predeterminado de Blender es 24 fps, es mejor verificarlo antes de empezar (una frecuencia de fotogramas incorrecta afectará la velocidad de la animación). Esa opción se puede encontrar en Output Properties (el icono de la impresora) en Format, como se muestra abajo:

![Asegúrate de que la frecuencia de fotogramas esté configurada en 30 fps antes de empezar.](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/framerate.png)

Asegúrate de que la frecuencia de fotogramas esté configurada en 30 fps antes de empezar.

### **Pose Mode**

En Blender, un rig puede verse en tres modos diferentes: Object Mode, Edit Mode y Pose Mode. Las animaciones solo se pueden hacer en Pose Mode (en ese modo, los controles tienen colores). Con el rig seleccionado, encontrarás esa opción en un menú desplegable, en la parte superior derecha.

![Cambio a Pose Mode.](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/changing_pose_mode.gif)

Cambio a Pose Mode.

### **Interfaz para animaciones**

En el archivo del rig, además de las dos ventanas para el viewport (vista frontal y lateral), hay tres más en la parte inferior: un ***Graph Editor***, ***Dope Sheet***&#x79; un ***Timeline***.

* ***Graph Editor***: En este editor, es posible editar las curvas de animación de cada propiedad de transform de los controles seleccionados. Esas curvas muestran cómo se está calculando la interpolación y se pueden editar para lograr el efecto deseado en la animación. Tanto aquí como en el dope sheet, la ***Only Show Selected*** herramienta está activada, lo que significa que solo incluirá los canales relacionados con el control seleccionado. Esto se puede activar y desactivar simplemente haciendo clic en el icono de flecha.
* ***Dope Sheet***: Aquí puedes editar los keyframes. También es donde puedes crear nuevas animaciones o recorrer las múltiples que se hayan creado. Ten en cuenta que, para tener acceso a la animación, debe seleccionarse el ***Action Editor*** . Esta opción está justo al lado del *Dope Sheet* icono, en un menú desplegable.
* ***Timeline***: Aquí es donde se encuentran la Timeline y los controles de reproducción. Aquí, ***Auto Keying*** está activado, lo que significa que cada vez que se manipula un control se crea automáticamente un keyframe. Siempre puedes desactivar esa función haciendo clic en el punto junto a los controles de reproducción.

¡Con este espacio de trabajo, tienes todo lo necesario para empezar a animar!

![](/files/db989f0b22383fb049b0597582e421a12b56ea71)

Estas son las ventanas inferiores. La de arriba está en el ***Graph Editor,*** la del medio en el ***Dope Sheet,*** y la de abajo es la ***Timeline.*** La flecha roja de arriba muestra la ***Only Show Selected*** herramienta y la de abajo muestra la ***Auto Keying***.

{% hint style="info" %}
**💡 ¡Consejo!**

Como Blender es altamente personalizable, este también es un buen momento para configurar el diseño que mejor se adapte a ti, añadiendo, ajustando o eliminando ventanas. Cada animador tiene sus propias preferencias, así que siéntete libre de editar el diseño como quieras.
{% endhint %}

## Empezando

#### **Starting Pose**

En el archivo del rig proporcionado, ya hay una acción, la ***Starting\_Pose***. Teniendo en cuenta que todas las acciones del avatar comienzan desde la pose idle, **te recomendamos mucho empezar tu animación desde esa pose y volver a usarla en el último frame**. Esto hará que la transición de Idle a Emote sea mejor y que la animación sea más fluida.

{% hint style="info" %}
**💡 ¡Consejo!**

Si quieres hacer una animación en loop, no tienes que empezar la animación desde la Starting Pose. ¡Siéntete libre de usar la pose que tenga más sentido en tu animación!\*\*
{% endhint %}

**Área de animación**

En el archivo del avatar proporcionado, encontrarás una colección llamada ***Animation\_Area\_Reference***. Consiste en tres objetos que ayudarán visualmente a establecer los límites de la animación: ***Animation\_Area\_Reference***, ***Ground\_Reference*** y ***Root\_Animation\_Area***.

* Animation\_Area\_Reference es un cubo de 4x4, que es la bounding box. La mesh del avatar y los props deben permanecer dentro de esta área durante toda la animación. Los props pueden moverse libremente siempre que permanezcan dentro del área del cubo.
* Ground\_Reference es un plano proporcionado para ayudar a comprobar si hay penetración en el suelo durante la animación. También contiene información importante: el círculo más pequeño, que tiene un diámetro de 2 metros, define el área donde se puede mover el root del avatar. Eso significa que, mientras esté en el suelo, el avatar solo puede moverse 1 metro en cada dirección: delante, detrás, izquierda y derecha.
* Root\_Animation\_Area es un cilindro que define el área donde puedes mover el root/centro de gravedad del avatar (CTRL\_Avatar\_UpperBody o Avatar\_Hips). El cilindro tiene 4 metros de altura, lo que significa que el root puede subir hasta arriba siempre que ninguna mesh quede fuera de la bounding box. Las piernas, los brazos y otras partes del cuerpo del avatar pueden quedar fuera del cilindro, siempre que nunca queden fuera de Animation\_Area\_Reference.

![Referencia del área de animación.](/files/b72fab6a84cc2c6f7dd9143ea6174094efcb7ecd)

En resumen, el avatar puede moverse a la derecha, izquierda, delante y detrás mientras el root permanezca dentro del cilindro, lo que significa 1 metro en cualquiera de las cuatro direcciones.

![Movimiento del avatar.](/files/d8b4ae2077ac8e8ea178805ae134545bcc451239)

En cuanto a la altura, puede subir todo lo posible (máximo 4 metros) siempre que el avatar permanezca dentro de la bounding box. Abajo hay algunos casos de altura del avatar hechos correctamente (todo el cuerpo dentro de la bounding box) y algunos hechos incorrectamente (mesh fuera de la bounding box).

| ![](/files/296ba26839e53b7c7520551813690292e47799f7) | ![](/files/dad1bb7f37ff1e08e40d08da89b4999193c55671) |
| ---------------------------------------------------- | ---------------------------------------------------- |

| ![](/files/c45bfa24f9155dc92dbf9d09e7b9301505c3bbac) | ![](/files/b3cc6ec4e8decdda40e695382fd3d3204ac921e3) |
| ---------------------------------------------------- | ---------------------------------------------------- |

![](/files/495c206142814b07bc9f07f089995ff2c2b46da2)

Aquí hay algunos ejemplos de emotes que están dentro de los límites del área de animación.

| ![](/files/2f572fe00a8220140c744b4416052c42e2485469) | ![](/files/9cc9afccd7a0d637050b9517513f5bb06543e481) |
| ---------------------------------------------------- | ---------------------------------------------------- |

{% hint style="info" %}
**💡 ¡Atención!**

Ten cuidado con estos límites porque sobrepasarlos podría causar problemas de jugabilidad.
{% endhint %}

## **Creación de una animación**

El archivo blend tiene un clip de animación listo para ser editado: *StartingPose\_Avatar*. Puedes duplicar y renombrar ese clip de animación como mejor te parezca. ¡No hace falta crear uno desde cero!

En la *Browse Action* sección, simplemente haz clic en ***Create A New Action*** botón para duplicar la animación actual. Para renombrar el clip, solo haz clic en el texto y escribe otra cosa.

Blender 4.4 introdujo *Slotted Actions*, el icono a la derecha de la *Browse Action* sección de versiones anteriores. No hace falta tocar eso si estás creando un emote sin prop, así que puedes dejarlo como está. Si estás animando el avatar, asegúrate de que la slotted action sea Avatar\_Animation.

![](/files/8f630dad083bdedd63a3f3d723c49fad938f2524)

Crea una nueva animación duplicando la existente o haciendo clic en ***Unlink Action*** y luego ***New***.

### **Exploración y eliminación de animaciones**

En Blender, puedes tener varias pistas de animación en el mismo archivo. Es posible explorarlas haciendo clic en el menú desplegable Browse Action. Todas las animaciones con una F (Fake User) se guardarán. Para eliminar una animación, pulsa Shift en el teclado y haz clic en la X. Después de hacer eso, la animación mostrará un 0 junto a ella, lo que significa que se eliminará la próxima vez que cierres Blender o vuelvas a abrir el archivo.

![](/files/986685747d45b874df3f85b786b8b343791c898e)

Explorando animaciones: las que tengan una F se guardarán, y las que tengan 0 se eliminarán.

Otra forma de eliminar animaciones sin tener que recargar Blender es cambiando el Display Mode de View Layer a Blender File. Expande Actions y elimina cualquier animación no deseada haciendo clic derecho sobre ellas y seleccionando Delete.

![](/files/22110cb73daa953dde5f5c81f670e8fda6291b3b)

Puedes eliminar animaciones directamente desde Blender File en Display Mode, en el outliner.

{% hint style="info" %}
**💡 ¡Consejo!**

No edites siempre la misma pista de animación. Antes de hacer cambios importantes, simplemente duplica la animación. Así tendrás una versión de respaldo por si te arrepientes de borrar o cambiar algo. ¡Esta también es una buena forma de llevar un registro del progreso realizado hasta ahora!
{% endhint %}

![](/files/70ab060020d4f534b8ec098ca34f1ad2ba2f938f)

Duplicando clips de animación.

### **Nomenclatura**

**El nombre de una animación debe empezar con una letra mayúscula y, si el nombre tiene más de una palabra, las palabras deben separarse con \_.** No uses espacios ni caracteres especiales. Aquí hay algunos ejemplos de nomenclatura:

* Snowfall
* Rainbow\_Dance
* Throw\_Money
* Talk\_To\_Hand

### **Overrides de Emote**

Los overrides de emote ocurren cuando los deform bones no tienen un keyframe definido en uno de los parámetros. Sin un keyframe, ese bone no tendrá la información de dónde debería estar, cuánto se ha rotado y escalado, dejando ese canal abierto. La consecuencia es que, si reproduces un emote en world y luego activas el tuyo mientras el anterior seguía reproduciéndose, la información de location, rotation y scale será sobrescrita por el emote anterior, lo que provocará una combinación de ambos. A menos que esto se haga a propósito, afectará tu animación, a veces con un resultado divertido, pero otras con el emote completamente descompuesto. Abajo hay un ejemplo de un override de emote.

![](/files/6ba946ef1e768560be97b6cd7509b5ca063a0e58)

Para evitar eso, selecciona todas las layers con bones en ellas (que se pueden encontrar en ***Object Data Properties*** > ***Skeleton*** > ***Layers***). Luego, en ***Pose Mode***&#x64;eja el cursor de la Timeline en el primer frame de tu animación y, con el mouse en ***Viewport Display***, presiona ***A*** para seleccionar todo. En el ***Graph Editor***, haz clic dos veces en el ***Eye*** icono junto al canal de la armature para hacer visibles todos los canales. Con todos los bones seleccionados, presiona ***I*** para establecer un keyframe. Haz lo mismo para el último frame.

**¡Asegúrate de seleccionar los deform bones, esto es especialmente importante!** Los deform bones se pueden encontrar en la última capa inferior y se muestran como bones verdes en el ***Viewport***.

![](/files/c7ce5e909fb6df96fdc7914ca42928973aa52cfe) Establecer keyframes en todos los bones en el primer y último frame evita los overrides de emote.

## **Las especificaciones de animación**

### **La duración de la animación**

La duración máxima de una animación es de **10 segundos** o **300 frames**. Recuerda establecer keyframes de las propiedades de cada control en el primer y último frame.

{% hint style="warning" %}
⚠️ Los canales con la visibilidad desactivada en el Graph Editor no tendrán keyframe, no se eliminarán ni siquiera se mostrarán en el Action Editor. A menos que se haya hecho intencionalmente de esa manera, presta especial atención a la visibilidad.
{% endhint %}

![](/files/5f33ef0c1a421f5e453684a431bf034f94f8f096)

¡Haz visibles los canales antes de hacer keyframe!

### **Número de animaciones**

Si es un emote estándar (sin prop), el archivo exportado solo puede contener una animación. Para los emotes 2.0, puedes tener un clip para el avatar y un clip para el prop. Si se duplicaron animaciones durante el proceso, asegúrate de eliminarlas todas antes de exportar. Conserva solo la versión final. Los emotes en secuencia que necesitan muchas animaciones para funcionar (action start, action loop y action end) no son compatibles por ahora.

### **Formato**

Las animaciones deben exportarse como .**GLB**. El archivo solo puede contener el esqueleto de deformación y la animación. **Mesh, controls y cualquier otro objeto no deben exportarse**. Se pueden encontrar más detalles sobre cómo exportar [**a continuación**](#exporting).

### **Muestreo**

Como las constraints no se pueden exportar, la única forma de exportar el clip de animación es bakeándolo, lo que significa que las posiciones, la rotación y la escala de todos los deform bones tendrán keyframe en cada frame de la animación. Si el clip es demasiado largo, por ejemplo de hasta 300 frames, tendrá 300 keyframes después de exportarlo, y cuantos más keyframes tenga, más pesado se vuelve el archivo.

El muestreo es una buena forma de optimizar la animación. La tasa de muestreo definirá con qué frecuencia se horneará un keyframe en la animación. Por ejemplo, si la tasa de muestreo está configurada en 2, eso significa que se creará un keyframe cada dos frames. Una tasa de muestreo de 3 horneará un keyframe cada tres frames y así sucesivamente. Cuanto mayor sea la tasa de muestreo, más liviano será el archivo.

La desventaja, sin embargo, es que la animación empezará a ser cada vez menos fluida, ya que pierde algunos keyframes importantes (se distribuyen por la animación de manera desigual). También es importante notar que **el muestreo NO consiste en dividir el número de frames de la animación por la tasa de muestreo**.

Normalmente, una **tasa de muestreo de 2 o 3** será suficiente. Esos números pueden optimizar la animación sin comprometer la calidad.

{% hint style="info" %}
**💡 ¡Consejo!**

Si el número de frames de la animación puede dividirse por la tasa de muestreo, ¡eso es algo bueno! Significa que el frame final se horneará, preservando la transición del final al inicio de la animación.
{% endhint %}

### **Tamaño del archivo**

El tamaño máximo del archivo es **3 MB**. Si el archivo supera eso después de exportarlo, intenta comprobar si la mesh no se exportó por accidente o si la animación no supera los 10 segundos. Si sigue superando los 3 MB, prueba a experimentar con la tasa de muestreo, ya que valores más altos mejorarán la optimización.

Si el emote contiene algún modelo 3D adicional, las texturas de esos modelos no pueden superar un tamaño de 1024 píxeles.

## **Exportación**

Como solo queremos que se exporten la armature y la animación, desactiva la visibilidad de la mesh y de cualquier objeto que no sea la armature antes de exportar, como se muestra abajo:

![](/files/ead7600db7e59d4a7ac012ed064ee0d12d379946)

¡Desactiva la visibilidad del mesh antes de exportar!

Para exportar, ve a *File* > *Export* > *glTF2.0 (.glb, .gltf)*

![](/files/620c001847364958f266f4a957c691ef02b81ad5)

Para la configuración de exportación, expande Include y, en Limit to, activa Visible Objects. Luego, expande la pestaña Data, expande Armature y habilita Export Deformation Bones Only.

| ![](/files/1cd8265212cd8f79eb59870b75096b34db2fd397) | ![](/files/839c96ad15df55b1e759e9c19d6aa05523d16ea5) |
| ---------------------------------------------------- | ---------------------------------------------------- |

Si necesitas muestrear la animación, expande la pestaña Animation, expande Sampling Animations y elige el número deseado de samples.

| ![](/files/f375346f4f53555432ad027bfaea70522d3e9a6b) | ![](/files/0a533c3c7845275ca5e70523affba41a4ce02f47) |
| ---------------------------------------------------- | ---------------------------------------------------- |

¡Eso es todo para exportar la animación!

## Referencias

Si todavía no sabes por dónde empezar o necesitas alguna referencia o inspiración, aquí tienes algunos clips de animación para ayudarte con eso. ¡Pueden ser un buen material de estudio!

[Idle.glb](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/idle.glb)

[Jump.glb](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/jump.glb)

[Walk.glb](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/walk.glb)

[Run.glb](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/run.glb)

[Pose\_Jump.glb](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/pose_jump.glb)

[Pose\_Spin.glb](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/pose_spin.glb)

[Spotlight.glb](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/spotlight.glb)

[Fashionista.glb](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/fashionista.glb)

[Chic.glb](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/chic.glb)

[Flag\_Emote.glb](https://github.com/decentraland/docs/blob/main/images/emotes/Flag_Emote.glb)

[Flag\_Emote.blend](https://github.com/decentraland/docs/blob/main/images/emotes/Flag_Emote_Final.blend)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-es/wearables-y-emotes/emotes/creating-emotes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
