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.
Checking the stable version of the documentation...
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.
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.
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:
Selecione-o e atribua a textura com as peças do personagem que você baixou anteriormente:
Desenhar um polígono diretamente não é recomendado. Em vez disso, abra a janela de diálogo "UV" do polígono:
Vá para o modo Points, selecione o lápis e desenhe um polígono ao redor da peça desejada:
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.
Continue fazendo isso até mapear todas as peças.
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.
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:
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:
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.
Continue criando ossos na hierarquia e nomeando-os de acordo.
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:
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:
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 na barra de ferramentas e selecione Overwrite Rest Pose no menu suspenso.
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.
Clique na propriedade destacada acima e selecione o nó do esqueleto:
Mais uma vez, abra o editor de UV do polígono e vá para a seção Bones.
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.
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:
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).
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:
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:
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.
Assim que você começar a desenhar, o polígono original desaparecerá e você estará livre para criar o seu próprio:
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: