# Criar Emotes

Esta documentação abordará as especificações do arquivo, o básico de animação no Blender, a forma correta de exportar um Emote e como importá-lo no Builder.

#### Tabela de Especificações de Animação

| Taxa de quadros              | 30 fps                                  |
| ---------------------------- | --------------------------------------- |
| Duração máxima               | 10 segundos (300 quadros)               |
| Animações por arquivo        | 1                                       |
| Formato de exportação        | .glb                                    |
| Taxa de amostragem           | 1 por padrão (2 ou 3, se necessário)    |
| Tamanho máximo do arquivo    | 1 MB                                    |
| Distância máxima da animação | 1 metro (frente/trás, esquerda/direita) |
| Altura máxima da animação    | 4 metros                                |

Você pode encontrar uma explicação mais detalhada das especificações da animação [**abaixo**](#the-animation-specifications).

### **Recursos**

Esta documentação explica a configuração do Rig 1.0, seus controles e funcionalidades.

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

{% hint style="info" %}
Se você estiver usando Maya, você pode baixar este [Maya Rig](https://github.com/decentraland/docs/blob/main/images/emotes/DCL_Maya_Rig.ma) e [seletor](https://github.com/decentraland/docs/blob/main/images/emotes/emoteAvatar.pkr) fornecido por [SparkleStudios](https://www.sparkles.studio/) ❤️.
{% endhint %}

## **Antes de começar**

### **Taxa de quadros**

Antes de começar, é importante verificar a taxa de quadros. As animações do Decentraland devem ter uma taxa de quadros de 30 fps. O arquivo do rig fornecido provavelmente já vem configurado assim, mas como o valor padrão do Blender é 24 fps, é melhor conferir antes de começar (uma taxa de quadros incorreta afetará a velocidade da animação). Essa opção pode ser encontrada em Output Properties (o ícone de impressora), em Format, como mostrado abaixo:

![Certifique-se de que a taxa de quadros esteja definida para 30 fps antes de começar.](https://raw.githubusercontent.com/decentraland/documentation-creators/main/images/emotes/framerate.png)

Certifique-se de que a taxa de quadros esteja definida para 30 fps antes de começar.

### **Pose Mode**

No Blender, um rig pode ser visualizado em três modos diferentes: Object Mode, Edit Mode e Pose Mode. As animações só podem ser feitas em Pose Mode (nesse modo, os controles têm cores). Com o rig selecionado, você encontrará essa opção em um menu suspenso, no canto superior direito.

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

Mudando para Pose Mode.

### **Interface para animações**

No arquivo do rig, além das duas janelas da viewport (vista frontal e lateral), há mais três na parte inferior: um ***Graph Editor***, ***um Dope Sheet***, e uma ***Timeline***.

* ***Graph Editor***: Neste editor, é possível editar as curvas de animação de cada propriedade de transform dos controles selecionados. Essas curvas mostram como a interpolação está sendo calculada e podem ser editadas para atingir o efeito desejado na animação. Aqui e no dope sheet, a ferramenta ***Only Show Selected*** está ativada, o que significa que ela incluirá apenas os canais relacionados ao controle selecionado. Isso pode ser ligado e desligado simplesmente clicando no ícone de seta.
* ***Dope Sheet***: Aqui você pode editar os keyframes. É também aqui que você pode criar novas animações ou navegar entre as várias que foram criadas. Tenha em mente que, para ter acesso à animação, o ***Action Editor*** deve ser selecionado. Essa opção fica logo ao lado do ícone *Dope Sheet* , em um menu suspenso.
* ***Timeline***: É aqui que a timeline e os controles de reprodução são encontrados. Aqui, o ***Auto Keying*** está ativado, o que significa que toda vez que um controle é manipulado, um keyframe é criado automaticamente. Você sempre pode desativar essa função clicando no ponto ao lado dos controles de reprodução.

Com este workspace, você tem tudo o que é necessário para começar a animar!

![](/files/375779a33a0e771c4d27e52eb5bc25b311983525)

Essas são as janelas inferiores. A de cima está no ***Graph Editor,*** a do meio está no ***Dope Sheet,*** e a de baixo é a ***Timeline.*** A seta vermelha de cima mostra a ferramenta ***Only Show Selected*** e a de baixo mostra a ***Auto Keying***.

{% hint style="info" %}
**💡 Dica!**

Como o Blender é altamente personalizável, este também é um bom momento para configurar o layout que melhor se adapte a você, adicionando, ajustando ou removendo janelas. Cada animator tem suas próprias preferências, então sinta-se à vontade para editar o layout como quiser!
{% endhint %}

## Primeiros passos

#### **Pose inicial**

No arquivo do rig fornecido, já existe uma action, a ***Starting\_Pose***. Considerando que todas as ações do avatar começam a partir da pose idle, **nós realmente incentivamos começar sua animação a partir dessa pose e também usá-la novamente no último frame**. Isso proporcionará uma transição melhor de Idle para Emote e uma animação mais fluida.

{% hint style="info" %}
**💡 Dica!**

Se você quiser fazer uma animação em loop, não precisa começar a animação a partir da Starting Pose. Sinta-se à vontade para usar a pose que fizer mais sentido na sua animação!\*\*
{% endhint %}

**Área de animação**

No arquivo do avatar fornecido, você encontrará uma collection chamada ***Animation\_Area\_Reference***. Ela consiste em três objetos que ajudarão visualmente a definir os limites da animação: ***Animation\_Area\_Reference***, ***Ground\_Reference*** e ***Root\_Animation\_Area***.

* Animation\_Area\_Reference é um cubo 4x4, que é a bounding box. A mesh do avatar e os props devem permanecer dentro dessa área durante toda a animação. Os props podem ser movidos livremente, desde que permaneçam dentro da área do cubo.
* Ground\_Reference é um plano fornecido para ajudar a verificar se há penetração no chão durante a animação. Ele também contém informações importantes: o círculo menor, que tem um diâmetro de 2 metros, define a área onde a root do avatar pode ser movida. Isso significa que, enquanto estiver no chão, o avatar só pode se mover 1 metro em cada direção: frente, trás, esquerda e direita.
* Root\_Animation\_Area é um cilindro que define a área onde você pode mover a root/centro de gravidade do avatar (CTRL\_Avatar\_UpperBody ou Avatar\_Hips). O cilindro tem 4 metros de altura, o que significa que a root pode subir até o topo, desde que nenhuma mesh esteja fora da bounding box. As pernas, braços e outras partes do corpo do avatar podem ficar fora do cilindro, desde que nunca estejam fora de Animation\_Area\_Reference.

![Referência da área de animação.](/files/086dfd1f848fa3109068d352a82a407003d0d36a)

Em resumo, o avatar pode se mover para a direita, esquerda, frente e trás, contanto que a root permaneça dentro do cilindro, o que significa 1 metro em qualquer uma das quatro direções.

![Movimento do avatar.](/files/82e284609b5e5d97cdea4cf2c8a7197c0754941e)

Quanto à altura, ela pode subir até o máximo (4 metros), desde que o avatar permaneça dentro da bounding box. Abaixo estão alguns casos de altura do avatar feitos corretamente (corpo inteiro dentro da bounding box) e alguns feitos incorretamente (mesh fora da bounding box).

| ![](/files/efb6be0fe3d530987825f15184f7db8a41794e7f) | ![](/files/1bf9516cbe89ae47bd5be292d7b03490ee86cd5e) |
| ---------------------------------------------------- | ---------------------------------------------------- |

| ![](/files/49fdb0476a9f857ac593d99c554a7f13327bcf77) | ![](/files/701558fa267531c863caf09ee08ae77ca26d23bb) |
| ---------------------------------------------------- | ---------------------------------------------------- |

![](/files/6100464529a44d046754dc4df178b1c24d35baff)

Aqui estão alguns exemplos de emotes que estão dentro dos limites da área de animação.

| ![](/files/383cc5236eb646e925a866a6a88c8bb2ac8efee9) | ![](/files/cfb80ccc5f84390edfdbcf611caa99083cdf6550) |
| ---------------------------------------------------- | ---------------------------------------------------- |

{% hint style="info" %}
**💡 Atenção!**

Fique atento a esses limites, porque ultrapassá-los pode causar problemas de gameplay.
{% endhint %}

## **Criando uma animação**

O arquivo blend já tem um clip de animação pronto para ser editado: *StartingPose\_Avatar*. Você pode duplicar e renomear esse clip de animação como preferir. Não há necessidade de criar um do zero!

Na *Browse Action* seção, basta clicar no ***Create A New Action*** botão para duplicar a animação atual. Para renomear o clip, basta clicar no texto e digitar outro nome.

Blender 4.4 introduziu *Slotted Actions*, o ícone à direita da seção *Browse Action* das versões anteriores. Não há necessidade de mexer nisso se você estiver criando um emote sem prop, então você pode simplesmente deixá-lo como está. Se você estiver animando o avatar, certifique-se de que a slotted action seja Avatar\_Animation.

![](/files/4f7d104a8c509b38516b39c65eafc3a901b9a4f6)

Crie uma nova animação duplicando a existente ou clicando em ***Unlink Action*** e depois em ***New***.

### **Navegando e excluindo animações**

No Blender, você pode ter várias tracks de animação no mesmo arquivo. É possível navegá-las clicando no menu suspenso Browse Action. Todas as animações com F (Fake User) serão salvas. Para excluir uma animação, pressione Shift no teclado e clique no X. Depois disso, a animação mostrará um 0 ao lado, o que significa que ela será excluída na próxima vez que você fechar o Blender ou reabrir o arquivo.

![](/files/94d0efe47b30e75cbf927886e3df1e11b4fc5f14)

Navegando pelas animações: as que têm um F serão salvas, e as que têm 0 serão excluídas.

Outra forma de excluir animações sem precisar recarregar o Blender é mudar o Display Mode de View Layer para Blender File. Expanda Actions e exclua qualquer animação indesejada clicando com o botão direito sobre ela e selecionando Delete.

![](/files/613e93313c0fcbce49ccb332bf8a7ed26b45326f)

Você pode excluir animações diretamente de Blender File em Display Mode no outliner.

{% hint style="info" %}
**💡 Dica!**

Não edite sempre a mesma track de animação. Antes de fazer mudanças grandes, simplesmente duplique a animação. Assim, você terá uma versão de backup caso se arrependa de apagar ou mudar algo. Essa também é uma boa forma de acompanhar o progresso feito até agora!
{% endhint %}

![](/files/ca6e0a17ebfadea79c42ef67d8294a024a896042)

Duplicando clips de animação.

### **Nomeação**

**O nome de uma animação deve começar com letra maiúscula e, se o nome tiver mais de uma palavra, as palavras devem ser separadas por \_.** Não use espaços nem caracteres especiais. Aqui estão alguns exemplos de nomeação:

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

### **Emote Overrides**

Emote overrides acontecem quando os bones de deformação não têm um keyframe definido em um dos parâmetros. Sem um keyframe, esse bone não terá a informação de onde deve estar, quanto foi rotacionado e escalado, deixando esse canal aberto. A consequência é que, se você reproduzir um emote no mundo e depois disparar o seu enquanto o anterior ainda estiver tocando, as informações de localização, rotação e escala serão sobrescritas pelo emote anterior, o que causará uma combinação dos dois. A menos que isso seja feito de propósito, isso afetará sua animação — às vezes com um resultado divertido, mas outras vezes deixando o emote completamente bagunçado. Abaixo há um exemplo de um emote override.

![](/files/c734cc91c3ac617e1fc599f6b18d63305e698d41)

Para evitar isso, selecione todas as layers que contenham bones (que podem ser encontradas em ***Object Data Properties*** > ***Skeleton*** > ***Layers***). Então, em ***Pose Mode***, deixe o cursor da timeline no primeiro frame da sua animação e, com o mouse em ***Viewport Display***, pressione ***A*** para selecionar tudo. Em ***Graph Editor***, clique duas vezes no ícone ***Eye*** ao lado do canal da armature para tornar todos os canais visíveis. Com todos os bones selecionados, pressione ***I*** para definir um keyframe. Faça o mesmo no último frame.

**Certifique-se de selecionar os bones de deformação; isso é especialmente importante!** Os bones de deformação podem ser encontrados na última layer inferior e são mostrados como bones verdes na ***Viewport***.

![](/files/dcb2d7dbb2225cf1f411ed1c6529ab284aae535c) Definir keyframes em todos os bones nos primeiros e últimos frames evita emote overrides.

## **As Especificações da Animação**

### **A Duração da Animação**

A duração máxima de uma animação é **10 segundos** ou **300 frames**. Lembre-se de definir keyframes das propriedades de cada controle no primeiro e no último frame.

{% hint style="warning" %}
⚠️ Canais com a visibilidade desativada no Graph Editor não terão keyframes, serão excluídos ou sequer serão mostrados no Action Editor. A menos que isso tenha sido feito intencionalmente, preste atenção extra à visibilidade.
{% endhint %}

![](/files/e3add127973befee5d423af06a4cb8f6179818ec)

Torne os canais visíveis antes de definir keyframes!

### **Número de animações**

Se for um emote padrão (sem prop), o arquivo exportado só pode ter uma animação. Para emotes 2.0, você pode ter um clip para o avatar e um clip para o prop. Se animações foram duplicadas durante o processo, certifique-se de excluir todas antes de exportar. Mantenha apenas a versão final. Emotes em sequência que precisam de muitas animações para funcionar (action start, action loop e action end) não são suportados no momento.

### **Formato**

As animações devem ser exportadas como .**GLB**. O arquivo só pode conter o esqueleto de deformação e a animação. **Mesh, controles e qualquer outro objeto não devem ser exportados**. Mais detalhes sobre como exportar podem ser encontrados [**abaixo**](#exporting).

### **Amostragem**

Como constraints não podem ser exportadas, a única forma de exportar o clip de animação é fazendo baking, o que significa que todas as posições, rotações e escalas dos bones de deformação serão keyframed em cada frame da animação. Se o clip for muito longo, como até 300 frames, ele terá 300 keyframes depois da exportação, e quanto mais keyframes houver, mais pesado o arquivo fica.

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 **a amostragem NÃO divide o número de frames da animação pela taxa de amostragem**.

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

{% hint style="info" %}
**💡 Dica!**

Se o número de frames da animação puder ser dividido pela taxa de amostragem, isso é ótimo! Significa que o frame final será baked, preservando a transição do fim para o início da animação.
{% endhint %}

### **Tamanho do arquivo**

O tamanho máximo do arquivo é **3 MB**. Se o arquivo ficar acima disso após a exportação, tente verificar se a mesh não foi exportada por acidente ou se a animação não passa de 10 segundos. Se ainda estiver acima de 3 MB, tente experimentar com a Taxa de amostragem, pois valores mais altos melhorarão a otimização.

Se o emote contiver quaisquer modelos 3D adicionais, as textures desses modelos não podem exceder um tamanho de 1024 pixels.

## **Exportando**

Como queremos que apenas a armature e a animação sejam exportadas, desative a visibilidade da mesh e de qualquer objeto que não seja a armature antes de exportar, como mostrado abaixo:

![](/files/f6306c7448038425cf94602ee0f0dcf494ca8ab0)

Desative a visibilidade da mesh antes de exportar!

Para exportar, vá para *File* > *Export* > *glTF2.0 (.glb, .gltf)*

![](/files/ed6602e08d7520190b4c25febd4ed6420e3bdbe2)

Nas configurações de exportação, expanda Include e, em Limit to, ative Visible Objects. Em seguida, expanda a aba Data, expanda Armature e habilite Export Deformation Bones Only.

| ![](/files/7d889f7778a92ec0c47c5b9d66759936dedae0ab) | ![](/files/80a2575e0f142df86a11bfc04a2c6f3f2beeb0e7) |
| ---------------------------------------------------- | ---------------------------------------------------- |

Se você precisar amostrar a animação, expanda a aba Animation, expanda Sampling Animations e escolha o número de samples desejado.

| ![](/files/7e4262cfe49844479ddc85afb3ed3da3d3cf3219) | ![](/files/2af2732095cdd282f7b074cdde9ead0aabb34397) |
| ---------------------------------------------------- | ---------------------------------------------------- |

É isso para exportar a animação!

## Referências

Se você ainda não tem certeza de onde começar ou precisa de alguma referência ou inspiração, aqui estão alguns clips de animação para te ajudar com isso. Eles podem ser um ótimo material de estudo!

[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: 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/wearables-e-emotes/emotes/creating-emotes.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.
