Blender trae Python adentro. Eso permite que un modelo de lenguaje escriba el código que construye la geometría, y que tú solo describas lo que necesitas en español. El acabado —materiales, luces, render— sigue siendo tuyo.
Crea una cuenta en console.groq.com (gratis, sin tarjeta) y genera una key en la sección API Keys. Groq sirve modelos open source como Llama con un cupo gratuito amplio, que es justo lo que necesitamos para generar código.
En Blender, cambia a la pestaña Scripting (arriba, junto a Layout / Modeling / Sculpting). Ahí tienes una consola de Python que corre dentro de la escena abierta. Dale a New para crear un script vacío.
La clave está en el prompt del sistema: hay que exigirle que devuelva
solo código Python de bpy, sin explicaciones ni
bloques markdown, o el script no correrá.
import bpy, json, urllib.request
API_KEY = "gsk_TU_KEY"
DESCRIPCION = "una silla moderna de madera, patas delgadas"
SISTEMA = (
"Eres un experto en la API de Python de Blender (bpy). "
"Devuelve UNICAMENTE codigo Python ejecutable que construya la geometria "
"descrita usando bpy.ops.mesh y transformaciones. "
"Sin explicaciones, sin markdown, sin comentarios."
)
cuerpo = json.dumps({
"model": "llama-3.3-70b-versatile",
"messages": [
{"role": "system", "content": SISTEMA},
{"role": "user", "content": DESCRIPCION},
],
"temperature": 0.2,
}).encode()
req = urllib.request.Request(
"https://api.groq.com/openai/v1/chat/completions",
data=cuerpo,
headers={
"Authorization": "Bearer " + API_KEY,
"Content-Type": "application/json",
},
)
with urllib.request.urlopen(req) as r:
codigo = json.load(r)["choices"][0]["message"]["content"]
# Limpieza por si el modelo igual devolvio ```python
codigo = codigo.replace("```python", "").replace("```", "").strip()
print("--- codigo recibido ---")
print(codigo)
exec(codigo)Dale a Run Script (el ▶ del editor). El objeto aparece en la escena en unos segundos.
exec() corre lo que sea que llegue. Mientras experimentas en tu
máquina está bien, pero antes de dejarlo en manos de otra persona conviene
revisar el código antes de ejecutarlo:
PROHIBIDO = ["import os", "import sys", "subprocess", "open(", "__import__"]
if any(p in codigo for p in PROHIBIDO):
print("Codigo rechazado: intenta tocar el sistema, no solo la escena.")
else:
exec(codigo)Lo conectamos a tus convenciones de escena, nombres y unidades de trabajo.
Ver las demás integraciones