Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Esqueletos 2D

Introdução

Ao trabalhar com 3D, as deformações esqueléticas são comuns para personagens e criaturas, e a maioria dos aplicativos de modelagem 3D oferece suporte a isso. Para 2D, como essa função não é usada com tanta frequência, é difícil encontrar softwares convencionais voltados para isso.

Uma opção é criar animações em softwares de terceiros, como Spine ou Dragonbones. Essa funcionalidade também possui suporte nativo.

Por que você iria querer fazer animações esqueléticas diretamente no Godot? A resposta é que existem muitas vantagens nisso:

  • Melhor integração com o motor, gerando menos problemas para importar e editar a partir de uma ferramenta externa.

  • Capacidade de controlar sistemas de partículas, shaders, sons, chamar scripts, cores, transparência, etc. nas animações.

  • O sistema esquelético integrado do Godot é muito eficiente e projetado para desempenho.

O tutorial a seguir explicará, então, as deformações esqueléticas 2D.

Configurar

Ver também

Antes de começar, recomendamos que você passe pelo tutorial Animação de recorte(Cut-out) para obter uma compreensão geral sobre como animar no Godot.

Para este tutorial, usaremos uma única imagem para construir nosso personagem. Baixe-a em gBot_pieces.png ou salve a imagem abaixo.

../../_images/gBot_pieces.png

Também é aconselhável baixar a imagem do personagem completo gBot_complete.png para ter uma boa referência ao juntar as diferentes peças.

../../_images/gBot_complete.png

Criando os polígonos

Crie uma nova cena para o seu modelo (se for um personagem animado, você pode querer usar um CharacterBody2D). Para facilitar o uso, um nó 2D vazio é criado como raiz para os polígonos.

Comece com um nó Polygon2D. Não há necessidade de colocá-lo em nenhum lugar da cena por enquanto, basta criá-lo assim:

../../_images/skel2d1.png

Selecione-o e atribua a textura com as peças do personagem que você baixou anteriormente:

../../_images/skel2d2.png

Desenhar um polígono diretamente não é recomendado. Em vez disso, abra a janela de diálogo "UV" do polígono:

../../_images/skel2d3.png

Vá para o modo Points, selecione o lápis e desenhe um polígono ao redor da peça desejada:

../../_images/skel2d4.png

Duplique o nó do polígono e dê a ele um nome adequado. Em seguida, entre na janela de diálogo "UV" novamente e substitua o polígono antigo por outro na nova peça desejada.

Quando você duplica nós e a próxima peça tem um formato semelhante, você pode editar o polígono anterior em vez de desenhar um novo.

Depois de mover o polígono, lembre-se de atualizar a UV selecionando Edit > Copy Polygon to UV no Editor de UV do Polygon 2D.

../../_images/skel2d5.png

Continue fazendo isso até mapear todas as peças.

../../_images/skel2d6.png

Você notará que as peças dos nós aparecem na mesma disposição que na textura original. Isso ocorre porque, por padrão, quando você desenha um polígono, a UV e os pontos são os mesmos.

Reorganize as peças e monte o personagem. Isso deve ser bem rápido. Não há necessidade de alterar os pivôs, então não se preocupe em garantir que os pivôs de rotação de cada peça estejam corretos; você pode deixá-los como estão por enquanto.

../../_images/skel2d7.png

Ah, a ordem visual das peças ainda não está correta, pois algumas estão cobrindo as peças erradas. Reorganize a ordem dos nós para corrigir isso:

../../_images/skel2d8.png

E aí está! Com certeza foi muito mais fácil do que no tutorial de cutout.

Criando o esqueleto

Crie um nó Skeleton2D como filho do nó raiz. Essa será a base do nosso esqueleto:

../../_images/skel2d9.png

Crie um nó Bone2D como filho do esqueleto. Coloque-o no quadril (geralmente os esqueletos começam aqui). O osso estará apontando para a direita, mas você pode ignorar isso por enquanto.

../../_images/skel2d10.png

Continue criando ossos na hierarquia e nomeando-os de acordo.

../../_images/skel2d11.png

No final desta cadeia, haverá um nó para a mandíbula (jaw). Ele é, novamente, muito curto e aponta para a direita. Isso é normal para ossos sem filhos. O comprimento dos ossos da ponta (tip) pode ser alterado com uma propriedade no inspetor:

