Communitygithub.com

Pingwink/skill

Habilidad para automatizar Blender con Python, configurar renderizados Cycles GPU de alto rendimiento (OptiX, denoising, Fast GI), resolver cambios de API de Blender 5.2+ (grupos de nodos de composición, media_type VIDEO) y renderizar animaciones a MP4/H.264.

¿Qué es skill?

Esta habilidad (skill) proporciona procedimientos probados, configuraciones de optimización y patrones de código para automatizar Blender 5.2+ con Python, enfocándose en el renderizado Cycles de alto rendimiento y la exportación de video. Cubre las nuevas API de Blender 5.2, como el uso de `compositing_node_group` en lugar de `scene.node_tree` y el requisito de configurar `media_type` a `'VIDEO'` antes de seleccionar `'FFMPEG'` para exportar video. Incluye una configuración de renderizado Cycles extremadamente optimizada que puede reducir los tiempos de renderizado de ~56s a ~3s por fotograma utilizando OptiX, Fast GI y el denoising de IA, manteniendo la calidad de estudio. También aborda la comunicación a través de sockets IPC para modelado interactivo y el renderizado de animaciones por CLI para evitar bloqueos, e incluye patrones de modelado como párpados orgánicos con shape keys y partículas de humo procedurales. La habilidad es útil para desarrolladores que buscan integrar Blender en flujos de trabajo automatizados, ya sea para IA, pruebas o producción.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Pingwink/skill/tree/HEAD/skills/blender-cycles-video-workflow

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Automatización de Blender 5.2, Optimización de Cycles y Flujo de Trabajo de Video

Esta guía (skill) contiene procedimientos probados, configuraciones de optimización y patrones de código desarrollados durante el modelado, la animación y el renderizado de escenas en Blender 5.2.


1. Arquitectura de Comunicación y Renderizado

A. Control de Sesión Interactiva (Socket IPC)

Para modelado interactivo, modificación de materiales y fotogramas de prueba, usa un cliente socket:

  • Puerto: 127.0.0.1:9876 (plugin Blender MCP / socket bridge)
  • Protocolo: JSON terminado con byte nulo \0 ({"type": "execute", "code": "...", "strict_json": true})

B. Renderizado de Animación en Segundo Plano (CLI Headless)

Regla: No renderices animaciones largas a través del socket (riesgo de congelar la GUI o timeout). Guarda la escena en un archivo .blend y ejecuta un proceso CLI dedicado en segundo plano:

& "C:\Program Files\Blender Foundation\Blender 5.2\blender.exe" -b "ruta\al\proyecto.blend" -s 1 -e 108 -a
  • Ventajas: Renderizado 15–20% más rápido (sin sobrecarga de OpenGL/viewport), transmisión del progreso fotograma a fotograma en stdout, sin bloqueo de la interfaz.

2. Cambios Clave de API en Blender 5.2+

A. Exportación de Video a FFMPEG / MP4

En Blender 5.2, asignar file_format = 'FFMPEG' directamente a la configuración predeterminada genera un error TypeError. Primero debes cambiar media_type:

import bpy

scene = bpy.context.scene
ims = scene.render.image_settings

# 1. Requerido en Blender 5.2 antes de seleccionar el formato de video:
ims.media_type = 'VIDEO'
ims.file_format = 'FFMPEG'

# 2. Configuración del contenedor y códec:
scene.render.ffmpeg.format = 'MPEG4'
scene.render.ffmpeg.codec = 'H264'
scene.render.ffmpeg.constant_rate_factor = 'HIGH'
scene.render.ffmpeg.ffmpeg_preset = 'REALTIME' # Opciones: 'BEST', 'GOOD', 'REALTIME'

B. Compositor (Grupo de Nodos de Composición)

Blender 5.2 introduce compositing_node_group en lugar del antiguo scene.node_tree y NodeGroupOutput en lugar de CompositorNodeComposite:

