> 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/modelado-y-animaciones-3d/animations.md).

# Animaciones

Aprende cómo crear animaciones que se puedan incrustar en modelos 3D importados a Decentraland.

La animación es el arte de dar vida a las cosas. Y no hay mejor manera de hacer que tu Scene sea más animada que añadiendo algunas animaciones a tus modelos 3D.

{% hint style="info" %}
**💡 Consejo**: Instala el [plugin 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 %}

Hay algunas formas de hacerlo: mediante **animación de objetos**, mediante un **rig (animación esquelética)**, o usando **shape keys (animación de morph targets)**.

**La animación de objetos**  es la mejor para modelos simples, como una pelota que rebota, un globo que gira o una silla flotante, y no necesita un armature. Es importante mencionar que la animación de objetos es diferente de **la animación de vertices**. En la animación de objetos, el modelo se animará como un todo, mientras que en la animación de vertices cada vertex del objeto puede animarse por separado.

**Shape keys (también conocidas como morph targets o blend shapes)**  son una forma de animación de vertices que están **soportadas por el engine de Decentraland**. Son especialmente útiles para expresiones faciales, lip sync o cualquier deformación que sea difícil de lograr solo con bones. Las animaciones de shape key incrustadas en un archivo glTF/GLB se reproducirán en el mundo igual que las animaciones esqueléticas o de objetos.

Si tienes un modelo más complejo, como una persona, una criatura o maquinaria, entonces necesitarás un **rig**. Un rig no es más que un esqueleto digital que moverá y deformará el mesh. El proceso de vincular el mesh al esqueleto se llama Skinning, donde defines qué bone afectará a cada grupo de vertices y qué tan fuerte será esa influencia, asegurando que el modelo se deforme de la mejor manera posible.

Sin embargo, para cualquiera de los dos métodos, todas las animaciones de un modelo 3D deben estar incrustadas dentro de su *glTF*  archivo, ya que no puedes referenciar animaciones en archivos separados.

## Creando una animación

Así es como creas animaciones usando Blender.

### Animación de objetos

* Asegúrate de tener la ***Dope Sheet*** > ***Action Editor*** pestaña abierta y haz clic en ***New*** para añadir un clip de animación.
* Renómbralo como prefieras y asegúrate de activar ***Fake User*** (el ícono del escudo) para que tu animación se guarde.
* Establece un keyframe en el primer frame seleccionando el objeto y presionando ***I***. Luego mueve el objeto, gíralo o escálalo y, en otro frame de la timeline, presiona ***I*** de nuevo para establecer otro keyframe con los transforms actuales.
* El frame final de la animación debería ser igual al primero, así que simplemente copia el primer frame y pégalo en el último.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-efdf5b9c23ab8b9fe1c9dba379a9f19927fca580%2F01_object_animation_02.gif?alt=media\&token=36d8ed74-3fa5-4df8-bef2-fe2d6b265396)

*Creando un clip de animación y añadiendo keyframes.*

### Animación con rig

Para una animación con rig, necesitarás un armature. Si quieres hacerlo tú mismo, consulta [Crear un rig](https://www.notion.so/686e6f59a1604585b059f990a36b2d55) para obtener instrucciones sobre cómo configurar un armature coherente.

Cuando el rigging está listo y el skinning produce buenas deformaciones, ¡estás listo para empezar tu animación! El proceso es muy similar a la Animación de objetos, pero en lugar de hacerlo en ***Object Mode***, lo animarás en ***Pose Mode***.

* Ve a ***Pose Mode*** y asegúrate de tener la ***Dope Sheet*** > ***Action Editor*** pestaña abierta y haz clic en ***New*** para añadir un clip de animación.
* Renómbralo como prefieras y asegúrate de activar ***Fake User*** (el ícono del escudo) para que tu animación se guarde.
* Con el mouse sobre la ***Viewport***, presiona ***Un*** para seleccionar todo y luego ***I*** para establecer un keyframe en todo el armature.
* Muévete a un frame diferente en la timeline y manipula el bone como quieras para obtener la pose que deseas. Puedes cambiar la ubicación, rotación y escala de un bone dependiendo de cómo hayas configurado tu rig.
* Cuando tengas un buen resultado, establece otro keyframe para todo el armature. Sigue haciendo eso hasta que termines tu animación. Recuerda que el primer y el último frame deben ser iguales si la animación va a hacer loop.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-56d38d4203ef345849a93c8bfe86ec7c517342cd%2F02_rig_animation_02.gif?alt=media\&token=c8df4f01-b0a7-402a-9a98-12df37364547)

