1 つのプロンプトから、4 ショットの Blender シネマティックへ
12 秒のショットシーケンスと聞くと小さく思えます。でも Blender では大仕事です。ステージング、キーフレーム、カメラワーク、被写界深度、そして布ではなく紙らしく曲がらなければならない 1 枚の紙。そのほとんどが、ビューポートでのクリックの積み重ねです。
そこで、この仕事をまるごとエージェントに任せました。Eigent の Gemini 4 を使うと、1 つのプロンプトで Cozy Kitchen シーンが 4 ショットのシネマティックになりました。すきま風がレシピカードをスタンドから持ち上げ、キッチンを横切って運び、イチゴのタルトレットにふわりとかぶせます。Gemini 4 は一度も Blender のウィンドウを開いていません。Blender Python を書き、ヘッドレスで実行し、自分の仕事をチェックし、見つけた問題を修正しました。
ワークフローの全体像
あなたが用意するのはシーンとブリーフだけ。残りは Gemini 4 がコマンドラインで進めます。各段階でファイルが残るので、どの時点でも作業を確認できます。
| 段階 | 何をするか | 得られるもの |
|---|---|---|
| 読み込み | シーンをヘッドレスで開き、タスクデータを読み込む | カードの開始位置のテストレンダー |
| ステージング | レシピスタンド、カーテンロッド、風の手がかりを追加する | すきま風の発生源が見えるセット |
| 制作 | レシピカードをモデリングしテクスチャを付ける | 手描きのレシピカードを持つ薄い両面シート RecipePage |
| アニメーション | コリドーを通る軌道と、タルトレットへのかぶさりを合わせる | 滑らかな飛行と、支えのある静止時の折れ |
| 撮影 | 4 台のカメラを配置し、カットに紐づける | ショット 2 と 3 に被写界深度のある 4 ショットの編集 |
| 検証 | ブリーフのルールをすべて計測し、不合格を修正する | work/ に残る再実行可能なチェックスクリプト |
| 納品 | 静止画とストーリーボードをレンダーし、ショットリストを書く | sequence.blend、shotlist.csv、storyboard.png、静止画 9 枚 |
ここからは、自分で試すための手順を 1 ステップずつ紹介します。次回は設定を変えたいと思った点もあわせて。
得られるもの
- 編集可能な Blender プロジェクト -
sequence.blend(13 MB)。画像はすべてパック済みで、リンクされたライブラリはありません。開いてそのまま作業を続けられます。 - ショットリスト -
shotlist.csv。1 ショット 1 行で、フレーム範囲、カメラ、アクションを記載。 - ストーリーボード -
storyboard.png。640×480 のラベル付きパネル 9 枚を 3×3 のグリッドに配置。 - 静止画 9 枚 - フレーム 1、48、73、120、145、192、217、264、288。
- 動画とプレビューページ -
sequence.mp4とpreview.html。短いフォローアップ依頼 1 回で作成。
始める前に
- お使いのマシンに Eigent をインストールしておきます。
- Gemini 4 - Eigent Cloud 経由、または自分の Gemini API キーで利用します。
- 同じマシンに Blender。Gemini 4 はコマンドラインから操作するので、ウィンドウは不要です。私たちは Blender 5.2 LTS を入れていました。サンドボックスで動かしたい場合は、
bpy5.2.2 を固定した Docker イメージもタスクに同梱されています。 - タスクパッケージ。今回使ったのは、私たちの 3D コーディング環境のひとつ「recipe-page mishap」です。
| ファイル | エージェントに渡すもの |
|---|---|
PROMPT.md | ブリーフ - 送るメッセージはこれだけ |
agent_environment/input/kitchen.blend | 準備済みの Cozy Kitchen シーン |
agent_environment/input/subjects.json | イチゴのタルトレットを構成するオブジェクト |
agent_environment/input/action.json | カードの開始位置と、フレーム 120、168、192 での飛行コリドー |
agent_environment/input/presentation.json | 静止画とストーリーボードの設定 |
agent_environment/input/source_overview.png | 手を加える前のシーンのプレビュー |
agent_environment/scripts/ | presentation.py(静止画とストーリーボードをレンダー)と review.py |
Gemini 4 を選択する
Eigent Cloud の場合 - API キーは不要です。
- ホーム画面で、入力欄の下にある モデルピッカー を開きます。
- Eigent の下で Gemini 4 Argon を選びます。
自分の Gemini API キーを使う場合:
- Settings → Models を開きます。
- Gemini を見つけて設定を開きます。
- API key を貼り付けます。
- model type を
gemini-4-argonに設定します。 - Save をクリックし、モデルピッカーの Gemini から選びます。
思考の強さはデフォルトで問題ありません。私たちは Single Agent、Full access で実行し、Blender の実行やファイルの書き込みを確認なしで進められるようにしました。
プロジェクトフォルダを用意する
Eigent でプロジェクトを作成し、次の 2 つだけが入ったフォルダを指定します。
showcase-kitchen-draught/
PROMPT.md
agent_environment/
input/ # kitchen.blend, subjects.json, action.json, presentation.json, source_overview.png
scripts/ # presentation.py, review.py
それ以外は入れないでください。特に採点スクリプト、リファレンス実行、過去の結果に関するメモは除外します。理由は後述します。
プロンプトを貼り付ける
以下のブリーフを Cowork with の入力欄にコピーし、そのまま送信します。
Animate the recipe-page mishap
Create a twelve-second cinematic in /app/input/kitchen.blend: a draught lifts a recipe page, carries it across the work area and leaves it draped on the strawberry tartlet identified in /app/input/subjects.json. Preserve the warm illustrated kitchen. Show the calm setup, motivated lift, flight, contact and settling through four connected shots, with visible, consistent wind clues and readable page motion.
## Action and photography
- Scene Sequence runs at 24 fps, frames 1–288, with camera-bound cuts at 1, 73, 145 and 217. Preserve visible source surfaces, material identity and world transforms within 2 mm; keep existing set pieces visible. Add the page, wind clues and staging as needed.
- RecipePage is an editable thin two-sided sheet, 0.13–0.17 m long and 0.09–0.12 m wide, with 100–12,000 native vertices, finite UVs and readable recipe marks.
- Use /app/input/action.json for the start plane and flight corridor. At frame 1, the page is within 10 mm of the start plane and its centroid within 20 mm of the start point. Through frame 48 the centroid stays within 8 mm of its initial pose; by 120 it moves at least 0.10 m. At frames 120, 168 and 192 it follows the corridor within 35 mm.
- Page centroid motion is at most 16 mm per frame, with successive displacement changes at most 5 mm. After best rigid alignment with frame 1, shape deformation is at least 4 mm RMS at one flight frame and 2 mm RMS at rest. Show convincing paper flutter, stiffness and supported contact folds, without penetration or stretched print.
- Throughout frames 241–288, at least 15% of page surface samples are within 8 mm of the actual selected strawberry-tartlet surface. Centroid variation over 264–288 is at most 3 mm; surface motion from 276 to 288 is at most 4 mm.
- Use four distinct cameras. Shot 1 may be orthographic; shots 2–4 use 35–85 mm perspective lenses. Shots 2 and 3 use depth of field focused within 25 mm of the page centroid at each shot's start, midpoint and end.
- At frames 120, 168, 192 and 264, frame the page in front of the active camera within the central 80%, with projected height 8–65% of the image. Within shots, camera motion is at most 25 mm and 4° per frame, with translation changes at most 8 mm; cuts are exempt.
- Compose purposeful shots with coherent screen direction, controlled focus, anticipation and a clear final reveal. Avoid disconnected poses, arbitrary camera moves or unreadable action.
## Handoff
Save sequence.blend, shotlist.csv, storyboard.png and stills/frame_NNN.png for frames 1, 48, 73, 120, 145, 192, 217, 264 and 288 in /app/output. The CSV columns are shot,start,end,camera,action, matching the native four-shot edit. Use labelled 640×480 panels in a 3×3 storyboard. Stills and storyboard match the saved scene under /app/scripts/presentation.py CPU settings with luminance SSIM ≥0.93; use that helper or equivalent images.
Keep the native project editable and below 192 MiB, with finite nondegenerate geometry, all used material/world images packed and no linked libraries. It must replay with Python auto-execution disabled; native constraints and ordinary driver expressions are allowed. Keep /app/input unchanged; use /app/work for work files. Blender Python, headless rendering and command-line tools are available.
このプロンプトは Docker コンテナ向けに書かれているため、パスは /app から始まります。私たちの Mac で実行したところ、Gemini 4 は自分でプロジェクトフォルダ(agent_environment/input、work/、output/)に対応付けました。
このブリーフで特に効いているポイントはこちらです。
- 形容詞ではなく数値。「シネマティックにして」は雰囲気にすぎません。「フレーム 168 でコリドーから 35 mm 以内」は、エージェントが計測でき、達成できる目標です。
- ルールだけでなく、物語のビート。 穏やかな導入、きっかけのある浮き上がり、飛行、接触、落ち着き。数値が動きを正直に保ち、ビートがそれを物語にします。
- キッチンを守る。 元のオブジェクトは 2 mm 以内に留まり、マテリアルもそのまま。エージェントはシーンに足すだけで、作り直しはしません。
- 本物の納品物。 パック済みで編集可能な
.blendで、Python の自動実行を無効にしても再生できます。明日開いて、そのままアニメーションを続けられるファイルです。
エージェントに任せる
プロンプトを送信します。Gemini 4 はタスクを計画し、Blender Python で順に進めていきます。今回の実行は、最初のファイル読み込みから最後の自己監査までおよそ 50 分でした。作ったものを順に紹介します。
- シーンを読み込む。
kitchen.blendをヘッドレスで開き、タルトレットとコリドーのデータを読み込んで、開始位置のテストビューをレンダーしました。 - セットを組む。 開始位置の下に小さな木製のレシピスタンドを置き、キッチンの窓にカーテンロッドを渡しました。
- 風の手がかりを加える。 カーテンのタッセル、サテンのリボン、スタンドのタグ。すべて同じ方向になびかせ、すきま風の発生源が見えるようにしました。
- カードを作る。
RecipePageは 0.136 × 0.094 m、頂点数 1,218 の両面シートで、自分で描いたレシピカード「Recipe No. 14, Strawberry Tartlet」付きです。シェフのメモの最後には、頼んでもいない一文が添えられていました。「Keep recipe cards away from open kitchen window draughts!」 - 動きを計画する。 コリドーのチェックポイントを通る滑らかな軌道を作り、タルトレットの実際の表面に合わせた静止時のかぶさりを用意しました。
- 4 台のカメラを配置する。 穏やかな導入は 42 mm、浮き上がりは f/5.6 の被写界深度付き 48 mm、飛行は 52 mm のトラッキングショット、着地は 58 mm のヒーローショット。タイムラインマーカーで、各カメラをフレーム 1、73、145、217 のカットに紐づけました。
- 自分の仕事をチェックする。 ブリーフの計測可能なルールすべてに対して検証スクリプトを書き、実行し、見つけた問題を修正しました。カードの印刷面がカメラから背を向けて傾いていたので、ピッチを反転。カーテンにひだを加え、静止したカードを隣のタルトレットから少し離し、最後のカメラを上げて見せ場をすっきりさせました。
- 納品する。
presentation.pyで静止画とストーリーボードをレンダーし、shotlist.csvを書き、最終監査を実行しました。元のオブジェクトはすべて存在し、動いておらず、マテリアルも元のままでした。
ショットリストを読む
output/shotlist.csv を開きます。4 ショット、カメラ 1 台につき 1 ショットです。
| ショット | フレーム | カメラ | アクション |
|---|---|---|---|
| 1 | 1–72 | Cam_Shot1 | 木製のレシピスタンドでの穏やかな導入。窓のリボンが吹き込むすきま風になびき、レシピカードが浮き上がる |
| 2 | 73–144 | Cam_Shot2 | すきま風がはためくレシピカードをスタンドから高い飛行コリドーへと運び上げる |
| 3 | 145–216 | Cam_Shot3 | カードがキッチンの作業台を横切って急降下し、2 段のケーキスタンドへ滑空していく |
| 4 | 217–288 | Cam_Shot4 | カードが着地し、イチゴのタルトレットにかぶさる、張りのある支えられたアーチとして落ち着く |
続いて storyboard.png を開きます。9 枚のフレームで、カードが静止し、浮き上がり、キッチンを横切り、タルトレットに落ち着くまでの物語がひと目でわかります。
数値を確認する
Gemini 4 の検証スクリプトは work/ に残るので、保存したプロジェクトに対していつでも再実行できます。最終版の sequence.blend で計測した結果は次のとおりです。
| チェック項目 | ブリーフの要件 | 結果 |
|---|---|---|
| フレーム 1 の開始位置 | 20 mm 以内 | 1.03 mm |
| フレーム 48 までの静止 | ずれ 8 mm 以下 | 6.69 mm |
| フレーム 120 までの移動距離 | 0.10 m 以上 | 0.152 m |
| フレーム 120、168、192 の飛行コリドー | 35 mm 以内 | 0.00 mm |
| カードの速度 | 1 フレームあたり 16 mm 以下 | 9.35 mm |
| 飛行中のはためき | 4 mm RMS 以上 | 11.07 mm |
| タルトレットとの接触(フレーム 241–288) | カードの 15% 以上 | 22.9% |
| カードのタルトレットへのめり込み | なし | 重なる三角形 0 |
| 落ち着き(フレーム 264–288) | 3 mm 以下 | 0.37 mm |
| 被写界深度のピント(ショット 2 と 3) | カードから 25 mm 以内 | 0.19 mm 以下 |
| 最も速いカメラの回転 | 1 フレームあたり 4° 以下 | 0.71° |
これはブリーフに対するエージェント自身のチェックです。タスクパッケージには別の採点スクリプトも含まれています。23 の計測ルールに加え、ストーリー、技術、紙の仕上がりを評価するビジュアル審査があります。公式スコアが欲しい場合は、実行が終わってから、エージェントのフォルダの外で自分で grader/grade.sh を出力に対して実行してください。
再生してみる
ブリーフが求めているのは Blender プロジェクトで、動画ではありません。そこで同じプロジェクトでフォローアップのメッセージを 1 回送り、Gemini 4 にシーケンスを MP4 として書き出し、ブラウザプレビューを付けてもらいました。
返ってきたのは sequence.mp4(288 フレーム、640×480 H.264、3 MB)と preview.html です。プレビューページではシネマティックを再生でき、フレーム番号がリアルタイムで表示され、4 つのショットにワンクリックでジャンプでき、その下にストーリーボード全体が並びます。
次は設定を変えたい点
私たちのプロジェクトフォルダには、エージェントに必要な以上のものが入っていました。PROMPT.md と agent_environment/ のほかに、タスクの README.md、grader/、そして以前のモデルの reference_runs/ も置かれていたのです。
これは重要です。Gemini 4 のチェックスクリプトは、カードの印刷面を 5% の伸び上限でテストしています。この数値はプロンプトにはありません。README の、過去の実行がどう失敗したかを記したメモの横にあるものです。Gemini 4 のスクリプトは採点スクリプトやリファレンス実行を一度も読んでいませんが、README が目標値に影響したと考えるのが妥当でしょう。
ですので、今回の実行はベンチマークのスコアではなく、ショーケースとして見てください。公平なテストをするなら、エージェントには PROMPT.md と agent_environment/ の 2 つだけを渡し、採点スクリプトは見えない場所に置いておきましょう。
自分のプロジェクトに応用する
同じパターンは、どんな Blender シーンにも使えます。
- センスを数値に置き換える。 フレーミング、速度、ピント距離、接触。計測できる目標があれば、再生ボタンを押す前にエージェントが自分でチェックできます。
- コリドーを与える。 JSON ファイルにいくつかのチェックポイントを置くだけで、キーフレームを 1 つも手で打たずにアクションを導けます。
- 本物の納品物を求める。 パック済みで編集可能な
.blend、ショットリスト、ストーリーボード。レンダー結果だけでなく、作業を続けられるプロジェクトが手に入ります。 - 検証させる。 今回いちばんの見どころは、Gemini 4 がカードの印刷面がカメラと逆を向いていることに気づき、私たちが目にする前に直したことでした。
12 秒のアニメーションは、かつてはビューポートで過ごす午後まるごとを意味しました。今はプロンプト 1 つ。そして、開いて、調整して、自分のものにできるプロジェクトが残ります。
クレジット:Gemini 4 と Eigent で作成。シーン:「Cozy Kitchen」(Blender 3.5 スプラッシュ)Nicole Morena 作、CC-BY-SA。派生シーンとレンダーは、クレジット表記と ShareAlike の条件を引き継ぎます。ブリーフとタスクデータ:Eigent オリジナル。音楽:「Quirk n Twerk」The Soundlings(YouTube Audio Library)。