../../_images/skel2d12.png

Neste caso, não precisamos rotacionar o osso (coincidentemente a mandíbula aponta para a direita no sprite), mas caso precise, sinta-se à vontade para fazê-lo. Novamente, isso só é realmente necessário para os ossos da ponta, já que nós com filhos geralmente não precisam de um comprimento ou de uma rotação específica.

Continue e monte o esqueleto inteiro:

../../_images/skel2d13.png

Você notará que todos os ossos exibem um aviso sobre a falta de uma pose de descanso (rest pose). Uma pose de descanso é a pose padrão de um esqueleto, e você pode voltar para ela sempre que quiser (o que é muito útil para animar). Para definir uma, clique no nó do esqueleto na árvore de cena, depois clique no botão Skeleton2D na barra de ferramentas e selecione Overwrite Rest Pose no menu suspenso.

../../_images/skel2d14.webp

Os avisos desaparecerão. Se você modificar o esqueleto (adicionar/remover ossos), precisará definir a pose de descanso novamente.

Deformando os polígonos

Selecione os polígonos criados anteriormente e atribua o nó do esqueleto à propriedade Skeleton deles. Isso garantirá que eles possam eventualmente ser deformados por ele.

../../_images/skel2d15.png

Clique na propriedade destacada acima e selecione o nó do esqueleto:

../../_images/skel2d16.png

Mais uma vez, abra o editor de UV do polígono e vá para a seção Bones.

../../_images/skel2d17.png

Você ainda não conseguirá pintar os pesos (weights). Para isso, você precisa sincronizar a lista de ossos do esqueleto com o polígono. Esta etapa é feita apenas uma vez e manualmente (a menos que você modifique o esqueleto adicionando/removendo/renomeando ossos). Isso garante que suas informações de rigging sejam mantidas no polígono, mesmo se um nó de esqueleto for perdido acidentalmente ou se o esqueleto for modificado. Pressione o botão "Sync Bones to Polygon" para sincronizar a lista.

../../_images/skel2d18.png

A lista de ossos aparecerá automaticamente. Por padrão, seu polígono não tem peso atribuído a nenhum deles. Selecione os ossos aos quais deseja atribuir peso e pinte-os:

../../_images/skel2d19.png

Os pontos em branco têm peso total atribuído, enquanto os pontos em preto não são influenciados pelo osso. Se o mesmo ponto for pintado de branco para múltiplos ossos, a influência será distribuída entre eles (então geralmente não há tanta necessidade de usar tons intermediários, a menos que você queira refinar o efeito de dobra).

../../_images/skel2d20.gif

Depois de pintar os pesos, animar os ossos (NÃO os polígonos!) terá o efeito desejado de modificar e dobrar os polígonos de acordo. Como você só precisa animar os ossos nesta abordagem, o trabalho se torna muito mais fácil!

Mas nem tudo são flores. Tentar animar ossos que dobram o polígono muitas vezes produzirá resultados inesperados:

../../_images/skel2d21.gif

Isso acontece porque o Godot gera triângulos internos que conectam os pontos ao desenhar o polígono. Eles nem sempre se dobram da maneira que você esperaria. De forma a resolver isso, você precisa definir guias (hints) na geometria para esclarecer como espera que ela se deforme.

Vértices internos

Abra o menu UV de cada osso novamente e vá para a seção Points. Adicione alguns vértices internos nas regiões onde você espera que a geometria se dobre:

../../_images/skel2d22.png

Agora, vá para a seção Polygon e redesenhe seus próprios polígonos com mais detalhes. Imagine que, conforme seus polígonos se dobram, você precisa garantir que eles se deformem o mínimo possível, então experimente um pouco para encontrar a configuração certa.

../../_images/skel2d23.png

Assim que você começar a desenhar, o polígono original desaparecerá e você estará livre para criar o seu próprio:

../../_images/skel2d24.png

Essa quantidade de detalhes geralmente é suficiente, embora você possa querer ter um controle mais granular sobre para onde os triângulos vão. Experimente por si mesmo até obter os resultados desejados.

Nota: Não se esqueça de que os seus vértices internos recém-adicionados também precisam de pintura de peso! Vá para a seção Bones novamente para atribuí-los aos ossos corretos.

Depois que tudo estiver configurada, você obterá resultados muito melhores:

../../_images/skel2d25.gif