# Animações

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

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** é melhor para modelos simples, como uma bola quicando, um globo girando ou uma cadeira flutuando, e não precisa de um armature. É importante mencionar que a animação de objeto é diferente de **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 são **suportadas pelo engine da Decentraland**. 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, assim como animações esqueléticas ou de objeto.

Se você tiver um modelo mais complexo, como uma pessoa, criatura ou maquinaria, então você vai precisar de um **rig**. Um rig é nada mais do que um esqueleto digital que vai mover e deformar a mesh. O processo de vincular a mesh ao esqueleto é chamado de Skinning, onde você define qual bone afetará cada vertex group e quão forte essa influência será, garantindo que o modelo se deforme da melhor forma 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* file, já que você não pode referenciar animações em arquivos separados.

## Criando uma Animação

É assim que você cria animações usando o Blender.

### Animação de Objeto

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

![](/files/9b32ea76dc30ae98e10ea023c91f92fd588cf125)

*Criando um animation clip e adicionando keyframes.*

### Animação de Rig

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

Quando o rigging estiver pronto e o skinning tiver deformações boas, você está pronto para começar a sua animação! O processo é muito semelhante à Animação de Objeto, mas em vez de fazer isso em ***Object Mode***, você vai animá-la em ***Pose Mode***.

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

![](/files/78b7b1a47494cab1f0a3113514e1197f39c7c602)

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

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

## Animações com Skinning vs Animações de Transform

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

Animação de skinned mesh envolve usar uma mesh com um esqueleto de bones que são ponderados aos vértices da mesh. O esqueleto é animado, o que por sua vez anima a mesh. Esse processo pode ser bastante intensivo em termos computacionais, especialmente quando há um grande número de vértices para animar.

Animações de 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 animação de skinned mesh, já que normalmente há menos propriedades de transform para animar do que vértices em uma mesh.

Além disso, animações de 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 de skinned mesh possa produzir animações mais detalhadas e realistas, as animações de transform são frequentemente preferidas para aplicações críticas de desempenho, como video games.

## Criando e Exportando Múltiplos Animation Clips

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

No vídeo abaixo, você vai 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 riggar vários objetos e combinar suas animações em um único animation clip, 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, de modo que você tenha um animation clip com todos os objetos se movendo ao mesmo tempo.

Para fazer isso, arraste para baixo até a ***Nonlinear Animation Track*** a animação de cada objeto, como mostrado abaixo.

![](/files/d7fe4150349e81503f86b76fcbe4360df5eba258)

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

Depois 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 animation clip em Merged Animation Name e então apenas pressione **Export glTF 2.0**.

![](/files/9c9f893ea68757cf03fd85a78adcea464b73d1e5)

*Settings para exportar múltiplas 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 múltiplos animation clips, 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 de [Mixamo](https://www.mixamo.com/#/).
{% endhint %}

## Amostragem

Às vezes, o seu 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á baked na animação. Por exemplo, se a taxa de amostragem estiver definida como 2, isso significa que um keyframe será criado a cada dois frames. Uma taxa de amostragem de 3 fará bake de um keyframe a cada três frames, e assim por diante. Quanto maior a taxa de amostragem, mais leve o arquivo.

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** resolve o problema. 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***.

![](/files/7e42734b70c4d95bc2be4d4adfcf2d69e4885780)

{% hint style="info" %}
**💡 Dica**: Se o número de frames da animação puder ser dividido pela taxa de sampling, isso é uma boa coisa! 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 em 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 scene.

## Melhores Práticas para Animações

* Mantenha o armature o mais simples possível, crie apenas bones 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 fazer loop na sua scene, 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. O 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. Detalhes são realmente importantes em uma boa animação e um movimento rígido só a tornará menos crível.
* Evite keyframes demais, a menos que 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 nos frames inicial e final da sua animação. Isso evitará ter bones sem informação, fazendo com que uma animação afete a outra inadvertidamente.
* Certifique-se de que o seu file tenha apenas um armature quando você exportá-lo. Ao importar animações, um armature também será importado com ela. Todas as animações devem ser executadas pelo mesmo armature base, então delete tudo o que você não precisar.
* Sempre renomeie seus bones e animações. Mantenha tudo organizado!
* Ao exportar o *glTF* model, confirme que você está exportando todos os objetos e animações. Alguns exporters exportarão apenas o ***currently selected*** 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 estão nomeadas como esperado.


---

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