> 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-pt/modelacao-3d-e-animacoes/animations.md).

# Animações

Saiba como criar animações que podem ser incorporadas em modelos 3D importados para o Decentraland.

A animação é a arte de dar vida às coisas. E não há maneira melhor de tornar sua cena mais viva do que adicionar algumas animações aos seus modelos 3D.

{% hint style="info" %}
**💡 Dica**: Instale o [plugin Decentraland Tools Blender](https://extensions.blender.org/add-ons/decentraland-tools/). Inclui várias funções úteis para o ajudar a editar e exportar modelos 3D, wearables e Emotes.
{% endhint %}

Há algumas maneiras de fazer isso: por meio de **animação de objeto**, por meio de um **rig (animação esquelética)**, ou usando **shape keys (animação de morph target)**.

**Animação de objeto** é a melhor opção para modelos simples, como uma bola quicando, um globo girando ou uma cadeira flutuante, e não precisa de uma armature. É importante mencionar que a animação de objeto é diferente da **animação de vértices**. Na animação de objeto, o modelo será animado como um todo, enquanto na animação de vértices cada vértice do objeto pode ser animado separadamente.

**Shape keys (também conhecidas como morph targets ou blend shapes)** são uma forma de animação de vértices que é **suportada pelo engine da Decentraland**. Elas são particularmente úteis para expressões faciais, lip sync ou qualquer deformação que seja difícil de alcançar apenas com bones. As animações de shape key incorporadas em um arquivo glTF/GLB serão reproduzidas no mundo exatamente como animações esqueléticas ou de objeto.

Se você tiver um modelo mais complexo, como uma pessoa, criatura ou maquinaria, então vai precisar de um **rig**. Um rig nada mais é do que um esqueleto digital que irá mover e deformar o mesh. O processo de vincular o mesh ao esqueleto é chamado de Skinning, no qual você define qual bone irá afetar cada grupo de vértices e quão forte será essa influência, garantindo que o modelo se deforme da melhor maneira possível.

Para qualquer um dos métodos, porém, todas as animações de um modelo 3D devem estar incorporadas dentro do seu *glTF* arquivo, já que você não pode referenciar animações em arquivos separados.

## Criando uma Animação

Veja como criar animações usando o Blender.

### Animação de objeto

* Certifique-se de que você tem a aba ***Dope Sheet*** > ***Action Editor*** aberta e clique em ***New*** para adicionar um clipe de animação.
* Renomeie-o como achar melhor e certifique-se de ativar ***Fake User*** (o ícone do escudo) para que sua animação seja salva.
* Defina um keyframe no primeiro frame selecionando o objeto e pressionando ***I***. Depois mova o objeto, gire-o ou altere sua escala e, em outro frame na timeline, pressione ***I*** novamente para definir outro keyframe com as transformações atuais.
* O frame final da animação deve ser igual ao primeiro, então basta copiar o primeiro frame e colá-lo no último.

![](https://2402076176-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)

*Criando um clipe de animação e adicionando keyframes.*

### Animação de Rig

Para uma animação de rig, você vai precisar de uma armature. Se quiser fazer isso sozinho, veja [Create a Rig](https://www.notion.so/686e6f59a1604585b059f990a36b2d55) para instruções de como configurar uma armature consistente.

Quando o rigging estiver concluído e o skinning tiver boas deformações, você estará pronto para começar sua animação! O processo é muito semelhante ao de Object Animation, mas em vez de fazê-lo em ***Object Mode***, você irá animá-lo em ***Pose Mode***.

* Vá para ***Pose Mode*** e certifique-se de que você tem a ***Dope Sheet*** > ***Action Editor*** aberta e clique em ***New*** para adicionar um clipe de animação.
* Renomeie-o como achar melhor e certifique-se de ativar ***Fake User*** (o ícone do escudo) para que sua animação seja salva.
* Com o mouse sobre a ***Viewport***, pressione ***Um*** para selecionar tudo e depois ***I*** para definir um keyframe para toda a armature.
* Vá para um frame diferente na timeline e manipule o bone como quiser para obter a pose desejada. Você pode alterar a posição, rotação e escala de um bone dependendo de como você configurou seu rig.
* Quando tiver um bom resultado, defina outro keyframe para toda a armature. Continue fazendo isso até terminar sua animação. Lembre-se de deixar o primeiro e o último frames iguais se a animação for repetir em loop.

![](https://2402076176-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)

Se você é novo no processo de animação, confira este tutorial com algumas dicas úteis para iniciantes:

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

## Animações Skinned vs Animações Transform

**As animações Transform normalmente são melhores do que as animações skinned mesh em termos de desempenho porque envolvem menos sobrecarga em termos de recursos computacionais necessários para exibir a animação.**

A animação skinned mesh envolve o uso de um mesh com um esqueleto de bones que são ponderados aos vértices do mesh. O esqueleto é animado, o que por sua vez anima o mesh. Esse processo pode ser bastante intenso computacionalmente, especialmente quando há um grande número de vértices para animar.

As animações Transform, por outro lado, envolvem animar diretamente as propriedades de Transform de um objeto (como sua posição, rotação e escala). Isso pode ser feito com menos recursos computacionais do que a animação skinned mesh, já que normalmente há menos propriedades de Transform para animar do que vértices em um mesh.

Além disso, as animações Transform muitas vezes podem ser pré-calculadas e armazenadas em um formato mais compacto, como dados de keyframe, que podem ser acessados e reproduzidos rapidamente sem a necessidade de cálculos intensivos em tempo real.

No geral, embora a animação skinned mesh possa produzir animações mais detalhadas e realistas, as animações Transform costumam ser preferidas para aplicações críticas de desempenho, como videogames.

## Criando e Exportando Vários Clips de Animação

Você pode ter quantos clips de animação quiser para o seu modelo. Você pode conferir como criar, navegar e excluir animações em [esta seção aqui](https://www.notion.so/5e962e5d54a24bcb9b906748007eb4cc).

No vídeo abaixo, você aprenderá como exportar várias animações do Blender em um único arquivo GLB.

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

## Exportando Muitas Animações como Uma Só

Ao contrário de uma animação esquelética, em que você pode fazer rig de vários objetos e combinar suas animações em um único clip de animação, na animação de objeto você não pode fazer isso. As animações serão exportadas separadamente e apenas um objeto será reproduzido por vez. Uma solução para isso é mesclar muitas animações em uma única, para que você tenha um clip de animação em que todos os objetos se movem ao mesmo tempo.

Para isso, envie para a ***Nonlinear Animation Track*** a animação de cada objeto, como mostrado abaixo.

![](https://2402076176-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)

*Envie a animação de cada objeto para a NLA Track.*

Assim que todas as animações estiverem listadas no NLA Editor, selecione todos os objetos, vá para **File > Export > glTF2.0**. Expanda Include e marque Selected Objects. Expanda Animation, expanda Animation novamente e desmarque **Group by NLA Track**. Você pode renomear o clip de animação em Merged Animation Name e então apenas pressionar **Export glTF 2.0**.

![](https://2402076176-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)

*Settings para exportar várias animações como uma só.*

Tenha em mente que isso só funcionará se os objetos tiverem apenas uma animação cada. Se os objetos tiverem vários clips de animação, é melhor exportá-los separadamente.

{% hint style="info" %}
**💡 Dica**: Em vez de criar suas próprias animações, você também pode baixar animações genéricas e aplicá-las ao seu modelo. Por exemplo, para personagens 3D com características humanas, você pode baixar animações gratuitas ou pagas do [Mixamo](https://www.mixamo.com/#/).
{% endhint %}

## Amostragem

Às vezes, o arquivo de animação pode acabar ficando pesado demais devido à quantidade de animações ou à combinação de animação+modelo.

A amostragem é uma boa forma de otimizar a animação. A taxa de amostragem definirá com que frequência um keyframe será feito bake na animação. Por exemplo, se a taxa de amostragem estiver definida para 2, isso significa que será criado um keyframe a cada dois fotogramas. Uma taxa de amostragem de 3 fará bake de um keyframe a cada três fotogramas e assim por diante. Quanto maior for a taxa de amostragem, mais leve será o ficheiro.

A desvantagem, porém, é que a animação começará a ficar cada vez menos fluida, já que perde alguns keyframes importantes (eles são distribuídos pela animação de forma desigual). Também é importante notar que **sampling NÃO é dividir o número de frames da animação pela taxa de sampling**.

Normalmente, uma **taxa de amostragem de 2 ou 3** faz o trabalho. Esses números podem otimizar a animação sem comprometer a qualidade.

Você pode encontrar o ***Taxa de amostragem*** nas configurações de exportação, em ***Animation***.

![](https://2402076176-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" %}
**💡 Dica**: Se o número de frames da animação puder ser dividido pela taxa de sampling, isso é bom! Significa que o frame final será baked, preservando a transição do fim para o início da animação.
{% endhint %}

## Implementando Animações

Este documento cobre como adicionar animações a um modelo 3D. Veja [**handle animations**](https://docs.decentraland.org/creator/development-guide/3d-model-animations/) para instruções sobre como ativar e lidar com animações em uma cena.

## Boas Práticas para Animações

* Mantenha a armature o mais simples possível; crie bones apenas para as partes do modelo que você pretende animar. Bones podem afetar o desempenho, então certifique-se de adicionar apenas o que for realmente necessário.
* Se a animação for repetir em loop na sua cena, certifique-se de que a pose final seja idêntica à inicial para uma transição melhor.
* Nunca deixe um personagem sem animação, mesmo que ele não esteja realmente fazendo nada. Crie uma animação "idle" para quando o personagem estiver parado. A idle pode incluir movimentos sutis, como respirar e talvez olhares ocasionais.
* Não deixe bones sem pose, como mãos, dedos, cabeça ou pescoço. Os detalhes são realmente importantes em uma boa animação e um movimento rígido só vai torná-la menos crível.
* Evite keyframes demais, a menos que isso seja extremamente necessário. Quanto mais keyframes você adicionar, maiores as chances de obter uma interpolação ruim e uma animação mais pesada.
* Selecione todos os seus bones (incluindo os que deformam) e defina um keyframe no primeiro e no último frames da sua animação. Isso evitará ter bones sem informação, fazendo com que uma animação afete a outra sem querer.
* Certifique-se de que seu arquivo tenha apenas uma armature quando exportá-lo. Ao importar animações, uma armature também será importada junto. Todas as animações devem ser realizadas pela mesma armature base, então exclua qualquer coisa que você não precise.
* Sempre renomeie seus bones e animações. Mantenha tudo organizado!
* Ao exportar o *glTF* modelo, confirme que você está exportando todos os objetos e animações. Alguns exportadores exportam apenas o ***atualmente selecionado*** por padrão.
* Depois de exportar o modelo, inspecione-o em [Babylon Sandbox](https://sandbox.babylonjs.com/) e verifique se todas as animações estão funcionando e com os nomes esperados.


---

# 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-pt/modelacao-3d-e-animacoes/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.
