Communitygithub.com

Pingwink/skill

>- Use this skill when automating Blender via Python, configuring high-performance Cycles GPU renders (OptiX, denoising, Fast GI), resolving Blender 5.2+ API changes (compositing node groups, media_type VIDEO), and rendering animations to MP4/H.264.

What is skill?

skill is a Claude Code agent skill that >- Use this skill when automating Blender via Python, configuring high-performance Cycles GPU renders (OptiX, denoising, Fast GI), resolving Blender 5.2+ API changes (compositing node groups, media_type VIDEO), and rendering animations to MP4/H.264.

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

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Blender 5.2 Automation, Cycles Optimization & Video Workflow

Ten przewodnik (skill) zawiera sprawdzone procedury, konfiguracje optymalizacyjne i wzorce kodu wypracowane podczas modelowania, animacji i renderowania scen w Blenderze 5.2.


1. Architektura komunikacji i renderowania

A. Sterowanie sesją interaktywną (Socket IPC)

Do interaktywnego modelowania, modyfikacji materiałów i testowych klatek używaj klienta socketowego:

  • Port: 127.0.0.1:9876 (wtyczka Blender MCP / socket bridge)
  • Protokół: JSON zakończony bajtem null \0 ({"type": "execute", "code": "...", "strict_json": true})

B. Renderowanie animacji w tle (Headless CLI)

Zasada: Nie renderuj długich animacji przez socket (grozi zawieszeniem GUI lub timeoutem). Zapisz scenę do .blend i uruchom dedykowany proces CLI w tle:

& "C:\Program Files\Blender Foundation\Blender 5.2\blender.exe" -b "sciezka\do\projektu.blend" -s 1 -e 108 -a
  • Zalety: 15–20% szybszy render (brak narzutu OpenGL/viewportu), strumieniowanie postępu klatka po klatce w stdout, brak blokowania interfejsu.

2. Kluczowe zmiany API w Blenderze 5.2+

A. Eksport wideo do FFMPEG / MP4

W Blenderze 5.2 przypisanie file_format = 'FFMPEG' bezpośrednio do domyślnych ustawień generuje błąd TypeError. Należy najpierw przestawić media_type:

import bpy

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

# 1. Wymagane w Blenderze 5.2 przed wyborem formatu wideo:
ims.media_type = 'VIDEO'
ims.file_format = 'FFMPEG'

# 2. Konfiguracja kontenera i kodeka:
scene.render.ffmpeg.format = 'MPEG4'
scene.render.ffmpeg.codec = 'H264'
scene.render.ffmpeg.constant_rate_factor = 'HIGH'
scene.render.ffmpeg.ffmpeg_preset = 'REALTIME' # Opcje: 'BEST', 'GOOD', 'REALTIME'

B. Compositor (Compositing Node Group)

Blender 5.2 wprowadza compositing_node_group zamiast starego scene.node_tree oraz NodeGroupOutput zamiast CompositorNodeComposite:

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

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

# Tworzenie wejść/wyjść
rl = ng.nodes.new('CompositorNodeRLayers')
glare = ng.nodes.new('CompositorNodeGlare')
out = ng.nodes.new('NodeGroupOutput')

# W Blenderze 5.2 parametry Glare są socketami, a nie właściwościami obiektu:
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. Ekstremalna optymalizacja Cycles (16× Faster GPU Render)

Konfiguracja redukująca czas renderu z ~56 s do ~3 s na klatkę przy zachowaniu jakości studyjnej:

import bpy

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

# 1. OptiX Ray Tracing & GPU Setup
cpref = bpy.context.preferences.addons['cycles'].preferences
cpref.compute_device_type = 'OPTIX'
cpref.get_devices()

# Aktywuj wyłącznie kartę graficzną NVIDIA (wyłącz wolny CPU)
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. Inteligentne próbkowanie z odszumianiem AI
cycles.samples = 10                  # Wystarczy 10-12 próbek przy OptiX Denoiser!
cycles.use_denoising = True
cycles.denoiser = 'OPTIX'

# 3. Fast GI & Limit odbić światła (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. Ponowne wykorzystanie danych geometrii między klatkami
scene.render.use_persistent_data = True

4. Wzorce modelowania i animacji

A. Organiczne powieki (Shape Keys + profil kwadratowy)

  • Deformuj górną krawędź powieki ku dolnej z zachowaniem elipsy oka: closed_z = -h_bot * math.sqrt(max(0.0, 1.0 - (x / w_eye)**2))
  • Równolegle animuj fałdę skóry (crease) oraz subtelny ruch obrotowy gałki ocznej w dół przy zamknięciu powiek dla uzyskania zmęczonego, naturalnego wyrazu.
  • Stosuj interpolację BEZIER z EASE_IN_OUT dla płynnego przyspieszania i zwalniania ruchu powieki.

B. Proceduralne cząsteczki dymu i wirów

  • Twórz pasma spiralne za pomocą bmesh: radius = r_base + delta * t, spiral_angle = base_angle + t * turns * pi.
  • Używaj materiału Principled BSDF z przezroczystością opartą na ShaderNodeTexNoise zmiksowanym w ColorRamp.
  • Zapętlaj rotację z interpolation = 'LINEAR' (od kąta 0 do wielokrotności 360°), aby ruch cząsteczek był jednostajny i powtarzalny.

5. Przebieg weryfikacji przed pełnym renderem

  1. Zawsze wyrenderuj 1 klatkę testową z otwartym obiektem i 1 z zamkniętym/maksymalnie przekształconym.
  2. Zmierz czas wykonania pojedynczej klatki: czas_animacji = liczba_klatek * czas_pojedynczej_klatki
  3. Przetestuj krótki render CLI 2 klatek (-s 1 -e 2 -a), aby zweryfikować poprawność zapisu pliku wideo.

Related Skills