MCP HubMCP Hub
스킬 목록으로 돌아가기

render-blender-output

pjt222
업데이트됨 2 days ago
4 조회
17
2
17
GitHub에서 보기
개발apiautomation

정보

이 스킬은 Python API나 명령줄을 통해 설정 구성, 컴포지팅 노드, 출력 형식을 자동화하여 Blender 렌더링을 수행합니다. Cycles와 EEVEE 엔진을 모두 지원하며 배치 처리, 품질/성능 조정, 후처리 파이프라인에 활용됩니다. 단일 렌더링으로부터 출판이나 프레젠테이션 워크플로우에 필요한 여러 출력 형식을 생성하는 데 사용할 수 있습니다.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/render-blender-output

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

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

EingabeTypBeschreibungBeispiel
Szenendatei.blend-DateiZu rendernde Blender-Szenescene.blend
Render-EngineStringCycles, EEVEE oder WorkbenchCYCLES
QualitaetseinstellungenParameterSamples, Aufloesung, Entrauschen128 Samples, 1920x1080, OptiX-Entrauscher
AusgabeformatStringPNG, EXR, JPEG, TIFFOPEN_EXR, 16-Bit, ZIP-Kompression
Compositing-SetupKnotengraphNachbearbeitungseffekteFarbkorrektur, Glanz, Vignette
AusgabepfadDateipfadRenderziel/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

  1. Fehlende Kamera: Szene muss aktive Kamera fuer Rendering gesetzt haben
  2. Ausgabepfad nicht gesetzt: Immer scene.render.filepath vor dem Rendern angeben
  3. Unzureichende Samples: Niedrige Sample-Anzahlen verursachen Rauschen in Cycles-Renders
  4. Falscher Farbraum: Farbmanagement-Einstellungen fuer korrekte Anzeige pruefen
  5. Dateiformat-Inkompatibilitaet: Nicht alle Formate unterstuetzen alle Farbtiefen
  6. Speicherueberlauf: Grosse Aufloesungen oder komplexe Szenen koennen RAM ueberschreiten
  7. GPU-Speichermangel: Kachelgroesse reduzieren oder fuer grosse Szenen auf CPU wechseln
  8. Hintergrundmodus-Ausgabe: Im Hintergrundmodus muss --render-output Flag oder filepath gesetzt werden
  9. Bildnummer-Formatierung: #### fuer automatische Bildnummer-Auffuellung verwenden
  10. Compositing deaktiviert: scene.use_nodes aktivieren um Compositing zu verwenden

Verwandte Skills

GitHub 저장소

pjt222/agent-almanac
경로: i18n/de/skills/render-blender-output
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

qmd

개발

qmd는 BM25, 벡터 임베딩, 재순위화를 결합한 하이브리드 검색을 통해 로컬 파일을 색인화하고 검색할 수 있는 로컬 검색 및 색인화 CLI 도구입니다. 명령줄 사용과 Claude 통합을 위한 MCP(Model Context Protocol) 모드를 모두 지원합니다. 이 도구는 임베딩에 Ollama를 사용하고 색인을 로컬에 저장하여 터미널에서 직접 문서나 코드베이스를 검색하는 데 이상적입니다.

스킬 보기

subagent-driven-development

개발

이 스킬은 각 독립적인 작업마다 새로운 하위 에이전트를 배치하고 작업 사이에 코드 리뷰를 진행하여 구현 계획을 실행합니다. 이 리뷰 프로세스를 통해 품질 게이트를 유지하면서 빠른 반복 작업을 가능하게 합니다. 동일한 세션 내에서 대부분 독립적인 작업을 진행할 때 내장된 품질 검증과 함께 지속적인 진행을 보장하기 위해 사용하세요.

스킬 보기

mcporter

개발

mcporter 스킬은 개발자가 Claude에서 직접 Model Context Protocol(MCP) 서버를 관리하고 호출할 수 있도록 합니다. 이 스킬은 사용 가능한 서버를 나열하고, 인수를 사용해 해당 서버의 도구를 호출하며, 인증 및 데몬 생명주기를 처리하는 명령어를 제공합니다. 개발 워크플로우에서 MCP 서버 기능을 통합하고 테스트할 때 이 스킬을 사용하세요.

스킬 보기

adk-deployment-specialist

개발

이 스킬은 A2A 프로토콜을 사용하여 Vertex AI ADK 에이전트를 배포하고 오케스트레이션하며, AgentCard 검색, 작업 제출, 코드 실행 샌드박스 및 메모리 뱅크와 같은 지원 도구를 관리합니다. Python, Java 또는 Go 언어로 순차, 병렬 또는 루프 오케스트레이션 패턴을 갖춘 다중 에이전트 시스템 구축을 가능하게 합니다. Google Cloud에서 ADK 에이전트 배포 또는 에이전트 워크플로우 오케스트레이션을 요청받았을 때 사용하세요.

스킬 보기