Animação para Roblox

Sua animação do Blender chega no Roblox flutuando. É escala, não bug

Exportou do Blender, importou no Studio, e o personagem desliza 15 cm acima do chão. O culpado é a escala de unidade do Blender contra a do Roblox. Configuração de rig que resolve, mais o checklist de export.

por Gustavo Cantino2 min de leitura

Rascunho assistido por IA, revisado, testado e editado por um humano antes de publicar. Ver Política Editorial. · Revisado por Gustavo Cantino, 02/09/2026 Política Editorial

Você animou uma caminhada bonita no Blender, exportou em FBX, importou no Animation Editor, e o personagem chega flutuando. Ou pior: os pés atravessam o chão em metade dos frames.

A primeira reação de todo mundo é achar que a animação está errada e refazer. Não está.

O problema

O Blender trabalha em metros por padrão. O Roblox trabalha em studs, e 1 stud ≈ 0,28 metro. Quando você exporta sem acertar isso, o FBX carrega uma escala de unidade que o importador do Roblox aplica no rig inteiro — inclusive na altura do HumanoidRootPart.

O resultado não é o modelo maior ou menor (isso seria óbvio e você consertaria na hora). O resultado é o pivô no lugar errado, e aí a animação toda fica deslocada no eixo Y por uma fração que muda conforme o osso.

É por isso que parece bug aleatório: a cabeça fica certa e o pé fica errado.

O conserto, passo a passo

  1. No Blender, em Scene Properties → Units, ponha Unit System: None. Não "Metric com Unit Scale 0.28" — None. Com Metric o Blender continua carimbando metadado de unidade no FBX, e o importador do Roblox lê o metadado, não o que você vê na tela.
  2. Escala do armature: 1.0, aplicada. Selecione o armature, Ctrl+A → Scale. Se ficar 1.0 no painel N mas você nunca aplicou, o FBX leva a escala não-aplicada.
  3. Eixo. O Roblox é Y-up. No export FBX: Forward -Z Forward, Up Y Up.
  4. No export, marque Apply Unit Scale desmarcado e Apply Transform marcado. Essa combinação é a que quase todo tutorial inverte.
  5. R15 tem 15 partes com nome fixo. Osso com nome fora do padrão não é importado, e é isso que faz "sumir" um braço.

O artefato deste post é o JSON com a hierarquia R15 completa, os nomes exatos e as configurações de export. Confira o seu rig contra ele antes de exportar.

Erro comum

O erro mais caro é consertar na animação em vez de consertar no rig: mover todos os keyframes 15 cm pra baixo no Animation Editor.

Funciona pra uma animação. Aí você faz a segunda, o deslocamento é outro (porque depende de qual osso você usou como raiz), e agora você tem duas animações com offsets diferentes que não dá pra fazer blend. Quando descobre, tem oito animações pra refazer.

Conserte a escala, reexporte tudo, e não guarde animação com offset manual.

O segundo erro é exportar o mesh junto da animação toda vez. Exporte o rig uma vez, importe no Studio, e depois exporte só a animação (Bake Animation ligado, Add Leaf Bones desligado — leaf bone vira parte fantasma no R15).

O que fazer em seguida

Com o rig batendo com o JSON, vale montar um arquivo .blend de referência com o R15 já configurado e reusar em todo projeto, em vez de configurar do zero. Depois disso, o próximo assunto é blending: como fazer a caminhada e a corrida se misturarem sem o pé patinar, que é uma questão de AnimationTrack:AdjustWeight e não de Blender.

Artefato pronto pra usar

r15-blender-export.json — hierarquia R15 e configuração de export
json
{
  "descricao": "Configuração de rig e export para levar animação do Blender ao Roblox R15 sem deslocamento de pivô.",
  "blender": {
    "versao_testada": "4.2 LTS",
    "scene_units": {
      "unit_system": "NONE",
      "porque": "Com METRIC o Blender carimba metadado de unidade no FBX. O importador do Roblox lê o metadado, não o que aparece na viewport — e reescala o rig inteiro, deslocando o pivô."
    },
    "armature": {
      "scale": [1.0, 1.0, 1.0],
      "aplicada": true,
      "como": "Selecionar o armature > Ctrl+A > Scale",
      "porque": "Escala 1.0 no painel N mas não APLICADA vai no FBX como transform pendente."
    }
  },
  "fbx_export": {
    "path_mode": "COPY",
    "apply_scalings": "FBX_SCALE_NONE",
    "forward_axis": "-Z",
    "up_axis": "Y",
    "apply_unit_scale": false,
    "apply_transform": true,
    "bake_animation": true,
    "add_leaf_bones": false,
    "nla_strips": false,
    "force_start_end_keying": true,
    "armadilhas": {
      "add_leaf_bones": "Ligado, cria bone extra na ponta de cada cadeia. No R15 isso vira parte fantasma que o importador rejeita ou importa torta.",
      "apply_unit_scale": "A combinação que quase todo tutorial inverte é esta com apply_transform. O correto é unit_scale DESLIGADO e transform LIGADO."
    }
  },
  "r15_hierarquia": {
    "HumanoidRootPart": {
      "LowerTorso": {
        "UpperTorso": {
          "Head": {},
          "LeftUpperArm": { "LeftLowerArm": { "LeftHand": {} } },
          "RightUpperArm": { "RightLowerArm": { "RightHand": {} } }
        },
        "LeftUpperLeg": { "LeftLowerLeg": { "LeftFoot": {} } },
        "RightUpperLeg": { "RightLowerLeg": { "RightFoot": {} } }
      }
    }
  },
  "r15_nomes_exatos": [
    "HumanoidRootPart", "LowerTorso", "UpperTorso", "Head",
    "LeftUpperArm", "LeftLowerArm", "LeftHand",
    "RightUpperArm", "RightLowerArm", "RightHand",
    "LeftUpperLeg", "LeftLowerLeg", "LeftFoot",
    "RightUpperLeg", "RightLowerLeg", "RightFoot"
  ],
  "conversao": {
    "stud_em_metros": 0.28,
    "altura_r15_padrao_studs": 5.0,
    "altura_r15_padrao_metros": 1.4,
    "nota": "Use estes números só para conferir proporção visual. NÃO aplique o fator 0.28 como escala manual no armature — isso troca um deslocamento por outro."
  },
  "checklist_antes_de_exportar": [
    "Unit System = None",
    "Escala do armature aplicada (Ctrl+A > Scale)",
    "Todos os 15 nomes batem exatamente com r15_nomes_exatos",
    "Add Leaf Bones desligado",
    "Apply Unit Scale desligado, Apply Transform ligado",
    "Rig exportado UMA vez; depois disso, exportar só a animação"
  ]
}