scene = bpy.context.scene
scene.use_nodes = True

ng = scene.compositing_node_group
if not ng:
    ng = bpy.data.node_groups.new(name="Composición", type='CompositorNodeTree')
    scene.compositing_node_group = ng

# Creación de entradas/salidas
rl = ng.nodes.new('CompositorNodeRLayers')
glare = ng.nodes.new('CompositorNodeGlare')
out = ng.nodes.new('NodeGroupOutput')

# En Blender 5.2, los parámetros de Glare son sockets, no propiedades de objeto:
glare.inputs['Type'].default_value = 'Fog Glow'
glare.inputs['Threshold'].default_value = 0.55
glare.inputs['Size'].default_value = 7.0
glare.inputs['Strength'].default_value = 0.8

3. Optimización Extrema de Cycles (Render GPU 16× Más Rápido)

Configuración que reduce el tiempo de renderizado de ~56 s a ~3 s por fotograma manteniendo la calidad de estudio:

import bpy

scene = bpy.context.scene
scene.render.engine = 'CYCLES'

# 1. OptiX Ray Tracing y Configuración de GPU
cpref = bpy.context.preferences.addons['cycles'].preferences
cpref.compute_device_type = 'OPTIX'
cpref.get_devices()

# Activar solo la tarjeta gráfica NVIDIA (desactivar CPU lento)
for device in cpref.devices:
    if device.type == 'OPTIX' and 'GeForce' in device.name:
        device.use = True
    else:
        device.use = False

cycles = scene.cycles
cycles.device = 'GPU'

# 2. Muestreo inteligente con desnoising AI
cycles.samples = 10                  # ¡Suficientes 10-12 muestras con OptiX Denoiser!
cycles.use_denoising = True
cycles.denoiser = 'OPTIX'

# 3. Fast GI y Límite de Rebotes de Luz (Light Bounces)
cycles.use_fast_gi = True
cycles.max_bounces = 4
cycles.diffuse_bounces = 2
cycles.glossy_bounces = 2
cycles.transmission_bounces = 2
cycles.volume_bounces = 1
cycles.transparent_max_bounces = 4
cycles.caustics_reflective = False
cycles.caustics_refractive = False

# 4. Reutilización de datos de geometría entre fotogramas
scene.render.use_persistent_data = True

4. Patrones de Modelado y Animación

A. Párpados Orgánicos (Shape Keys + Perfil Cuadrado)

  • Deforma el borde superior del párpado hacia abajo manteniendo la elipse del ojo: closed_z = -h_bot * math.sqrt(max(0.0, 1.0 - (x / w_eye)**2))
  • Anima simultáneamente el pliegue de la piel (crease) y un sutil movimiento de rotación del globo ocular hacia abajo al cerrar los párpados para lograr una expresión cansada y natural.
  • Usa interpolación BEZIER con EASE_IN_OUT para una aceleración y desaceleración suave del movimiento del párpado.

B. Partículas Procedurales de Humo y Vórtices

  • Crea espirales con bmesh: radius = r_base + delta * t, spiral_angle = base_angle + t * turns * pi.
  • Usa un material Principled BSDF con transparencia basada en ShaderNodeTexNoise mezclado con un ColorRamp.
  • Bucles de rotación con interpolation = 'LINEAR' (desde un ángulo de 0 hasta múltiplos de 360°) para que el movimiento de las partículas sea uniforme y repetible.

5. Flujo de Verificación Antes del Renderizado Completo

  1. Siempre renderiza 1 fotograma de prueba con el objeto abierto y 1 con el objeto cerrado/máximamente transformado.
  2. Mide el tiempo de ejecución de un solo fotograma: tiempo_animación = número_de_fotogramas * tiempo_por_fotograma
  3. Prueba un renderizado CLI corto de 2 fotogramas (-s 1 -e 2 -a) para verificar que el archivo de video se escriba correctamente.

Skills relacionados