ClaudeでBlenderフィルム制作
10秒の夜間FPVドローンショット(都市を飛び抜ける)のワークフロー:1つのストーリーボード、実際の物理パス、1つのピボット(最初のヒーローは機能しなかった)、夜間照明、モーションからのサウンド、3.5時間のレンダリング、そしてクレイビルドアップリビール。以下の各ステップはscripts/内のスクリプトで、実際にそのショットで実行されたものです。スクリプト内の名前(Drone Empty、Street Asphalt、Building_1...)はそのシーンに由来しますので、あなたのシーンに合わせて名前を変更してください。
0. セットアップ
- Blender 4.4以降(5.2で制作)、Cycles用GPU、Python 3と
ffmpegがPATHに含まれていること(+ サウンドステップ用のnumpy、scipy)。 - ライブブリッジ(Claudeが開いているBlenderを操作し、あなたはその様子を見守る):Blenderのテキストエディタで
tools/bridge.pyを実行します(127.0.0.1:9876で待機)。その後、ターミナルから:python tools/send.py scripts/06_night.pyまたはpython tools/send.py -c "print(bpy.data.filepath)"。 FILM_ROOTをプロジェクトフォルダに設定します(デフォルトは~/blender-film):scene/、render/、audio/、research/がそこに格納されます。tools/lib.pyはすべてのスクリプトで読み込まれます(ヘルパー:coll()、save()、snap()...)。- コピーで作業する。 マテリアルを編集するスクリプトを再生または再実行する前に、.blendファイルのコピーを作成してください。いくつかのパスは、途中でクラッシュした場合に冪等ではありません(孤立したノードリンクが再実行されます)。
1. まずストーリーボード
Blenderに触れる前に、Claudeに10秒のストーリーボードを依頼します:ショットリスト(タイミング付き)、ショットごとのカメラ、ヒーローの位置、視聴者の感じる印象。それを1枚の画像シート(任意の画像モデル)にまとめて開いておきます。以降のすべての決定は、これと照合してチェックされます。
2. 都市
所有している都市アセットパック(建物、道路、小道具)またはフリーのCC0アセット(Poly Haven)を使用します。Claudeに上面図の地図から+X方向に1本の大通りと1つの交差点をレイアウトさせ(ヒーローの経路を小道具で塞がないようにする)、その後装飾します:車(駐車中/走行中/停止中)、街灯、木、消火栓。すべての外部アセットを.blendファイルにベイクします。
3. 手動キーフレームカーブではなく、物理によるモーション
scripts/01_swing_sim.pyは動き(重力、空気抵抗、伸びないロープ、ストーリーボードからのウェブアンカー)をシミュレーションし、経路が通り道を通るまでアンカータイミングを探索します。02_path_empty.pyはそれをパスカーブと、フレームごとにオフセットがキー入力されたFollow Path上のエンプティに変換します(実際の速度、リニアではない)。ヒーローはエンプティにペアレント化され、カメラは独自のパスに従います(03_camera.py、+ 微妙な揺れのための03b_camera_noise.py)。
4. ヒーロー — そしてピボットのタイミング
最初のヒーローは、Mixamoクリップでアニメーションさせたリグ付きスパイダーマンでした。しかし失敗しました:モーションキャプチャは地面で記録されるため、空中では操り人形のようにぶら下がり、ポーズは硬く、フレーム内で小さすぎました。もし手足のあるキャラクターがおかしく見えるなら、ヒーローを交換してください。都市、カメラ、パスはそのまま維持します。 Claudeに選択肢を尋ねてください(私たちは:タカ、スーパーカー、手動修正、FPVドローンを提案されました)。
FPVドローンは、何も硬く見えないため機能します。04_drone_attitude.pyは実際のクアッドコプターのように飛行させます:
- 物理からの姿勢:推力軸 = 加速度 + 重力、ノーズを速度方向に向ける → 加速時に傾き、急旋回で強くバンクし、減速時に機首を上げてフレアします。
- 経路が弾道軌道を描くところでスロットルカット → その上にフリースタイルトリックを重ねます:パワーフリップ、バレルロール、バックフリップ。
- ホバリングへのブレーキフレア、そしてゆっくりとしたヨーでレンズを見つめます。回転するプロペラとシアン/マゼンタのLEDストリップ。
5. リアリズムパス(05_realism.py)
欠けていると誰も気づかない小さなもの:AgX露出(グレーディングなし)、薄いかすみボリューム、テクスチャの繰り返しが途切れたアスファルト、わだち跡、各車線のオイルドリップライン、補修パッチ、摩耗したペイント、そしてすべての壁の根元の汚れとかすかな流れ跡。
6. 夜と読める夜(06_night.py)
ルール:夜は空がシーンを照らさず、実用的な光源が照らす。 暗いグラデーションの空と都市のグロー、LED街灯、明るい窓、車のヘッドライト/テールライト、赤い信号、青みがかったフォグ(少し発光)、濡れたアスファルトと水たまり。
- 最初の試みは失敗しました(至る所にオレンジのフォグ、窓ではなく光るブロック)。
- 修正方法:ファサードテクスチャはすでにガラスの位置を知っています — ガラスは滑らか、壁は粗い。ラフネスマップをウィンドウマスクとして使用し(
roughness < 0.3)、各ウィンドウセルにランダムなサブセットを割り当てます:暖色、寒色、オフ。
7. 実際のオペレーターのようなカメラ(07_shakify_cams.py)
手続き型ノイズをShakify(実際のカメラモーションを記録した無料アドオン)に置き換え、すべてのショットカメラに適用します。クローズショットを追加:濡れた道路から約0.45mの高さの街頭カメラ、ドローンがレンズに向かって急降下し、そのすぐ前で停止します。
08_lens_look.py:光源周辺のブルーム、わずかなバレル歪みと分散 — カラーグレーディングなし、見た目は照明そのものです。
8. モーションからデザインされたサウンド
フリーのCC0録音(BigSoundBank:DJIドローン、夜の都市、濡れた道路の交通、クラクション、遠くのサイレン、風、水たまりの雨、エアコン)。11_motion_data.pyはフレームごとのアニメーション(ドローンの距離/ラジアル速度/横方向/スロットル、近くの車)をaudio/motion.jsonに読み込みます。12_build_sfx.pyはそれからミックスを駆動します:
- スロットル → モーターRPM → ピッチ;ラジアル速度 → ドップラー効果(レンズを通過するときにピッチが下がる);横方向 → 等パワーパン;
- 距離ゲインと空気吸収、スロットルパンチ時のプロップウォッシュバースト、濡れた道路の低空ホバリング時のスプレー、屋上ショットのみの屋上エアコン、最も近づいたときの車の通過音、ストリートキャニオンリバーブ;
- 2つのバージョン(静かな夜/完全な都市の混沌)を作成し、耳で選びます。静かな夜が勝利しました:ヒーローを主役にしましょう。ラウドネスは -14 LUFS。
9. 一晩のレンダリング — 安全に
09_render_opt.py:隠れた重複ジオメトリを削除(ツリーアセットに余分なコピーがありました)、すべてのショットカメラから遠くにあるものには軽量LODを使用、GPUデノイズ。見た目の変化はありません。- 最終品質で6枚のテストスチルをレンダリングし、確認します。
10_render_edit.pyは編集で使用するフレーム(ショットリスト = カメラ + フレーム範囲)のみをレンダリングし、再開可能で、render/status.jsonを書き込みます。tools/render_window.ps1(Windows)はクリーンな進捗パネルを表示します:%、残り時間、最後に終了したフレーム。- レンダリング後:すべてのフレームが存在するか確認し、黒や壊れたフレームがないか確認し(フレームごとの明るさ、計画されたカットのみでジャンプ)、サウンドが承認されたミックスと一致し、ラウドネスがYouTubeに対応していることを確認します。その後にのみエンコードし、(依頼があれば)PCをシャットダウンします。
10. クレイビルドアップリビール(本物の3Dである証明)
13_aerial_cam.pyは大通りを見下ろす高いカメラを追加します。シーンの新しいコピーで、14_clay_build.pyはすべてを白いクレイに変え、カメラと交通を1フレームで固定し、各ピースをその順番になるまで非表示にしてから空から落下させます:最初に車、次にカメラに最も近い建物、次に遠くの都市、最後に街灯と消火栓(約500ピース)。それぞれの落下は加速し、着地時に少し跳ね返ります。tools/clay_assemble.sh:夜間 | ハードカット | クレイビルド | 0.25秒のワイプ | 夜間、同じカメラ、同じフレーム。クレイと夜間の分割スチルは優れたサムネイルになります。
学んだ教訓(時間がかかったこと)
- 画面キャプチャは、ウィンドウの仕様が間違っていると黒く録画されます — 立ち去る前に最初の録画フレームを確認してください。
- ビューポート録画:マテリアルプレビューではモーションブラーをオフにし、ボリュームのリンクを解除する必要があります。そうしないと、画像がにじみます。Cyclesビューポートにはデノイザーが必要です。
blender -bでの相対出力パスはドライブルートに解決されます — 常に絶対パスを渡してください。- 長時間のGPUジョブの前に確認を取ってください。最初に低品質でテストし、最後に最終品質で行います。
ライセンス:MIT。Abdullah Formuliが単独でメンテナンスしています。外部からのコントリビューションは受け付けていません。