Si eres nuevo en el proceso de animación, mira este tutorial con algunos buenos consejos para principiantes:

[![Video Preview](https://img.youtube.com/vi/-iWslh4uQIk/maxresdefault.jpg)](https://youtu.be/-iWslh4uQIk)

## Animaciones con skinned mesh vs Animaciones de Transform

**Las animaciones de Transform suelen ser mejores que las animaciones de skinned mesh en términos de rendimiento porque implican menos sobrecarga en términos de recursos computacionales necesarios para mostrar la animación.**

La animación de skinned mesh implica usar un mesh con un skeleton de bones que están ponderados a los vertices del mesh. El skeleton se anima, lo que a su vez anima el mesh. Este proceso puede ser bastante intensivo desde el punto de vista computacional, especialmente cuando hay un gran número de vertices que animar.

Las animaciones de Transform, por otro lado, implican animar directamente las propiedades Transform de un objeto (como su posición, rotación y escala). Esto puede hacerse con menos recursos computacionales que la animación de skinned mesh, ya que normalmente hay menos propiedades Transform que animar que vertices en un mesh.

Además, las animaciones de Transform a menudo pueden precalcularse y almacenarse en un formato más compacto, como datos de keyframes, que se pueden acceder y reproducir rápidamente sin necesidad de cálculos intensivos en tiempo real.

En general, aunque la animación de skinned mesh puede producir animaciones más detalladas y realistas, las animaciones de Transform suelen preferirse para aplicaciones críticas en rendimiento, como los videojuegos.

## Creación y exportación de varios clips de animación

Puedes tener tantos clips de animación como quieras para tu modelo. Puedes consultar cómo crear, explorar y eliminar animaciones en [esta sección aquí](https://www.notion.so/5e962e5d54a24bcb9b906748007eb4cc).

En el video de abajo, aprenderás cómo exportar varias animaciones desde Blender en un solo archivo GLB.

[![Video Preview](https://img.youtube.com/vi/YxAB4bujO_w/maxresdefault.jpg)](https://www.youtube.com/watch?v=YxAB4bujO_w\&ab_channel=Decentraland)

## Exportar muchas animaciones como una sola

A diferencia de una animación esquelética, donde puedes hacer rigging de varios objetos y combinar sus animaciones en un solo clip de animación, en la animación de objetos no puedes hacerlo. Las animaciones se exportarán por separado y solo un objeto se reproducirá a la vez. Una solución para esto es fusionar muchas animaciones en una sola, de modo que tengas un clip de animación que tenga todos los objetos moviéndose al mismo tiempo.

Para hacer eso, desplaza hacia abajo a la ***Nonlinear Animation Track*** la animación de cada objeto, como se muestra abajo.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-202a85c0ab83178cd4cab88cd54cea29d5741928%2F03_object_animation_push_down_02.gif?alt=media\&token=aa794d1f-2457-4b80-9533-db1aa11f5d72)

*Desplaza hacia abajo la animación de cada objeto a la NLA Track.*

Una vez que todas las animaciones estén listadas en el NLA Editor, selecciona todos los objetos, ve a **File > Export > glTF2.0**. Despliega Include y marca Selected Objects. Despliega Animation, vuelve a desplegar Animation y desmarca **Group by NLA Track**. Puedes renombrar el clip de animación en Merged Animation Name y luego simplemente presionar **Export glTF 2.0**.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-07d1d6ede0e3413282e94383abfc8f51cedfc722%2F04_export_single_animation_clip.png?alt=media\&token=a13e6ca7-62e0-48f0-be63-1351fc82de04)

*Ajustes para exportar varias animaciones como una sola.*

Ten en cuenta que esto solo funcionará si los objetos tienen una sola animación cada uno. Si los objetos tienen varios clips de animación, es mejor exportarlos por separado.

{% hint style="info" %}
**💡 Consejo**: En lugar de crear tus propias animaciones, también puedes descargar animaciones genéricas y aplicarlas a tu modelo. Por ejemplo, para personajes 3D con características humanas, puedes descargar animaciones gratuitas o de pago desde [Mixamo](https://www.mixamo.com/#/).
{% endhint %}

## Muestreo

A veces, tu archivo de animación puede terminar siendo demasiado pesado debido a la cantidad de animaciones o a la combinación de animación+modelo.

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

Sin embargo, el inconveniente es que la animación empezará a ser cada vez menos fluida, ya que pierde algunos keyframes importantes (se distribuyen a lo largo de la animación de forma desigual). También es importante notar que **el sampling NO consiste en dividir el número de frames de la animación por la tasa de sampling**.

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

Puedes encontrar el ***Tasa de muestreo*** en los ajustes de exportación, bajo ***Animation***.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5bb9203e0a74492dfa68b1c7d3596c39baf62f95%2F05_sampling_rate.png?alt=media\&token=0c7dc5e2-3450-4508-ad0f-113626418059)

{% hint style="info" %}
**💡 Consejo**: Si el número de frames de la animación puede dividirse por la tasa de sampling, ¡eso es algo bueno! Significa que el frame final se horneará, preservando la transición del final al inicio de la animación.
{% endhint %}

## Implementación de animaciones

Este documento cubre cómo añadir animaciones a un modelo 3D. Consulta [**gestionar animaciones**](https://docs.decentraland.org/creator/development-guide/3d-model-animations/) para obtener instrucciones sobre cómo activar y gestionar animaciones en una Scene.

## Buenas prácticas para animaciones

* Mantén el armature lo más simple posible, crea solo bones para las partes del modelo que pretendes animar. Los bones pueden afectar al rendimiento, así que asegúrate de añadir solo lo que sea realmente necesario.
* Si la animación va a hacer loop en tu Scene, asegúrate de que la pose final sea idéntica a la inicial para una mejor transición.
* Nunca dejes a un personaje sin animación, incluso si en realidad no está haciendo nada. Crea una animación de "idle" para cuando el personaje esté quieto. El idle puede incluir movimientos sutiles como respirar y quizá miradas ocasionales.
* No dejes bones sin posar, como las manos, los dedos, la cabeza o el cuello. Los detalles son realmente importantes en una buena animación y un movimiento rígido solo hará que sea menos creíble.
* Evita demasiados keyframes, salvo que sea extremadamente necesario. Cuantos más keyframes añadas, mayores serán las posibilidades de obtener una mala interpolación y una animación más pesada.
* Selecciona todos tus bones (incluidos los que deforman) y establece un keyframe en el primer y último frame de tu animación. Esto evitará tener bones sin información, lo que haría que una animación afecte a la otra sin intención.
* Asegúrate de que tu archivo solo tenga un armature cuando lo exportes. Al importar animaciones, también se importará un armature con ellas. Todas las animaciones deben ser realizadas por el mismo armature base, así que elimina todo lo que no necesites.
* ¡Renombra siempre tus bones y animaciones. Mantén todo organizado!
* Al exportar el *glTF* modelo, confirma que estás exportando todos los objetos y animaciones. Algunos exportadores solo exportarán los ***actualmente seleccionados*** por defecto.
* Después de exportar el modelo, inspecciónalo en [Babylon Sandbox](https://sandbox.babylonjs.com/) y comprueba si todas las animaciones funcionan y tienen el nombre esperado.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/creator/content-creator-es/modelado-y-animaciones-3d/animations.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
