Blender 5.2 自動化、Cycles 優化與影片工作流程
此指南(技能)包含在 Blender 5.2 中進行建模、動畫和場景渲染時,經過驗證的程序、優化配置和程式碼模式。
1. 通訊與渲染架構
A. 控制互動式會話(Socket IPC)
若要進行互動式建模、材質修改和測試影格,請使用 Socket 客戶端:
- 連接埠:
127.0.0.1:9876(Blender MCP 插件 / socket bridge) - 通訊協定: 以空字元
\0結尾的 JSON({"type": "execute", "code": "...", "strict_json": true})
B. 背景動畫渲染(Headless CLI)
原則: 請勿透過 socket 渲染長動畫(可能導致 GUI 當機或請求逾時)。
請將場景儲存為 .blend 檔案,並在背景啟動一個專用的 CLI 程序:
& "C:\Program Files\Blender Foundation\Blender 5.2\blender.exe" -b "路徑\到\專案.blend" -s 1 -e 108 -a
- 優點: 渲染速度快 15–20%(無 OpenGL/視埠開銷)、在 stdout 中逐格串流進度、不會阻塞介面。
2. Blender 5.2+ 中的關鍵 API 變更
A. 影片匯出至 FFMPEG / MP4
在 Blender 5.2 中,直接對預設設定賦值 file_format = 'FFMPEG' 會導致 TypeError 錯誤。您必須先設定 media_type:
import bpy
scene = bpy.context.scene
ims = scene.render.image_settings
# 1. 在 Blender 5.2 中,選擇影片格式前必須先執行此步驟:
ims.media_type = 'VIDEO'
ims.file_format = 'FFMPEG'
# 2. 設定容器與編解碼器:
scene.render.ffmpeg.format = 'MPEG4'
scene.render.ffmpeg.codec = 'H264'
scene.render.ffmpeg.constant_rate_factor = 'HIGH'
scene.render.ffmpeg.ffmpeg_preset = 'REALTIME' # 選項:'BEST', 'GOOD', 'REALTIME'
B. 合成器(Compositing Node Group)
Blender 5.2 引入了 compositing_node_group 來取代舊的 scene.node_tree,並使用 NodeGroupOutput 取代 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
# 建立輸入/輸出
rl = ng.nodes.new('CompositorNodeRLayers')
glare = ng.nodes.new('CompositorNodeGlare')
out = ng.nodes.new('NodeGroupOutput')
# 在 Blender 5.2 中,Glare 的參數是 Socket,而非物件的屬性:
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. Cycles 極致優化(16 倍 GPU 渲染加速)
以下配置可在維持工作室品質的同時,將每影格渲染時間從約 56 秒縮短至約 3 秒:
import bpy
scene = bpy.context.scene
scene.render.engine = 'CYCLES'
# 1. OptiX 光線追蹤與 GPU 設定
cpref = bpy.context.preferences.addons['cycles'].preferences
cpref.compute_device_type = 'OPTIX'
cpref.get_devices()
# 僅啟用 NVIDIA 顯示卡(停用較慢的 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. 搭配 AI 降噪的智慧取樣
cycles.samples = 10 # 搭配 OptiX Denoiser 時,10-12 個樣本就足夠!
cycles.use_denoising = True
cycles.denoiser = 'OPTIX'
# 3. Fast GI 與光線反彈次數限制(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. 在影格之間重複使用幾何資料
scene.render.use_persistent_data = True
4. 建模與動畫模式
A. 有機眼皮(形狀鍵 + 方形輪廓)
- 將上眼瞼邊緣向下變形,同時保持眼睛的橢圓形狀:
closed_z = -h_bot * math.sqrt(max(0.0, 1.0 - (x / w_eye)**2)) - 同時對皮膚皺摺(crease)進行動畫,並在閉眼時讓眼球輕微向下旋轉,以呈現疲憊、自然的表情。
- 使用
BEZIER插值搭配EASE_IN_OUT,以實現流暢的加減速眨眼動作。
B. 程式化煙霧與漩渦粒子
- 使用
bmesh建立螺旋線條:radius = r_base + delta * t,spiral_angle = base_angle + t * turns * pi。 - 使用 Principled BSDF 材質,並透過
ShaderNodeTexNoise與 ColorRamp 混合來實現透明度效果。 - 使用
interpolation = 'LINEAR'循環旋轉(從 0 度到 360 度的倍數),使粒子運動穩定且可重複。
5. 完整渲染前的驗證流程
- 務必先渲染 1 個測試影格(處於開啟狀態的物體)和 1 個測試影格(處於閉合/最大變形狀態的物體)。
- 測量單一影格的執行時間:
動畫時間 = 影格數量 * 單一影格時間 - 測試一個簡短的 CLI 渲染(2 個影格:
-s 1 -e 2 -a),以驗證影片檔案是否能正確寫入。