Communitygithub.com

Pingwink/skill

Blender 5.2 の自動化、Cycles の最適化、およびビデオワークフローに関するスキルです。Python を使用した Blender の自動化、ハイパフォーマンスな Cycles GPU レンダリング(OptiX、ノイズ除去、Fast GI)、Blender 5.2+ の API 変更(コンポジットノードグループ、media_type VIDEO)への対応、アニメーションの MP4/H.264 レンダリングを行います。

skill とは?

このスキルは、Blender 5.2 環境での Python によるモデリング、アニメーション、レンダリングを効率化するために設計されています。主な機能として、Cycles レンダリングの極限までの最適化(OptiX、Fast GI、AI ノイズ除去により最大 16 倍の高速化を実現)、Blender 5.2 の新しい API(`compositing_node_group`、`media_type='VIDEO'` など)への対応、ソケット通信(IPC)によるインタラクティブな操作とヘッドレス CLI によるバックグラウンドレンダリングの使い分けをサポートします。また、シェイプキーを使った有機的なまぶたのアニメーションや手続き型の煙・渦のモデリングといった実用的なモデリングテクニックも提供します。レンダリング前の検証手順も含まれており、本番レンダリングの品質と効率を高めます。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

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 テストフレーム、閉じた/最大変形した状態で 1 テストフレーム をレンダリングします。
  2. 単一フレームの実行時間を計測します: アニメーション時間 = フレーム数 * 単一フレーム時間
  3. 2 フレームの短い CLI レンダリング(-s 1 -e 2 -a)をテストして、ビデオファイルが正しく書き込まれることを確認します。

関連スキル