Scripting de Python en Blender 5.2: automatiza tu flujo 3D
Blender 5.2 integra Python 3 y expone toda su interfaz a través de la API bpy: renombrar 50 objetos, exportar una carpeta a glTF o renderizar diez tomas se convierte en un script de pocas líneas, ejecutable sin abrir la ventana. El scripting Python en Blender es la llave para recuperar horas.
Por qué aprender a scriptear Blender
La regla de oro de la API de Blender es sencilla: cualquier ajuste que cambias con un botón también se puede cambiar con Python. La interfaz no es más que una capa sobre el mismo motor de datos que manipulas desde un script, así que todo lo que sabes hacer a mano tiene un equivalente en código. Eso convierte las tareas repetitivas en procesos automáticos que no se cansan ni se equivocan.
Blender 5.2 es la versión LTS publicada el 14 de julio de 2026, con soporte hasta julio de 2028: una base estable para montar pipelines de automatización sin sustos de un día para otro.
La API bpy: bpy.data, bpy.context y bpy.ops
Todo el scripting de Blender gira alrededor de un módulo con tres piezas que conviene distinguir desde el primer día:
- bpy.data: los datos del archivo .blend en sí, como objetos, mallas, materiales, cámaras o luces. Es tu biblioteca del documento.
- bpy.context: el estado actual de la sesión: qué objetos están seleccionados, cuál es la escena activa o el modo en el que está el viewport.
- bpy.ops: los operadores, es decir, las acciones equivalentes a los botones de la interfaz, como añadir, eliminar o transformar elementos.
Esta separación es la que hace predecible a la API: lees datos con bpy.data, consultas el contexto con bpy.context y ejecutas acciones con bpy.ops.
Scripts vs addons: cuándo usar cada uno
Un script suelto resuelve una tarea puntual: renombrar una tanda de objetos, aplicar un modificador a todo lo seleccionado o exportar una escena. Un addon, en cambio, es un script con cabecera bl_info y operadores registrados que se instala como una extensión, pensado para herramientas reutilizables que quieres tener siempre disponibles desde el menú. Si la tarea es tuya y de hoy, script; si es una herramienta que usarás en cada proyecto, addon.
Tu primer script: consola Python y editor de texto
No necesitas configurar nada para empezar. Blender trae una consola Python integrada en la que el módulo bpy ya está importado y con auto-completado: escribes bpy. y el editor te sugiere data, context, ops y el resto de la API. Es el lugar ideal para probar una línea suelta antes de convertirla en script.
import bpy y explorar la API con auto-completado
En la consola puedes escribir directamente algo como:
import bpy
len(bpy.data.objects)Ese par de líneas te devuelve el número de objetos de la escena. La gracia de la consola es que puedes inspeccionar cualquier objeto con el autocompletado: escribe bpy.data.objects[0]. y pulsa Tab para ver todas las propiedades disponibles. Así se aprende la API explorando, sin documentación abierta.
Ejecutar scripts desde el editor de texto
Para algo más largo que una línea, usa el editor de texto de Blender. A diferencia de la consola, aquí el módulo bpy no viene importado, así que el primer paso de todo script es:
import bpy
for obj in bpy.data.objects:
print(obj.name)Con el botón Run Script del editor se ejecuta el archivo completo sobre la escena actual. Es el flujo de trabajo natural mientras desarrollas: escribes, ejecutas, revisas el resultado en la consola del sistema y repites.
Manipular objetos con código
Con lo básico en marcha, recorrer datos y operar sobre la selección cubre la mayoría de las automatizaciones habituales.
Recorrer bpy.data.objects y renombrar en lote
Renombrar decenas de objetos a mano es tedioso y propenso a errores. Con un bucle sobre bpy.data.objects se hace en un momento:
import bpy
for i, obj in enumerate(bpy.data.objects):
obj.name = f"prop_{i:03d}"Ese script renombra todos los objetos de la escena con un prefijo y un número correlativo. Es un ejemplo sencillo, pero el patrón sirve para cualquier operación por lote: asignar materiales, bloquear transformaciones o agrupar por nombre.
Seleccionar y transformar con bpy.context.selected_objects
Muchas veces no quieres tocar toda la escena, sino solo lo que tienes seleccionado en el viewport. Ahí entra bpy.context.selected_objects:
import bpy
for obj in bpy.context.selected_objects:
obj.location.z += 1.0Este snippet sube un metro en el eje Z todo lo que tengas seleccionado. Es la manera de construir herramientas que respetan tu flujo de trabajo: seleccionas en la interfaz y el script actúa sobre esa selección.
Aplicar modificadores y limpiar la escena
Los modificadores se aplican con operadores. Por ejemplo, para aplicar todos los modificadores de los objetos seleccionados y dejar las mallas limpias:
import bpy
for obj in bpy.context.selected_objects:
bpy.context.view_layer.objects.active = obj
for modifier in obj.modifiers:
bpy.ops.object.modifier_apply(modifier=modifier.name)Fíjate en el detalle de activar cada objeto antes de llamar al operador: muchos operadores de bpy.ops trabajan sobre el objeto activo o la selección, así que sincronizar el contexto es parte del oficio.
Automatizar exportaciones
Exportar un modelo es rápido; exportar veinte es un trabajo que no aporta nada. La API cubre todos los formatos habituales y se encadena en scripts.
Exportar a glTF, FBX y OBJ por script
Cada formato tiene su operador. Para glTF, el más habitual en proyectos web:
import bpy
bpy.ops.export_scene.gltf(filepath="/tmp/modelo.glb", export_format="GLB")Con export_format="GLB" obtienes un archivo binario único, ideal para web; cambiando el parámetro a "GLTF_SEPARATE" exportas el JSON con texturas separadas. FBX y OBJ funcionan igual con bpy.ops.export_scene.fbx() y bpy.ops.export_scene.obj(), cada uno con sus propios parámetros de escala, ejes y materiales.
Batch de exportación para una carpeta completa
Si tienes una carpeta de archivos .blend y quieres un GLB por cada uno, el bucle se encarga:
import bpy
import glob
for path in glob.glob("/tmp/proyectos/*.blend"):
bpy.ops.wm.open_mainfile(filepath=path)
bpy.ops.export_scene.gltf(filepath=path.replace(".blend", ".glb"),
export_format="GLB")Este script abre cada archivo, exporta su escena a GLB y pasa al siguiente. Automatizaciones así son las que justifican aprender scripting: una vez escritas, se reutilizan en cada proyecto.
Render y procesos por lotes desde la terminal
El modo headless ejecuta todo sin abrir la ventana: renders largos en servidores, tareas con cron o pipelines de CI.
blender -b archivo.blend -P script.py: modo headless
La forma más directa de ejecutar un script sin interfaz es:
blender -b escena.blend -P script.pyEl flag -b activa el modo background (sin ventana) y -P ejecuta el script indicado sobre el archivo cargado. Si necesitas pasar parámetros propios al script, usa -- para que Blender deje de interpretar argumentos a partir de ahí y los tuyos lleguen intactos al script.
Renderizar animaciones y frames concretos sin interfaz
Combinando el modo headless con la configuración por código, puedes renderizar tomas concretas de una animación:
import bpy
bpy.context.scene.frame_start = 1
bpy.context.scene.frame_end = 120
bpy.context.scene.render.filepath = "/tmp/render/frame_"
bpy.ops.render.render(animation=True)Ese script renderiza los 120 primeros frames de la escena activa y los guarda con el prefijo indicado. Es el mismo resultado que pulsar Render Animation, pero lanzable desde un cron o un servidor de render sin nadie delante del teclado.
Buenas prácticas en scripts de Blender
Un script que funciona una vez es un buen comienzo; un script que no ensucia la escena ni la memoria es un script que puedes dejar correr toda la noche.
Evitar data blocks huérfanos en loops
En bucles de procesamiento por lotes, Blender acumula data blocks huérfanos entre iteraciones: mallas, materiales y texturas que ya no usa nadie pero siguen ocupando memoria. En pipelines largos esto se convierte en una fuga silenciosa. La solución es purgar entre iteraciones:
import bpy
bpy.ops.outliner.orphans_purge(do_recursive=True)Esa llamada elimina los bloques sin referencias y sus dependencias. Meterla al final de cada iteración de un bucle largo mantiene el consumo de memoria estable.
Registrar operadores y manejar errores
Si conviertes tus scripts en addons, registra los operadores con bl_info y la clase bpy.types.Operator para que aparezcan en el menú con su propio nombre, tooltip e icono. Y aunque sea un script puntual, envuelve las partes críticas en try/except para que un error en un objeto no aborte el lote entero; un print() con el nombre del objeto fallido te dice dónde se rompió.
bpy fuera de Blender: pip install bpy (con matices)
Existe un paquete bpy en PyPI, así que pip install bpy funciona, pero con un matiz importante: es un paquete enorme (incluye el binario completo) y depende de la plataforma. Lo habitual y más fiable sigue siendo usar el intérprete Python que Blender incluye o ejecutar scripts con blender -b -P.
Conclusión
El scripting de Python en Blender 5.2 convierte el trabajo repetitivo en código: renombrar, exportar y renderizar en lote son scripts de pocas líneas que además puedes ejecutar sin abrir la interfaz. Empieza por la consola, automatiza una tarea que odies y verás cómo el resto llega solo. Si quieres ampliar el arsenal, mira nuestra guía de los mejores addons de Blender 5.2 por flujo de trabajo o aprende a exportar tus modelos a la web con glTF/GLB.