Blender 5.2 自動化、Cycles 最適化、およびビデオワークフロー
このガイド(スキル)には、Blender 5.2 でのモデリング、アニメーション、レンダリング作業を通じて得られた実証済みの手順、最適化設定、コードパターンが含まれています。
1. 通信とレンダリングのアーキテクチャ
A. インタラクティブセッションの制御(Socket IPC)
インタラクティブなモデリング、マテリアル変更、テストフレームレンダリングには、ソケットクライアントを使用します。
- ポート:
127.0.0.1:9876(Blender MCP プラグイン / ソケットブリッジ) - プロトコル: Null バイト
\0で終端された JSON({"type": "execute", "code": "...", "strict_json": true})
B. バックグラウンドでのアニメーションレンダリング(ヘッドレス CLI)
原則: 長いアニメーションをソケット経由でレンダリングしないでください(GUI のフリーズやタイムアウトの原因になります)。
シーンを .blend ファイルに保存し、専用の CLI プロセスをバックグラウンドで起動します。
& "C:\Program Files\Blender Foundation\Blender 5.2\blender.exe" -b "sciezka\do\projektu.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. コンポジター(コンポジットノードグループ)
Blender 5.2 では、従来の scene.node_tree と CompositorNodeComposite の代わりに compositing_node_group と NodeGroupOutput が導入されました。
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 のパラメータはオブジェクトのプロパティではなくソケット:
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 の究極の最適化(GPU レンダリングが 16 倍高速化)
スタジオ品質を維持しながら、レンダリング時間をフレームあたり約 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 GPU のみをアクティブ化(低速な 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 デノイザーを使用する場合、10~12 サンプルで十分!
cycles.use_denoising = True
cycles.denoiser = 'OPTIX'
# 3. Fast GI とライトバウンスの制限
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. 有機的なまぶた(シェイプキー + 2次関数プロファイル)
- まぶたの上端を、楕円形の眼球形状を保ちながら下端に向かって変形させる:
closed_z = -h_bot * math.sqrt(max(0.0, 1.0 - (x / w_eye)**2)) - 同時に、まぶたのしわ(crease)と、まぶたが閉じる際の眼球の微妙な下方回転をアニメーション化し、疲れた自然な表情を実現する。
- まぶたの動きの滑らかな加速と減速には、
EASE_IN_OUT補間のBEZIERを使用する。
B. 手続き型の煙と渦の粒子
bmeshを使用して螺旋状のストランドを作成する:radius = r_base + delta * t、spiral_angle = base_angle + t * turns * pi。ShaderNodeTexNoiseをColorRampでミックスした透明度ベースの Principled BSDF マテリアルを使用する。interpolation = 'LINEAR'(角度 0 から 360° の倍数まで)で回転をループさせ、粒子の動きを均一かつ反復可能にする。
5. 本番レンダリング前の検証手順
- 常に、開いたオブジェクトで 1 テストフレーム、閉じた/最大変形した状態で 1 テストフレーム をレンダリングします。
- 単一フレームの実行時間を計測します:
アニメーション時間 = フレーム数 * 単一フレーム時間 - 2 フレームの短い CLI レンダリング(
-s 1 -e 2 -a)をテストして、ビデオファイルが正しく書き込まれることを確認します。