Importar animação do Blender pro Studio sem addon nem plugin
Você animou no Blender, exportou o FBX e o Studio não aceita a animação em lugar nenhum. Dá pra importar sem addon e sem plugin usando o importador de FBX que já vem dentro do Animation Editor — desde que os nomes dos ossos batam exatamente com o rig.
Rascunho assistido por IA, revisado, testado e editado por um humano antes de publicar. Ver Política Editorial. · Revisado por Gustavo Cantino, 06/09/2026 Política Editorial

Sim, dá. Você consegue importar animação do Blender pro Roblox Studio sem addon no Blender e sem plugin no Studio — o importador já vem dentro do Animation Editor: seleciona o rig, abre o editor, clica no menu de três pontos e usa a opção de importar de arquivo FBX. O que "sem addon nem plugin" te custa é o trabalho manual: o rig precisa ter os nomes que o Studio espera, e a animação precisa estar bakeada em keyframes antes de sair do Blender. Nenhuma dessas duas coisas o Blender faz sozinho no export padrão, e é aí que 90% das tentativas morrem.
Sim, dá — e o que "sem addon nem plugin" custa
O erro que faz a maioria concluir "é impossível sem plugin" é tentar pela porta errada. O importador de modelo 3D do Studio (aba Avatar, botão Import 3D) traz malha, textura, skinning e ossos — e descarta a animação. Você importa seu personagem animado, ele aparece parado, e a conclusão natural é que o Studio não lê animação de FBX. Ele lê. Só não é ali.
O caminho certo é outro serviço do Studio: o Animation Editor. Ele tem um importador de FBX próprio, que não cria mesh nenhuma — ele lê as curvas de rotação dos ossos do arquivo e escreve keyframes na timeline do rig que você já tem selecionado. É por isso que o rig tem que existir antes e com os nomes certos: o importador casa osso do FBX com parte do rig por nome, string por string. Se não achar nenhuma correspondência, você recebe um erro curto e zero keyframe. Não tem meio caminho.
O segundo erro caro é achar que animação vive em arquivo. Não vive:
-- ERRADO: não existe caminho de arquivo local pra animação
local anim = Instance.new("Animation")
anim.AnimationId = "rbxasset://animations/minhaAnim.fbx"AnimationId só aceita rbxassetid:// de um asset publicado na sua conta ou no seu grupo. O FBX é insumo, não produto final. O produto final é um KeyframeSequence publicado, e o único jeito de gerar isso sem plugin é passando pelo Animation Editor.
Contando o prejuízo em tempo: uma caminhada de 40 frames leva 20 a 40 minutos pra animar no Blender. Se você descobre o problema de nome de osso só na hora do import, você não perde os 30 minutos de animação — você perde a tarde tentando adivinhar qual das três coisas está errada (rig, bake ou export), porque a mensagem de erro do importador não diz qual. Os passos abaixo eliminam as três de uma vez.
O caminho sem instalar nada, em 7 passos
1. Pegue o rig do Studio, não faça o seu. No Studio, aba Avatar → Rig Builder → R15 Rig (ou Rthro Rig, se for esse o corpo do jogo). Ele nasce no Workspace com os nomes canônicos: HumanoidRootPart, LowerTorso, UpperTorso, Head, LeftUpperArm, LeftLowerArm, LeftHand e os equivalentes do lado direito e das pernas. Esses 16 nomes são o contrato. Se você riggar do zero no Blender e chamar o osso de "braco_esq", o importador não tem como saber que aquilo é o LeftUpperArm.
2. Exporte esse rig pro Blender. Clique direito no modelo do rig no Explorer → Export Selection → salve como .fbx. Você acabou de gerar um arquivo com a hierarquia e os nomes exatos que o importador vai querer de volta. Esse é o pulo do gato do fluxo sem addon: em vez de você adaptar o Blender ao Roblox, você deixa o Roblox ditar o esqueleto.
3. Importe no Blender e não toque na escala. File → Import → FBX, opções padrão. Escala do objeto em 1.0, sem "Apply Scale" criativo. O importador de animação do Studio lê rotação de osso; escala de osso é ignorada e translação só é respeitada na raiz. Se você escalar o armature pra ficar do tamanho que você gosta na viewport, a animação continua funcionando, mas você vai passar a acreditar em coisas que não existem no Studio.
4. Anime — só a armature, em modo Pose. Frame 1 sempre com a pose de descanso ou a pose inicial explicitamente keyada. Defina o FPS da cena antes de começar: 30 é o padrão seguro, porque o Animation Editor trabalha em segundos e uma cena a 24 fps te dá tempos quebrados (frame 13 = 0,5416s) que ficam feios de ajustar na timeline depois.
5. Bakeie a ação. Este passo é o que substitui o addon. Com a armature selecionada em Pose Mode, selecione todos os ossos (A) e vá em Object → Animation → Bake Action. Marque Visual Keying, Clear Constraints, Clear Parents desmarcado, Only Selected Bones marcado, Frame Step = 1, e o range do primeiro ao último frame da sua animação. O que isso faz: transforma IK, constraints, copy rotation e qualquer rig maluco que você montou em keyframes puros de rotação por frame. FBX não carrega constraint. Sem bake, sua animação sai do Blender com os ossos de IK animados e os ossos de deformação parados — no Studio você vê o personagem em T-pose tremendo.
6. Exporte o FBX com o preset certo. File → Export → FBX. Limit to: Selected Objects. Object Types: apenas Armature. Transform: Apply Scalings = All Local, Forward = -Z Forward, Up = Y Up. Armature: Add Leaf Bones desmarcado (leaf bones criam ossos fantasma com sufixo _end que sujam o import). Bake Animation: marcado, Key All Bones marcado, NLA Strips desmarcado, All Actions desmarcado, Force Start/End Keying marcado, Sampling Rate = 1, Simplify = 0. O Simplify em 0 é chato porque gera keyframe em todo frame (uma animação de 60 frames vira 60 keyframes por osso), mas Simplify > 0 é o que mais causa "a animação chegou, só que errada".
7. Importe no Studio. Selecione o mesmo rig R15 do passo 1 no Workspace, abra o Animation Editor (aba Avatar → Animation Editor), dê um nome à animação. No painel do editor, menu de três pontos → Import → a opção de importar de arquivo FBX. Escolha o .fbx que você acabou de exportar. Os keyframes aparecem na timeline. Ajuste o que quiser ali mesmo, depois três pontos → Publish to Roblox. Aí você tem o ID pra colar no AnimationId.
Custo total em dinheiro: R$ 0. Blender é gratuito, publicar animação não consome Robux, e o importador é nativo. Custo em tempo, com o rig já validado: 3 a 5 minutos entre o bake e a animação rodando no Studio.
O validador de nomes que roda antes de você exportar
O artefato abaixo é um ModuleScript que compara as partes do seu rig com a lista canônica do R15 e imprime, com nome e tudo, o que está faltando e o que está sobrando. Rode nele antes do passo 2 se você montou o rig na mão, e depois de qualquer import de volta pro Studio.
Coloque o ModuleScript em ServerScriptService com o nome RigNameCheck, selecione seu rig no Explorer e rode isto na Command Bar do Studio:
require(game.ServerScriptService.RigNameCheck).check(game.Selection:Get()[1])A saída te diz em duas linhas se o import vai funcionar. Se missing vier vazio, o importador vai achar todos os ossos. Se vier com cinco nomes, são exatamente esses cinco ossos que você tem que renomear no Blender antes de exportar.
O erro que queima a tarde: ".001" no fim do nome do osso
O Blender não deixa dois objetos com o mesmo nome. Se você duplicou a armature, importou o FBX duas vezes ou colou um braço de outro arquivo, ele renomeia sozinho: LeftUpperArm.001. O importador do Studio compara string exata — LeftUpperArm.001 não é LeftUpperArm, e aquele osso simplesmente não entra. Resultado clássico: a animação importa, o corpo se move e um braço fica parado. Você vai jurar que é problema de bake.
Antes de exportar, abra o Outliner do Blender em modo Blender File, expanda Armatures e leia os nomes. Se tiver sufixo, limpe:
-- python: remove sufixos .001, .002 dos ossos da armature selecionada
import bpy, re
for b in bpy.context.object.data.bones:
b.name = re.sub(r"\\.\\d+$", "", b.name)O segundo erro caro dessa etapa não é técnico, é de propriedade do asset. Se o jogo é de um grupo e você publica a animação pela sua conta pessoal, o AnimationId carrega no Studio (você é o dono, tem permissão) e falha no servidor publicado, com o personagem em T-pose pra todo mundo menos você. Na hora do Publish to Roblox, escolha o mesmo criador que é dono da experiência. Se já publicou errado, republique pelo dono certo e troque o ID: não existe transferência de animação entre contas.
O que medir depois
Meça três coisas nesse ciclo, porque elas dizem se o fluxo sem addon é sustentável pro seu projeto ou se vale procurar uma ferramenta:
- Tempo do ciclo bake → import → visto no Studio. Se passar de 10 minutos por tentativa, o problema não é o importador, é o seu rig ainda não estar canônico. Rode o validador e resolva na origem.
- Contagem de keyframes por animação. Com Sampling Rate 1 e Simplify 0, uma animação de 2 segundos a 30 fps vira 60 keyframes por osso — 16 ossos, quase mil keyframes. Isso publica bem, mas fica insuportável de editar à mão no Animation Editor. Se você pretende ajustar depois no Studio, exporte com menos frames e refine lá.
- A animação tocando num servidor publicado, não no Play Solo. Erro de dono de asset só aparece fora do Studio.
O passo seguinte é sair do editor e fazer o Humanoid tocar isso em jogo: carregar a Animation no Animator, definir Priority e substituir a animação padrão de corrida do personagem.
Artefato pronto pra usar
--!strict
-- RigNameCheck — valida se um rig tem os nomes que o importador de FBX
-- do Animation Editor espera. Rode ANTES de exportar o FBX pro Blender
-- e DEPOIS de qualquer import, pela Command Bar:
--
-- require(game.ServerScriptService.RigNameCheck).check(game.Selection:Get()[1])
--
-- Retorna true se o rig está pronto pro import.
local RigNameCheck = {}
-- Nomes canônicos do R15 (Rig Builder → R15 Rig).
-- O importador casa osso do FBX com parte do rig por NOME EXATO.
local R15_PARTS: { string } = {
"HumanoidRootPart",
"LowerTorso", "UpperTorso", "Head",
"LeftUpperArm", "LeftLowerArm", "LeftHand",
"RightUpperArm", "RightLowerArm", "RightHand",
"LeftUpperLeg", "LeftLowerLeg", "LeftFoot",
"RightUpperLeg", "RightLowerLeg", "RightFoot",
}
local function join(list: { string }): string
return (#list == 0) and "(nenhum)" or table.concat(list, ", ")
end
-- Verifica partes e Motor6D do rig. Imprime relatório e devolve o veredito.
function RigNameCheck.check(rig: Instance?): boolean
if rig == nil or not rig:IsA("Model") then
warn("[RigNameCheck] Selecione o Model do rig no Explorer antes de rodar.")
return false
end
local found: { [string]: boolean } = {}
local motors = 0
for _, d in ipairs(rig:GetDescendants()) do
if d:IsA("BasePart") then
found[d.Name] = true
elseif d:IsA("Motor6D") then
motors += 1
end
end
local missing: { string } = {}
for _, name in ipairs(R15_PARTS) do
if not found[name] then
table.insert(missing, name)
end
end
local extra: { string } = {}
for name in pairs(found) do
if table.find(R15_PARTS, name) == nil then
table.insert(extra, name)
end
end
table.sort(extra)
print(string.format("[RigNameCheck] rig=%s | partes=%d/16 | Motor6D=%d",
rig.Name, 16 - #missing, motors))
print("[RigNameCheck] faltando: " .. join(missing))
print("[RigNameCheck] fora do padrão (renomeie ou ignore): " .. join(extra))
if rig:FindFirstChildOfClass("Humanoid") == nil then
warn("[RigNameCheck] sem Humanoid: o Animation Editor não vai abrir nesse Model.")
end
if motors < 15 then
warn("[RigNameCheck] menos de 15 Motor6D: junta faltando, a animação não vai deformar tudo.")
end
local ok = (#missing == 0) and (motors >= 15)
print(ok and "[RigNameCheck] OK: pode exportar/importar."
or "[RigNameCheck] CORRIJA os nomes acima antes de exportar o FBX.")
return ok
end
return RigNameCheck
{
"nome": "Preset de export FBX do Blender para o Animation Editor do Roblox",
"cena": {
"fps": 30,
"frame_start": 1,
"unit_scale": 1.0
},
"antes_de_exportar": {
"bake_action": true,
"bake_visual_keying": true,
"bake_clear_constraints": true,
"bake_only_selected_bones": true,
"bake_frame_step": 1,
"nomes_de_osso_sem_sufixo": true
},
"export_fbx": {
"limit_to_selected_objects": true,
"object_types": ["ARMATURE"],
"apply_scalings": "FBX_ALL_LOCAL",
"forward": "-Z",
"up": "Y",
"add_leaf_bones": false,
"primary_bone_axis": "Y",
"secondary_bone_axis": "X",
"bake_animation": true,
"key_all_bones": true,
"nla_strips": false,
"all_actions": false,
"force_start_end_keying": true,
"sampling_rate": 1.0,
"simplify": 0.0
},
"import_no_studio": {
"onde": "Avatar > Animation Editor > menu de tres pontos > Import > arquivo FBX",
"rig_selecionado_antes": true,
"publicar_como": "o mesmo criador (conta ou grupo) dono da experiencia"
}
}

