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...
Retargeting de Esqueletos 3D
Opções para Retargeting
Bone Map (Mapa de Ossos)
Quando você seleciona o nó Skeleton3D no menu de importação de cena avançada, um menu aparecerá no lado direito contendo a seção "Retarget". A seção Retarget possui uma única propriedade bone_map.
Com o nó Skeleton selecionado, primeiro configure um novo BoneMap e um SkeletonProfile. O Godot possui uma predefinição chamada SkeletonProfileHumanoid para modelos humanoides. Este tutorial prossegue com a suposição de que você está usando o SkeletonProfileHumanoid.
Nota
Se você precisar de um perfil que seja diferente do SkeletonProfileHumanoid, você pode exportar um SkeletonProfile a partir do editor selecionando um Skeleton3D e usando o menu Skeleton3D na barra de ferramentas do viewport 3D.
Quando você usa o SkeletonProfileHumanoid, o mapeamento automático (auto-mapping) será realizado assim que o SkeletonProfile for definido. Se o mapeamento automático não funcionar bem, você pode mapear os ossos manualmente.
Qualquer mapeamento ausente, duplicado ou com relação de pai e filho incorreta será indicado por um botão magenta / vermelho (dependendo da configuração do editor). Isso não bloqueia o processo de importação, mas avisa que as animações podem não ser compartilhadas corretamente.
Nota
O mapeamento automático usa correspondência de padrões para os nomes dos ossos. Portanto, recomendamos o uso de nomes comuns em inglês para os ossos.
Depois de configurar o bone_map, várias opções ficam disponíveis nas seções abaixo.
Remover Trilhas
Se você importar recursos como uma AnimationLibrary que será compartilhada, recomendamos ativar essas opções. No entanto, se você importar recursos como cenas, elas devem ser desativadas em alguns casos. Por exemplo, se você importar um personagem com acessórios animados, essas opções podem fazer com que os acessórios não sejam animados.
Exceto Transformações de Ossos
Remove todas as faixas das animações, exceto a faixa de transformação do osso.
Posições Pouco Importantes
Remove faixas de Posição diferentes de root_bone e scale_base_bone definidas em SkeletonProfile das animações. Em SkeletonProfileHumanoid, isso significa remover faixas de Posição que não sejam "Root" (Raiz) e "Hips" (Quadris). Desde o Godot 4, as animações incluem Bone Rest (Descanso do Osso) no valor de Transformação. Se você desativar esta opção, a animação pode alterar a forma do corpo de forma imprevisível.
Unmapped Bones (Ossos não mapeados)
Remove as faixas de Transform de ossos não mapeados das animações.
Renomeador de Ossos
Renomear Ossos
Renomeia os ossos mapeados.
Nó Único
Torna o Skeleton um nó único com o nome especificado em skeleton_name. Isso permite que os caminhos das faixas de animação sejam unificados independentemente da hierarquia da cena.
Corretor de Pose de Repouso
As poses de referência definidas em SkeletonProfileHumanoid possuem as seguintes regras:
O humanoide está em pose T
O humanoide está voltado para +Z no Sistema de Coordenadas Y-UP de Mão Direita
O humanoide não deve ter um Transform como Nó
Direciona o eixo +Y da articulação pai para a articulação filho
+A rotação X flexiona a articulação como um músculo se contraindo
Essas regras são definições convenientes para animação de mesclagem (blend) e Cinemática Inversa (IK). Se o seu modelo não corresponder a essa definição, você precisará corrigi-lo com essas opções.
Aplicar Transformação de nó
Se o asset não for exportado corretamente para compartilhamento, o Skeleton importado pode ter um Transform como um Nó. Por exemplo, um glTF exportado do Blender sem nenhum "Apply Transform" executado é um desses casos. Parece que o modelo corresponde à definição, mas os Transforms internos são diferentes da definição. Essa opção corrige tais modelos aplicando os Transforms na importação.
Nota
Se a cena importada contiver objetos que não sejam Skeletons, essa opção pode ter um efeito negativo.
Normalizar faixas de posição
A faixa de Posição é usada principalmente para o movimento do modelo, mas compartilhar a animação de movimento entre modelos com alturas diferentes pode causar a aparência de deslizamento devido à diferença no comprimento da passada. Essa opção normaliza os valores da faixa de Posição com base na altura do scale_base_bone. A altura do scale_base_bone é armazenada no Skeleton como o motion_scale, e os valores normalizados da faixa de Posição são multiplicados por esse valor durante a reprodução. Se essa opção estiver desativada, as faixas de Posição não serão normalizadas e o motion_scale do Skeleton será sempre importado como 1.0.
Com SkeletonProfileHumanoid, o scale_base_bone é "Hips", portanto a altura dos Hips é usada como o motion_scale.
Sobregravar Eixo (Overwrite Axis)
Unifica os Bone Rests dos modelos sobrescrevendo-os para corresponder às poses de referência definidas no SkeletonProfile.
Nota
Esta é a opção mais importante para compartilhar animações no Godot 4, mas esteja ciente de que esta opção pode produzir resultados horríveis se o Bone Rest original definido externamente for importante. Se você deseja compartilhar animações mantendo o Bone Rest original, considere usar o Realtime Retarget Module.
Corrigir Silhueta (Fix Silhouette)
Tenta fazer com que a silhueta do modelo corresponda à das poses de referência definidas no SkeletonProfile, como a Pose T. Isso não pode corrigir silhuetas que sejam muito diferentes e pode não funcionar para corrigir a rotação do osso (bone roll).
Com SkeletonProfileHumanoid, esta opção não precisa estar ativada para modelos em pose T, mas deve estar ativada para modelos em pose A. No entanto, nesse caso, os resultados dos pés corrigidos podem ser ruins dependendo da altura do calcanhar do modelo, portanto pode ser necessário adicionar os nomes dos ossos do SkeletonProfile que você não deseja que sejam corrigidos no array filter, como no exemplo abaixo.
Além disso, para modelos com joelhos ou pés dobrados, pode ser necessário ajustar la altura do scale_base_bone. Para isso, você pode usar a opção base_height_adjustment.