# Props y sonidos

Para llevar tus Emotes de Decentraland al siguiente nivel, puedes añadirles props (geometría 3D) y/o sonidos, haciendo que los emotes sean mucho más divertidos y atractivos. En esta guía encontrarás todo lo que necesitas saber para exportarlos correctamente.

## **Los conceptos básicos y las limitaciones**

Para empezar a añadir props a tus emotes, es importante usar el [Decentraland Template File](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/BaseMale_Rig_1.0.blend) que tendrá el rig para el avatar y también la Ground Reference para mantener tu trabajo dentro de los límites del espacio permitido.

**Actualmente, las animaciones de props solo funcionan con animaciones de Armature/Bones, lo que significa que las animaciones de \_transform**\_\*\* no están permitidas.\*\*

El emote con sus props debe exportarse todo junto en un solo *.glb* archivo (Avatar\_Armature + Props\_Armature con sus animaciones).

* No más de 3 MB en total.
* No más de 3k tris en total para los props.
* No más de 2 materials y 2 textures para los props.
* No más de 62 bones para el prop armature.
* El emote debe tener una animación para el avatar y una animación para el prop. *Actualmente no se permiten múltiples animaciones.*
* Ambas animaciones (Avatar y Prop) deben tener la misma longitud de keyframes.
* Las animaciones no pueden superar los 300 frames o 10 segundos.
* Los límites del espacio son 4 metros cuadrados. Los props y partículas deben permanecer dentro del cubo de referencia proporcionado en el Avatar File. Para el movimiento del avatar, consulta [Ground Reference and Animation Area](/creator/content-creator-es/wearables-y-emotes/emotes/creating-emotes.md#ground-reference-and-animation-area). sección.

## **Convenciones de nombres:**

¡Las convenciones de nombres deben seguirse estrictamente para que los emotes funcionen! De lo contrario, no se reproducirán correctamente ni en el builder ni en world.

#### Convenciones de nombres de armatures:

**Para Avatar:**

`Armature`

**Para Props:**

`Armature_Prop`

#### Convenciones de nombres de animaciones:

**Para Avatar:**

`AnimationName_Avatar`

* Ejemplo: `TennisServe_Avatar`, `GunShoot_Avatar`

**Para Props:**

`AnimationName_Prop`

* Ejemplo: `TennisServe_Prop`, `GunShoot_Prop`

## **Primeros pasos**

Antes de empezar tu animación, tendrás que crear un rig para el prop. Si no estás familiarizado con el proceso, consulta [Crear un Rig](/creator/content-creator-es/modelado-3d-y-animaciones/create-a-rig.md) para obtener más información sobre cómo hacerlo.

Asegúrate de que el objeto del prop y el armature tengan sus origins ubicados en la posición 0,0 dentro de Blender. Además, aplica las transformations al objeto del prop y al armature, asegurándote de que queden congeladas en una escala de 1,1,1. Esto es crucial para evitar posibles problemas con el comportamiento del prop cuando se utilice dentro del world o durante las animaciones.

#### Hacer que el Prop siga el rig del Avatar

Algunos props pueden tener que estar sujetos a ciertas partes del cuerpo, como una raqueta de tenis a la mano. Eso se puede hacer simplemente añadiendo una constraint. Para hacerlo, en ***Pose Mode***, selecciona el bone del prop (por ejemplo, el de la raqueta de tenis), pulsa ***CTRL + Shift + C*** en tu teclado y selecciona ***Child of*** o simplemente haz clic en la pestaña ***Bone Constraint Properties*** y, en el menú desplegable, selecciona ***Child of***.

*Añade una constraint pulsando `Ctrl + Shift + C` en tu teclado.*

Luego, en ***Target***, selecciona el avatar armature y en ***Bone*** selecciona el bone que quieres que siga el prop. Para mantener la posición original del prop, haz clic en ***Set Inverse*** una vez que añadas la constraint. Si la influencia es 1, el prop seguirá completamente al bone seleccionado; si es 0, la constraint se desactivará. Puedes establecer keyframes en la influencia para activarla y desactivarla a lo largo de la animación. Para hacerlo, solo pulsa I mientras el cursor está encima de ***Influence***.

***Chlid of** menú de constraints. Haz keyframe en la influencia para activarla y desactivarla.*

{% hint style="info" %}
**💡¡Consejo de animación!** Si usas el control deslizante para apagar la Influence, el prop no mantendrá su posición anterior, lo que dificultará mantener la animación fluida. Para evitar tener que corregir manualmente la posición, en lugar de usar el control deslizante, haz clic en la X junto a Influence, establece un keyframe en ella y otro en todos los atributos de transform. De esta manera, el prop mantendrá la misma posición que cuando la Influence estaba activada.
{% endhint %}

{% hint style="info" %}
**💡Consejo de animación**

¡No dejes el prop visible desde el principio! Para evitar revelar lo que va a pasar y una transición abrupta, empieza la animación con el prop escalado a 0.001 y solo llévalo a 1 cuando quieras que aparezca. Recuerda volver a reducirlo a 0 al final de la acción. ¡Esto hará que las transiciones sean mucho más fluidas y geniales!
{% endhint %}

### Animation Slots

Blender 4.4 introdujo una nueva función: animation slots. Según la documentación de Blender, “el propósito de los slots es permitir que una action almacene datos de animación distintos para múltiples data-blocks”. En resumen, los slots hacen posible almacenar la animación de varias cosas en la misma Action. ¿Cómo afecta esto a emotes 2.0?

Nueva función de Blender 4.4: animation slots.

Aunque es posible que el avatar y el prop compartan el mismo action clip, debido a la convención de nombres y al número de clips de animación involucrados en Emotes 2.0, no funcionará. Así que el flujo para esto sería:

1. Crea un animation clip para el avatar, o renombra el proporcionado (***Starting\_Pose***). Ya tiene un animation slot, pero si quieres puedes usarlo (***Avatar\_Animation***) o crear uno nuevo.
2. Renombra el animation clip ***AnimationName\_Avatar***
3. Crea un animation clip para el prop y renómbralo ***AnimationName\_Prop***
4. Haz Click en ***New*** botón para crear un animation slot para él (recibirá un nombre automático: ***Armature\_Prop***)
5. Anima como lo harías en versiones anteriores de Blender.

Creando un action clip y un slot para la animación del prop.

## **NLA Tracks**

Para que todas las animaciones se exporten, los clips deben añadirse a las NLA Tracks. Asegúrate de que solo haya un animation clip para el avatar y otro para el prop, **deben tener exactamente la misma cantidad de frames.**

En ***Object Mode***, selecciona el avatar armature, ve a ***Pose Mode***, selecciona el respectivo animation clip en el menú Browse Action, haz clic en ***Action*** y luego en ***Push Down*** .

Luego, vuelve a ***Object Mode***, selecciona el prop armature, ve a ***Pose mode***, selecciona el respectivo animation clip en el menú Browse Action, haz clic en ***Action*** y luego en ***Push Down*** .

Empujando actions hacia abajo a las NLA tracks.

{% hint style="warning" %}
⚠️ Ten cuidado al hacer push down de las actions. Asegúrate de seleccionar el armature deseado con la animación correspondiente. No cambies simplemente la animación y la empujes hacia abajo antes de seleccionar el otro armature, o terminarás asignando dos actions a un armature y ninguna al otro.
{% endhint %}

Las NLA tracks deberían verse así: una animación para cada armature.

{% hint style="info" %}
**🔥 Consejo de optimización**

**Antes de este paso, asegúrate de hacer una copia de seguridad de tu proyecto.**

Si tienes diferentes objetos para tus props, puedes fusionarlos en un solo mesh. Puedes hacerlo simplemente seleccionando los objetos y pulsando el atajo ctrl + J.

Esto ayudaría a reducir los draw calls en el juego, haciendo que el emote rinda mejor.

Ten en cuenta que esto no funcionará para particles.

*Selecciona los objetos y pulsa `Ctrl+J` para fusionarlos.*
{% endhint %}

## **Exportando**

Los Emotes 2.0 se exportan de la misma manera que los emotes comunes. Asegúrate de que solo el avatar armature, el prop armature y los prop meshes estén visibles y oculta todo lo demás.

Ten visibles solo el avatar armature, el prop armature y el prop mesh para exportar.

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

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

|   |   |
| - | - |

Haz clic en Export y ¡listo!

## **Añadir audio a los Emotes**

### Formato y limitaciones para los audio clips

* El formato correcto para exportar sonidos para tus emotes es `.mp3` y `.ogg`.
* El audio clip debe tener la misma duración que el emote.
* Aunque no hay una limitación de tamaño para el audio, el emote con props y sonidos no puede superar los 3mb.

{% hint style="info" %}
**📔 Nota**: Si el emote tiene sonido (mp3 o ogg), debe comprimirse junto con el .glb. Después de eso, solo arrastra y suelta el .zip en el builder. Puedes encontrar más detalles aquí: [Subir emote con sonido](/creator/content-creator-es/wearables-y-emotes/gestionar-colecciones/uploading-emotes.md#uploading-emotes-using-a-zip-file)
{% endhint %}

{% hint style="info" %}
**💡 ¡Atención!** Ten en cuenta que los audio clips usados en el emote deben ser IP (Intellectual Property) original, tener los derechos de reproducción y seguir los [Content Policy](https://decentraland.org/content/)criterios.
{% endhint %}

### Editando sonidos

Para añadir sonidos a tus emotes puedes hacerlo de distintas maneras:

1. **Edita tus sonidos directamente en Blender**

Una forma de añadir sonidos a tus emotes es usando el video sequencer editor que proporciona Blender.

Para empezar a añadir sonidos ve a *Editor Type> Video Sequencer.*

Arrastra y suelta tus sonidos en la interfaz de channels.

Pulsa el atajo `N` para ver más opciones para gestionar tus sonidos, como mostrar la waveform, convertir tus sonidos a Mono o cambiar el volume.

{% hint style="info" %}
Si quieres hacer fade in y fade out, puedes hacerlo simplemente añadiendo keyframes de 0 a 1 y viceversa a la propiedad volume.
{% endhint %}

Una vez que hayas terminado de editar tus sonidos, puedes exportarlos yendo a *Render> Render Audio*. En la opción de exportación necesitas seleccionar `.mp3` o `.ogg` format en la *Container* sección y luego *Mixdown*. **Solo se exportará el audio dentro del frame range.**

2. **Renderiza la animación y añade sonido con un software de edición de sonido**

Aunque editar sonidos directamente en Blender puede ser conveniente, no es muy flexible porque el software no está enfocado principalmente en la edición de sonido. Las herramientas disponibles son muy básicas. Si quieres dar un toque más profesional a tus sonidos, te recomendamos usar un software de edición de sonido especializado de tu elección.

Hay varias opciones de software que puedes usar, como [Audacity](https://www.audacityteam.org/) (Free and OpenSource), Adobe Audition, Ableton Live o ProTools. Usar software de edición de sonido especializado te proporcionará una gama más amplia de herramientas, funcionalidades y efectos de sonido, permitiéndote mejorar tus sonidos y darles un aspecto más profesional.

Para renderizar tu emote, simplemente puedes añadir una camera a tu escena de Blender y posicionarla de manera que puedas ver todos los elementos lo más claramente posible para luego tener una buena referencia para añadir sonidos.

Al renderizar un emote, es importante incluir solo el frame range de tu emote y nada más. Elige una aspect ratio que se ajuste a tus necesidades y selecciona la carpeta de salida donde quieres que se guarde el video o la secuencia de imágenes.

{% hint style="info" %}
**¡Pista!**

*Antes de renderizar, asegúrate de hacer un render con low sampling para ahorrar tiempo en tu render.*
{% endhint %}

Una vez completado este paso, usa tu video como referencia para crear los sonidos correspondientes usando tu software de edición de sonido preferido. **Asegúrate de que la secuencia de video coincida con el framerate de la animación de 30 frames por second (fps)**


---

# Agent Instructions: 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:

```
GET https://docs.decentraland.org/creator/content-creator-es/wearables-y-emotes/emotes/props-and-sounds.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
