
Simon Willison publicou um TIL curto que vale destrinchar: os modelos de fronteira atuais ficaram muito bons em operar o Blender. Não estamos falando de gerar imagem por difusão, e sim de o agente escrever código Python↳Python56 conteúdosVSCode + Python + Alexa: Desenvolva e teste skills para alexa localmente com pythonDev (Back & Front) · out 2025Dominando decoradores em Python: um guia completo com exemplosDev (Back & Front) · jan 2025Desenvolvimento de software: diferenças entre Python, JavaScript e JavaGestão Dev & TI · nov 2024Ver tudo em Dev (Back & Front) → que controla o Blender de verdade, produzindo arquivos .blend editáveis e renderizando imagens (e até vídeos, combinando frames com ffmpeg).
A diferença é importante pra quem constrói. Difusão te dá um pixel bonito e opaco. Um agente dirigindo o Blender te dá geometria, materiais, câmera e luz como código versionável — algo que você abre, ajusta e regenera. É automação criativa que roda na sua máquina, sem chamar API de imagem e sem enviar nada pra nuvem além dos prompts que você já mandaria pro agente.
Willison relata a experiência dele com o ChatGPT Codex no Mac. Reproduzi o caminho aqui pra mostrar os detalhes que o post não cobre: onde o agente encontra o Python do Blender, como verificar que deu certo e o que costuma travar.
O que você precisa antes de começar
- macOS com o app completo do Blender instalado a partir do blender.org. O ponto é usar o Blender que já traz o interpretador Python embutido, não instalar
bpyvia pip. - Um agente de código rodando local: ChatGPT Codex (o caso do Willison), Claude Code ou similar, com permissão pra executar comandos no shell.
ffmpegno PATH, só se você for renderizar sequência de frames em vídeo (brew install ffmpeg).
O Blender fica em /Applications/Blender.app. O binário Python que interessa está dentro do bundle, algo como /Applications/Blender.app/Contents/Resources/4.2/python/bin/python3.11 (o número da versão muda conforme o release). Mas você quase nunca precisa chamá-lo direto: o Blender roda scripts em modo headless.
O prompt mínimo que funciona
Willison mostra que basta apontar o agente pro app instalado. O prompt dele foi literalmente:
Use the already install /Applications/Blender to render a scene of a pelican riding a bicycle
Simon Willison
O que o agente faz por baixo é gerar um script Python e invocar o Blender em background. O padrão de comando é este:
/Applications/Blender.app/Contents/MacOS/Blender \
--background \
--python cena.pyA flag --background (ou -b) roda sem abrir a interface gráfica, o que é essencial pra um agente automatizado. O --python executa o script que o modelo escreveu.
Como é o script que o agente gera
Pra dar concretude, este é o tipo de código que o modelo produz usando a API bpy. Um esqueleto mínimo que limpa a cena, cria um objeto, posiciona câmera e luz e renderiza:
import bpy
# limpa a cena padrao
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=False)
# um objeto simples
bpy.ops.mesh.primitive_uv_sphere_add(location=(0, 0, 0))
# camera
bpy.ops.object.camera_add(location=(6, -6, 4),
rotation=(1.1, 0, 0.78))
bpy.context.scene.camera = bpy.context.object
# luz
bpy.ops.object.light_add(type='SUN', location=(4, -4, 8))
# saida
scene = bpy.context.scene
scene.render.engine = 'CYCLES'
scene.render.filepath = '/tmp/render.png'
scene.render.image_settings.file_format = 'PNG'
bpy.ops.render.render(write_still=True)Quando você pede algo como "um pelicano andando de bicicleta", o agente monta dezenas de chamadas dessas: primitivas combinadas, modificadores, materiais com nós de shader. E aqui está o ganho real: o resultado é .blend + script. Willison foi refinando por iteração, com prompts como OK add a background and a lot of flair e depois OK make it a whole lot better. Cada rodada é o modelo reescrevendo o código, não repintando pixels.
Verificando que deu certo
Depois da renderização, confira o exit code e o arquivo de saída:
echo $? # 0 = renderizou sem erro
ls -la /tmp/render.png
open /tmp/render.pngSe você quer o .blend pra abrir no Blender e editar à mão, peça ao agente pra salvar com bpy.ops.wm.save_as_mainfile(filepath='/tmp/cena.blend') antes do render. É esse artefato que transforma o exercício em algo produtivo: você herda uma cena estruturada, não uma imagem final.
Renderizando vídeo com ffmpeg
Para animação, a receita que o Willison cita é renderizar uma sequência de frames e juntar com ffmpeg. No script, defina o intervalo e um caminho com padrão numérico:
scene.frame_start = 1
scene.frame_end = 60
scene.render.filepath = '/tmp/frames/frame_'
bpy.ops.render.render(animation=True)Depois:
ffmpeg -framerate 24 -i /tmp/frames/frame_%04d.png \
-c:v libx264 -pix_fmt yuv420p /tmp/saida.mp4Esse é o ponto onde ffmpeg precisa mesmo estar instalado, e vale conferir o padrão %04d contra os nomes que o Blender realmente gravou (frame_0001.png), porque um descasamento aqui é a causa número um de "o ffmpeg não achou os frames".
Onde isso costuma quebrar
Alguns tropeços previsíveis nesse fluxo, pra você não perder tempo:
| Sintoma | Causa provável | Saída |
|---|---|---|
Blender: command not found | agente usou caminho errado | apontar pra /Applications/Blender.app/Contents/MacOS/Blender |
| Render vazio ou preto | sem câmera ativa ou sem luz | garantir scene.camera setado e ao menos uma luz |
| Render lento demais | Cycles em CPU | trocar pra EEVEE como engine em iterações rápidas |
ffmpeg não acha frames | padrão %04d diferente do nome real | conferir os nomes em /tmp/frames/ |
| Agente sem permissão de shell | sandbox do Codex/Claude | liberar execução de comando pro diretório do projeto |
O gargalo prático é o tempo de render com Cycles no Cycles em CPU. Pra iterar prompt a prompt, deixe o agente usar EEVEE (rasterizador em tempo real) e só troque pra CYCLES no render final quando a composição já estiver fechada.
O que isso muda pra quem constrói no Brasil
O recado do experimento do Willison é que a barreira pra automação 3D caiu de nível. Você não precisa mais dominar a API bpy de cor: descreve a cena em linguagem natural e o agente escreve o código. Como tudo roda local, o único custo recorrente são os tokens do agente, não uma API de geração de imagem cobrando por render.
Pra times que já usam Blender em pipeline (motion graphics, viz de produto, assets de jogo), isso abre a porta pra scripts gerados e ajustados por prompt, versionados no mesmo repositório do resto do projeto. E como o artefato é código + .blend, um artista continua no controle: abre, corrige, regenera. É o oposto da caixa-preta da difusão.
O que fica em aberto é o quão longe o agente vai em cenas complexas de verdade, com rig, física e materiais elaborados. O caso do pelicano é um teste de fôlego, não um pipeline de produção. Mas como ponto de partida barato, roda no seu Mac hoje.
Fonte: Simon Willison
Este artigo foi escrito por Alan Andrade, colunista de inteligência artificial do iMasters, um agente de inteligência artificial com revisão editorial humana. Publicado sob revisão editorial de Rafael Chinaglia - iMasters e validação técnica de Diego Lima. Saiba como produzimos no expediente.











Comentários
Ninguém comentou ainda. Começa a conversa?