Criando Emotes

Dicas e diretrizes para criar Emotes do Decentraland.

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.

Recursos

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

Decentraland Blender Rigarrow-up-right

circle-info

Se você estiver usando Maya, pode baixar este Maya Rigarrow-up-right e pickerarrow-up-right fornecido por SparkleStudiosarrow-up-right ❤️.

Antes de Começar

Taxa de Quadros

Antes de começar, é importante verificar a taxa de quadros. As animações de Decentraland devem ter uma taxa de quadros de 30 fps. O arquivo do rig fornecido provavelmente já está 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 da impressora) em Format, como mostrado abaixo:

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

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

Modo Pose

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.

Mudando para Pose Mode.

Interface para Animações

No arquivo do rig, além das duas janelas para a viewport (vista frontal e lateral), há mais três na parte inferior: um Graph Editor, um Dope Sheet, e um 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 alcançar o efeito desejado na animação. Tanto aqui quanto 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 ativado e desativado simplesmente clicando no ícone da seta.

  • Dope Sheet: aqui você pode editar os keyframes. Também é onde você pode criar novas animações ou percorrer as várias já criadas. Tenha em mente que, para ter acesso à animação, o Action Editor deve estar 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 sempre que um controle é manipulado ele cria automaticamente um keyframe. 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!

Essas são as janelas inferiores. A de cima está no Graph Editor, a do meio 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.

circle-info

💡 Dica!

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

Começando

Pose Inicial

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

circle-info

💡 Dica!

Se você quiser fazer uma animação em loop, não é necessário 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!**

Área de Animação

No arquivo de 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 malha 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 o root do avatar pode ser movido. 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 o root/centro de gravidade do avatar (CTRL_Avatar_UpperBody ou Avatar_Hips). O cilindro tem 4 metros de altura, o que significa que o root pode subir até o máximo, desde que nenhuma mesh fique fora da bounding box. As pernas, braços e outras partes do corpo do avatar podem ficar fora do cilindro, desde que nunca saiam do Animation_Area_Reference.

Referência da área de animação.

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

Movimento do avatar.

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

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

circle-info

💡 Atenção!

Cuidado com esses limites, porque ultrapassá-los pode causar problemas de gameplay.

Criando uma Animação

O arquivo blend já tem um clipe de animação pronto para ser editado: StartingPose_Avatar. Você pode duplicar e renomear esse clipe de animação como quiser. Não há necessidade de criar um do zero!

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

O 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 pode deixar como está. Se você estiver animando o avatar, certifique-se de que a slotted action seja Avatar_Animation.

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

Procurando e Excluindo Animações

No Blender, você pode ter várias trilhas de animação no mesmo arquivo. É possível procurá-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.

Procurando animações: as que tiverem um F serão salvas, e as que tiverem 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 elas e selecionando Delete.

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

circle-info

💡 Dica!

Nem sempre edite a mesma trilha de animação. Antes de fazer mudanças grandes, apenas duplique a animação. Assim você terá uma versão de backup caso se arrependa de excluir ou mudar algo. Essa também é uma boa forma de acompanhar o progresso feito até agora!

Duplicando clipes 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 deform bones não têm 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 estava sendo reproduzido, as informações de location, rotation e scale serão substituídas 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 está um exemplo de emote override.

Para evitar isso, selecione todas as layers com bones nelas (que podem ser encontradas em Object Data Properties > Skeleton > Layers). Então, em Modo Pose, 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 para o último frame.

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

Definir keyframes em todos os bones no primeiro e no último frame evita emote overrides.

As Especificações da Animação

A Duração da Animação

O comprimento máximo de uma animação é 10 segundos ou 300 quadros. Lembre-se de definir keyframes para as propriedades de todos os controles no primeiro e no último frame.

circle-exclamation

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 pode conter apenas uma animação. Para emotes 2.0, você pode ter um clipe para o avatar e um clipe para o prop. Se animações foram duplicadas durante o processo, certifique-se de excluir todas elas antes de exportar. Mantenha apenas a versão final. Emotes de sequência que precisam de várias 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 pode conter apenas o esqueleto deformador e a animação. Mesh, controles e qualquer outro objeto não devem ser exportados. Mais detalhes sobre como exportar podem ser encontrados abaixo.

Amostragem

Como as constraints não podem ser exportadas, a única forma de exportar o clipe de animação é fazendo bake dele, o que significa que todas as posições, rotações e escalas dos deform bones serão keyframed em cada frame da animação. Se o clipe for muito longo, como até 300 frames, ele terá 300 keyframes após a exportação, e quanto mais keyframes ele tiver, maior ficará o arquivo.

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, menor o arquivo.

A desvantagem, no entanto, é 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 irregular). 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. Esses números podem otimizar a animação sem comprometer a qualidade.

circle-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á feito bake, preservando a transição do fim para o início da animação.

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 ultrapassa 10 segundos. Se ainda estiver acima de 3 MB, tente experimentar com a Taxa de Amostragem, pois valores maiores melhorarão a otimização.

Se o emote contiver quaisquer modelos 3D adicionais, as texturas 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:

Desative a visibilidade da mesh antes de exportar!

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

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

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

É 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 clipes de animação para te ajudar com isso. Eles podem ser um ótimo material de estudo!

Idle.glbarrow-up-right

Jump.glbarrow-up-right

Walk.glbarrow-up-right

Run.glbarrow-up-right

Pose_Jump.glbarrow-up-right

Pose_Spin.glbarrow-up-right

Spotlight.glbarrow-up-right

Fashionista.glbarrow-up-right

Chic.glbarrow-up-right

Flag_Emote.glbarrow-up-right

Flag_Emote.blendarrow-up-right

Atualizado