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