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.
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
- 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. - 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. - Eixo. O Roblox é Y-up. No export FBX: Forward
-Z Forward, UpY Up. - No export, marque Apply Unit Scale desmarcado e Apply Transform marcado. Essa combinação é a que quase todo tutorial inverte.
- 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
{
"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"
]
}