render-blender-output
Acerca de
Esta habilidad automatiza la renderización en Blender configurando ajustes, nodos de composición y formatos de salida mediante la API de Python o la línea de comandos. Soporta tanto los motores Cycles como EEVEE para procesamiento por lotes, ajuste de calidad/rendimiento y flujos de trabajo de postprocesamiento. Úsela para generar múltiples formatos de salida a partir de una sola renderización para flujos de trabajo de publicación o presentación.
Instalación rápida
Claude Code
Recomendadonpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/render-blender-outputCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
Blender-Ausgabe rendern
Render-Engines (Cycles, EEVEE) konfigurieren, Ausgabeparameter festlegen, Compositing-Knotengraphen erstellen und Renders ueber Python-API oder Kommandozeilenschnittstelle ausfuehren. Umfasst Rendereinstellungs-Optimierung, Dateiformatwahl und Nachbearbeitungs-Workflows.
Wann verwenden
- Render-Ausfuehrung fuer Stapelverarbeitung automatisieren
- Renderqualitaet und Leistungskompromisse konfigurieren
- Compositing-Pipelines fuer Nachbearbeitung einrichten
- Mehrere Ausgabeformate aus einem einzelnen Render erzeugen
- Rendereinstellungen fuer verschiedene Hardware optimieren
- Kommandozeilen-Rendering-Workflows erstellen
- Endausgabe fuer Veroeffentlichung oder Praesentation produzieren
Eingaben
| Eingabe | Typ | Beschreibung | Beispiel |
|---|---|---|---|
| Szenendatei | .blend-Datei | Zu rendernde Blender-Szene | scene.blend |
| Render-Engine | String | Cycles, EEVEE oder Workbench | CYCLES |
| Qualitaetseinstellungen | Parameter | Samples, Aufloesung, Entrauschen | 128 Samples, 1920x1080, OptiX-Entrauscher |
| Ausgabeformat | String | PNG, EXR, JPEG, TIFF | OPEN_EXR, 16-Bit, ZIP-Kompression |
| Compositing-Setup | Knotengraph | Nachbearbeitungseffekte | Farbkorrektur, Glanz, Vignette |
| Ausgabepfad | Dateipfad | Renderziel | /renders/output_####.png |
Vorgehensweise
Schritt 1: Render-Engine konfigurieren
Render-Engine und Grundparameter festlegen:
import bpy
def setup_cycles_engine():
"""Cycles-Render-Engine konfigurieren."""
scene = bpy.context.scene
scene.render.engine = 'CYCLES'
# Geraeteeinstellungen
scene.cycles.device = 'GPU' # oder 'CPU'
# Sampling
scene.cycles.samples = 128
scene.cycles.use_adaptive_sampling = True
scene.cycles.adaptive_threshold = 0.01
# Entrauschen
scene.cycles.use_denoising = True
scene.cycles.denoiser = 'OPTIX' # oder 'OPENIMAGEDENOISE', 'NLM'
# Lichtpfade
scene.cycles.max_bounces = 12
scene.cycles.diffuse_bounces = 4
scene.cycles.glossy_bounces = 4
scene.cycles.transmission_bounces = 12
scene.cycles.volume_bounces = 0
def setup_eevee_engine():
"""EEVEE-Render-Engine konfigurieren."""
scene = bpy.context.scene
scene.render.engine = 'BLENDER_EEVEE'
# Sampling
scene.eevee.taa_render_samples = 64
# Effekte
scene.eevee.use_bloom = True
scene.eevee.bloom_threshold = 0.8
scene.eevee.bloom_intensity = 0.1
scene.eevee.use_gtao = True # Umgebungsverdeckung
scene.eevee.gtao_distance = 0.2
scene.eevee.use_ssr = True # Bildschirmraum-Reflexionen
scene.eevee.ssr_quality = 0.5
# Schatten
scene.eevee.shadow_cube_size = '1024'
scene.eevee.shadow_cascade_size = '1024'
Erwartet: Render-Engine mit geeigneten Qualitaetseinstellungen konfiguriert Bei Fehler: Engine-Namensbuchstabierung pruefen, GPU-Verfuegbarkeit fuer GPU-Rendering verifizieren
Schritt 2: Aufloesung und Ausgabeformat festlegen
Ausgabedimensionen und Dateiformat konfigurieren:
def configure_output(width=1920, height=1080, file_format='PNG', color_depth='16'):
"""Ausgabeaufloesung und -format festlegen."""
scene = bpy.context.scene
# Aufloesung
scene.render.resolution_x = width
scene.render.resolution_y = height
scene.render.resolution_percentage = 100
# Seitenverhaeltnis
scene.render.pixel_aspect_x = 1.0
scene.render.pixel_aspect_y = 1.0
# Dateiformat
scene.render.image_settings.file_format = file_format
if file_format == 'PNG':
scene.render.image_settings.color_mode = 'RGBA'
scene.render.image_settings.color_depth = color_depth # '8' oder '16'
scene.render.image_settings.compression = 15 # 0-100
elif file_format == 'OPEN_EXR':
scene.render.image_settings.color_mode = 'RGBA'
scene.render.image_settings.color_depth = '32' # oder '16'
scene.render.image_settings.exr_codec = 'ZIP' # oder 'DWAA', 'PIZ'
elif file_format == 'JPEG':
scene.render.image_settings.color_mode = 'RGB'
scene.render.image_settings.quality = 90 # 0-100
elif file_format == 'TIFF':
scene.render.image_settings.color_mode = 'RGBA'
scene.render.image_settings.color_depth = color_depth
scene.render.image_settings.tiff_codec = 'DEFLATE'
# Bildbereich (fuer Animationen)
scene.frame_start = 1
scene.frame_end = 250
scene.frame_step = 1
Erwartet: Ausgabeformat und Aufloesung korrekt konfiguriert Bei Fehler: Formatnamen auf Gueltigkeit pruefen, Farbtiefe-Kompatibilitaet mit Format verifizieren
Schritt 3: Compositing konfigurieren
Compositing-Knotengraph einrichten:
def setup_compositing():
"""Compositing-Knoten-Setup erstellen."""
scene = bpy.context.scene
scene.use_nodes = True
tree = scene.node_tree
nodes = tree.nodes
links = tree.links
# Standardknoten loeschen
nodes.clear()
# Render-Ebenen-Eingabe
render_layers = nodes.new(type='CompositorNodeRLayers')
render_layers.location = (-400, 300)
# Farbkorrektur
color_correct = nodes.new(type='CompositorNodeColorCorrection')
color_correct.location = (0, 300)
color_correct.master_saturation = 1.1
color_correct.master_gain = 1.05
# Glanz-Effekt
glare = nodes.new(type='CompositorNodeGlare')
glare.location = (200, 200)
glare.glare_type = 'FOG_GLOW'
glare.threshold = 0.9
glare.size = 8
# Vignette
lens_distortion = nodes.new(type='CompositorNodeLensdist')
lens_distortion.location = (200, 0)
lens_distortion.inputs['Dispersion'].default_value = 0.0
lens_distortion.inputs['Distortion'].default_value = -0.02
# Mischknoten
mix1 = nodes.new(type='CompositorNodeMixRGB')
mix1.location = (400, 250)
mix1.blend_type = 'ADD'
mix1.inputs['Fac'].default_value = 0.3
# Composite-Ausgabe
composite = nodes.new(type='CompositorNodeComposite')
composite.location = (600, 300)
# Betrachter-Ausgabe (fuer Vorschau)
viewer = nodes.new(type='CompositorNodeViewer')
viewer.location = (600, 100)
# Knoten verbinden
links.new(render_layers.outputs['Image'], color_correct.inputs['Image'])
links.new(color_correct.outputs['Image'], mix1.inputs[1])
links.new(color_correct.outputs['Image'], glare.inputs['Image'])
links.new(glare.outputs['Image'], mix1.inputs[2])
links.new(mix1.outputs['Image'], composite.inputs['Image'])
links.new(mix1.outputs['Image'], viewer.inputs['Image'])
Erwartet: Compositing-Knoten mit Nachbearbeitungseffekten konfiguriert Bei Fehler: Knotentyp-Namen pruefen, Eingaenge verifizieren, Verbindungsgueltigkeit sicherstellen
Schritt 4: Ausgabedateipfade festlegen
Ausgabedatei-Benennung mit Bildnummern konfigurieren:
import os
from pathlib import Path
def set_output_path(base_dir, project_name, use_frame_number=True):
"""Ausgabedateipfad konfigurieren."""
scene = bpy.context.scene
# Ausgabeverzeichnis erstellen
output_dir = Path(base_dir) / project_name / "renders"
output_dir.mkdir(parents=True, exist_ok=True)
# Dateipfad festlegen
if use_frame_number:
# #### wird durch Bildnummer ersetzt (0001, 0002, usw.)
filename = f"{project_name}_####"
else:
filename = project_name
scene.render.filepath = str(output_dir / filename)
Erwartet: Ausgabeverzeichnis erstellt, Dateipfad mit Bildnummerierung konfiguriert Bei Fehler: Verzeichnisberechtigungen pruefen, Pfadsyntax fuer Betriebssystem verifizieren
Schritt 5: Ansichtsebenen und Paesse konfigurieren
Render-Paesse fuer Compositing einrichten:
def configure_view_layers():
"""Render-Paesse aktivieren."""
scene = bpy.context.scene
view_layer = scene.view_layers['ViewLayer']
# Paesse aktivieren
view_layer.use_pass_combined = True
view_layer.use_pass_z = True # Tiefe
view_layer.use_pass_mist = False
view_layer.use_pass_normal = True
view_layer.use_pass_vector = True # Bewegungsvektoren
view_layer.use_pass_ambient_occlusion = True
# Cycles-spezifische Paesse
cycles = view_layer.cycles
cycles.use_pass_diffuse_direct = True
cycles.use_pass_diffuse_indirect = True
cycles.use_pass_glossy_direct = True
cycles.use_pass_glossy_indirect = True
cycles.use_pass_emission = True
cycles.use_pass_environment = True
# Cryptomatte-Paesse (fuer Postproduktion)
cycles.use_pass_crypto_object = True
cycles.use_pass_crypto_material = True
cycles.use_pass_crypto_asset = True
Erwartet: Render-Paesse fuer erweitertes Compositing aktiviert Bei Fehler: Verfuegbarkeit der Paesse fuer aktuelle Engine pruefen, Ansichtsebenen-Namen verifizieren
Schritt 6: Render ausfuehren
Ueber Python-API oder Kommandozeile rendern:
def render_still():
"""Aktuelles Bild rendern."""
bpy.ops.render.render(write_still=True)
def render_animation():
"""Animations-Bildbereich rendern."""
bpy.ops.render.render(animation=True)
def render_frame(frame_number):
"""Bestimmtes Bild rendern."""
scene = bpy.context.scene
scene.frame_set(frame_number)
bpy.ops.render.render(write_still=True)
# Kommandozeilen-Rendering (vom Terminal ausfuehren)
# Einzelbild:
# blender scene.blend --background --render-frame 1
# Animation:
# blender scene.blend --background --render-anim
# Bestimmter Bildbereich:
# blender scene.blend --background --frame-start 10 --frame-end 20 --render-anim
# Ausgabepfad ueberschreiben:
# blender scene.blend --background --render-output /tmp/render_#### --render-anim
# Python-Skript verwenden:
# blender scene.blend --background --python render_script.py
Erwartet: Render wird ausgefuehrt, Ausgabedateien an angegebenen Ort geschrieben Bei Fehler: Szenen-Setup pruefen, Kamera-Existenz verifizieren, Schreibberechtigung des Ausgabeverzeichnisses sicherstellen
Schritt 7: Stapelrender aus mehreren Kameras
Aus mehreren Kamerawinkeln rendern:
def render_all_cameras(output_dir):
"""Szene aus allen Kameras rendern."""
scene = bpy.context.scene
original_camera = scene.camera
cameras = [obj for obj in bpy.data.objects if obj.type == 'CAMERA']
for camera in cameras:
# Aktive Kamera setzen
scene.camera = camera
# Ausgabepfad aktualisieren
camera_name = camera.name.replace(' ', '_')
scene.render.filepath = os.path.join(output_dir, f"{camera_name}_####")
# Rendern
bpy.ops.render.render(write_still=True)
print(f"Gerendert von Kamera: {camera.name}")
# Urspruengliche Kamera wiederherstellen
scene.camera = original_camera
Erwartet: Renders fuer jede Kamera in der Szene erzeugt Bei Fehler: Kamera-Existenz pruefen, korrekte Positionierung jeder Kamera verifizieren
Schritt 8: Renderleistung optimieren
Leistungseinstellungen konfigurieren:
def optimize_performance():
"""Rendereinstellungen fuer Geschwindigkeit optimieren."""
scene = bpy.context.scene
if scene.render.engine == 'CYCLES':
# Kachelgroesse (GPU: groessere Kacheln, CPU: kleinere Kacheln)
if scene.cycles.device == 'GPU':
scene.render.tile_x = 256
scene.render.tile_y = 256
else:
scene.render.tile_x = 32
scene.render.tile_y = 32
# Leistungseinstellungen
scene.cycles.use_adaptive_sampling = True
scene.render.use_persistent_data = True # Szene im Speicher halten
# Lichtpfad-Komplexitaet fuer Vorschau reduzieren
scene.cycles.max_bounces = 4
scene.cycles.diffuse_bounces = 2
scene.cycles.glossy_bounces = 2
# Progressives Verfeinern (fuer Viewport)
scene.cycles.use_progressive_refine = True
elif scene.render.engine == 'BLENDER_EEVEE':
# Vereinfachungseinstellungen fuer Vorschau
scene.render.use_simplify = True
scene.render.simplify_subdivision = 2
# Sampling reduzieren
scene.eevee.taa_render_samples = 32
Erwartet: Rendereinstellungen fuer Zielhardware optimiert Bei Fehler: Zuerst mit niedrigerer Qualitaet testen, Speicherverbrauch ueberwachen
Validierung
- Render-Engine korrekt konfiguriert (Cycles/EEVEE)
- Aufloesung und Seitenverhaeltnis entsprechen Anforderungen
- Ausgabeformat fuer Anwendungsfall geeignet
- Farbtiefe und Kompressionseinstellungen verifiziert
- Compositing-Knoten korrekt verbunden
- Ausgabeverzeichnis existiert und ist beschreibbar
- Dateiname enthaelt Bildnummerierung falls noetig
- Render-Paesse wie erforderlich aktiviert
- Kamera korrekt in Szene positioniert
- Testrender wird fehlerfrei abgeschlossen
- Ausgabedateien haben korrektes Format und Qualitaet
Haeufige Stolperfallen
- Fehlende Kamera: Szene muss aktive Kamera fuer Rendering gesetzt haben
- Ausgabepfad nicht gesetzt: Immer
scene.render.filepathvor dem Rendern angeben - Unzureichende Samples: Niedrige Sample-Anzahlen verursachen Rauschen in Cycles-Renders
- Falscher Farbraum: Farbmanagement-Einstellungen fuer korrekte Anzeige pruefen
- Dateiformat-Inkompatibilitaet: Nicht alle Formate unterstuetzen alle Farbtiefen
- Speicherueberlauf: Grosse Aufloesungen oder komplexe Szenen koennen RAM ueberschreiten
- GPU-Speichermangel: Kachelgroesse reduzieren oder fuer grosse Szenen auf CPU wechseln
- Hintergrundmodus-Ausgabe: Im Hintergrundmodus muss --render-output Flag oder filepath gesetzt werden
- Bildnummer-Formatierung: #### fuer automatische Bildnummer-Auffuellung verwenden
- Compositing deaktiviert:
scene.use_nodesaktivieren um Compositing zu verwenden
Verwandte Skills
- create-3d-scene: Szenen-Setup vor dem Rendern erforderlich
- script-blender-automation: Stapelrender-Automatisierungsmuster
- render-publication-graphic: Veroeffentlichungs-Ausgabeanforderungen und Formatierung
Repositorio GitHub
Habilidades relacionadas
qmd
Desarrolloqmd es una herramienta CLI de búsqueda e indexación local que permite a los desarrolladores indexar y buscar en archivos locales mediante búsqueda híbrida que combina BM25, embeddings vectoriales y reranking. Es compatible tanto con uso desde la línea de comandos como con modo MCP (Model Context Protocol) para integración con Claude. La herramienta utiliza Ollama para los embeddings y almacena los índices localmente, lo que la hace ideal para buscar documentación o bases de código directamente desde la terminal.
subagent-driven-development
DesarrolloEsta habilidad ejecuta planes de implementación asignando un nuevo subagente para cada tarea independiente, con revisión de código entre tareas. Permite una iteración rápida mientras mantiene controles de calidad a través de este proceso de revisión. Úsala cuando trabajes en tareas mayormente independientes dentro de la misma sesión para garantizar un progreso continuo con verificaciones de calidad integradas.
mcporter
DesarrolloLa habilidad mcporter permite a los desarrolladores gestionar y llamar servidores del Protocolo de Contexto de Modelo (MCP) directamente desde Claude. Proporciona comandos para listar servidores disponibles, llamar a sus herramientas con argumentos, y manejar la autenticación y el ciclo de vida del daemon. Utiliza esta habilidad para integrar y probar la funcionalidad de servidores MCP en tu flujo de trabajo de desarrollo.
adk-deployment-specialist
DesarrolloEsta habilidad despliega y orquesta agentes Vertex AI ADK utilizando el protocolo A2A, gestionando el descubrimiento de AgentCard, el envío de tareas y soportando herramientas como el Sandbox de Ejecución de Código y el Banco de Memoria. Permite construir sistemas multiagente con patrones de orquestación secuencial, paralela o en bucle en Python, Java o Go. Úsela cuando se le solicite desplegar agentes ADK u orquestar flujos de trabajo de agentes en Google Cloud.
