Blenderを触ったことないけど、GPT-6 Astraに丸投げして3D広告動画を作ろう

2026/09/08 11:48 公開

Blenderを触ったことないけど、GPT-6 Astraに丸投げして3D広告動画を作ろう

前回、MiniMax H3に$30課金して広告動画を作った記事を書きました。H3はすごかったんですが、ひとつだけどうしても直らない弱点があった。文字が壊れるんです。特に日本語の文字化けが激しい。しかも1文字直すために全部を作り直すしかない。

そこで思ったのが「Blenderにやらせた方が強いし、安定するんじゃないか」。BlenderはPythonでシーンを丸ごと書けるので、動画生成AIと違って文字も秒数も数値で固定できる。ただ、私はBlenderを開いたことすらありません。

なので、9月に使えるようになったばかりのGPT-6 Astra(Codexの新しい最上位モデル)に、インストールから動画完成までを丸ごと投げてみました。私がやったのはSlackから指示を出して、出てきた動画を見て「もっと3Dっぽく」「文字を変えて」と返しただけです。

結論から言うと、3時間で5本の動画ができて、Codex以外の費用は0円でした。Blenderって無料で使えるんですね(神)。 この記事は、何を頼んで、何が出てきて、どこで詰まったかを時間と数字つきで全部書いたものです。最後に「Blenderと動画生成AIとRemotion、どう使い分けるか」の結論も置きます。

先に、できたものを4本

過程の前に到達点から。全部1920×1080、Astraが書いたPythonスクリプトをBlenderがヘッドレスで描画したものです。人間はBlenderの画面を一度も開いていません。

1本目: 3Dの棒グラフに金貨が物理シミュレーションで積もる(10秒)

金貨32枚がリジッドボディ(剛体物理)で落ちて、棒の上に転がって積み上がります。手付けのアニメーションではなく、Blenderの物理エンジンが計算した結果です。カメラは低いアングルからゆっくり回り込んで、最後に「+128%」の金属文字に寄って止まる。被写界深度で手前がボケます。

2本目: 音に反応して240本の柱が脈打つオープニング(6秒・音声つき)

Blender 5.2で追加されたばかりの「Sample Sound Frequencies」というノードを使っています。音声ファイルの低音・中音・高音の振幅をそのまま3Dオブジェクトの高さと発光に流し込む仕組みで、音声を差し替えれば動きが勝手に変わる。音ありで再生すると、音と柱の動きがぴったり合っているのが分かります。

3本目: 文字が砕けて、破片が逆再生でロゴに組み上がる広告(10秒)

自社サービスの広告です。「Webhookは1つだけ…」という悩みの文字が衝撃で198片に砕けて床に落ち、白いフラッシュのあと、緑の破片が舞い上がって「L-Proxy」のロゴに組み上がる。破片の落下は物理シミュレーション、組み上がりは「ロゴを砕いた結果を逆再生する」という古典的な手法です。

最終カット

表示する文字は7点だけ、と指定しました。7点とも誤字ゼロ。H3で壊れ続けた「文字」が、ここでは当たり前に正確です。

4本目: 最初に作った、平面のグラフアニメーション(10秒)

これが一番最初の成果物です。これはこれで正しいんですが、見た瞬間「これRemotionでも作れるやん」と思って、上の3本に進みました。その経緯も後で書きます。

そもそもAstraはBlenderをどう操作しているのか

聞かれそうなので先に。Blenderのアプリ画面は使っていません。Computer Useでマウスを動かしているわけでもない。

Blenderには画面を出さずに動く「バックグラウンドモード」があって、ターミナルからこう呼びます。

code
/Applications/Blender.app/Contents/MacOS/Blender -b -P scene.py

-bが「画面なし」、-Pが「このPythonを実行」。BlenderにはbpyというPython APIが同梱されていて、オブジェクトの作成、材質、カメラ、アニメーション、物理のベイク、レンダ設定まで全部コードで書けます。Astraがやったのは「そのスクリプトを書く → 実行する → 出てきた画像を自分で見て直す」の繰り返しです。

出力はPNGの連番で、それをffmpegでmp4にします。Blender内蔵の動画出力は使わないように指示しました(連番の方が途中確認と再エンコードが楽なので)。

Remotionを知っている人なら構造が同じだと気づくと思います。Remotionは動画をReactのコードで書く。Blenderは動画をPythonのコードで書く。コードがシーンの正本なので、1行変えれば1箇所だけ変わる。動画生成AIとの最大の違いはここです。

なお、Blenderは完全無料のオープンソース(GPL)で、商用利用も自由。トライアルも有料版もありません。今回かかった費用はAstraのトークン(ChatGPTの週次枠内)だけで、Blender側は0円です。

最初の依頼: インストールから動画完成まで13分27秒

最初に投げたのは、次の内容を1枚のブリーフにまとめたものです。

  • brew install --cask blenderでBlenderを入れろ(brew updateやsudoは禁止)
  • 株価チャートが伸びて金貨が積もるモーショングラフィックスを、1920×1080・30fps・10秒ちょうどで
  • 日本語の文字を3点必ず入れろ。「売上推移」「+128%」「モテクリ 2026年9月」
  • フォントはmacのヒラギノ角ゴシックを直接読め
  • 試しレンダ1枚を自分の目で見てから全フレームに進め
  • 文言・色・尺は先頭の定数にしておけ(あとで「1箇所だけ変えて」と頼むから)

結果、13分27秒で完走しました。内訳はこうです。

  • Blenderのインストール: 44秒(Astra単独。人間の手伝いなし)
  • スクリプトの設計と記述: 約6分。書き始める前にBlenderのAPIを実機で調べて、5.2.1でのレンダエンジンの正式名を確定させていた
  • 試しレンダ: 1枚目でバッジがグラフの終点を覆っていたので、自分で位置をずらして再確認
  • 全300フレームのレンダ: 34秒
  • 自己検証: ffprobeで秒数を確認、300枚をデコードし直し、さらに自分でサブエージェントを1本立ててスクリプトをレビューさせていた

1本目の最終フレーム

日本語3点は豆腐も欠けもなし。10.000秒ちょうど。H3で一番苦労した部分が、最初の1本で片付きました。

ひとつ、指示していないことをやっていました。「BUSINESS PERFORMANCE」「GROWTH REPORT」のような英語の装飾テキストと、軸の目盛りを勝手に足している。禁止していなかったので違反ではないんですが、本番で使うなら「文字は指定分だけ」と書く必要があります。実際、3本目の広告ではそう書いて、余計な文字はゼロになりました。

1箇所だけ直せ、と頼んだら2行だけ変わった

動画生成AIで一番困るのが「ここだけ直して」ができないことです。1文字直すために全部を再生成して、別物が出てくる。

そこで、同じセッションを再開して「バッジの『+128%』を『+256%』に、ゴールドをコーラルレッドに変えるだけで出せ。他は一切変えるな」と頼みました。

結果は5分22秒。うちレンダは35秒で、残りはAstraが「本当に他が変わっていないか」をハッシュで確認していた時間です。スクリプトの差分は次の2行だけでした。

code
- BADGE_TEXT = "+128%"
+ BADGE_TEXT = "+256%"
- GOLD = "#F6C65B"
+ GOLD = "#FF6F61"

出力先の差し替えも元のスクリプトをいじらず、15行のラッパで吸収していました。私の方でもフレームを重ねて差分を取りましたが、変わっていたのはバッジの文言と、ゴールド定数を参照している要素の色だけ。チャートもタイミングも同一です。

H3と同じお題で並べると、こうなる

前回の記事で作ったH3の株価チャート動画と、同じお題で比べました。

H3で作った同じお題のサンプル

H3の方は、金貨の質感やローソク足の光沢は明らかに上です。でもバッジの数字が「1?%」と崩れたまま表示されている。これは前回も踏んだ壁で、文字を正しく出すには参照画像に焼き込むという手間が要ります。

  • 文字の正確さ: Blenderは3点とも誤字ゼロ。H3は数字が崩れた
  • 指示どおりの動き: Blenderは秒数も順番もコードで確定。H3は「4〜15秒の整数」しか指定できず、配置は生成任せ
  • 部分修正: Blenderは2行変更して35秒。H3は不可能(全体再生成)
  • 1本あたりの費用: Blenderは0円。H3は1秒$0.05なので6秒で約$0.30、当たりが出るまでの回数分かかる
  • 再現性: Blenderは同じスクリプトなら100%同じ画。H3はseedを固定しても構図が揺れる
  • 質感: 1本目の時点ではH3の圧勝。ただしこの差は次の3D版でかなり縮まった
  • セットアップ: Blenderはbrewで1本(1.4GB)。H3はAPIキーとプロンプト記法の習熟

「Remotionでも作れるやん」と言ったら、物理シミュレーションが出てきた

1本目を見た正直な感想が「これ、平面やん」でした。フラットデザインの2Dグラフなら、Remotionで作れる。せっかくBlenderなら、Blenderにしかできない画が見たい。

なので2本目の依頼では「Blenderならでは」を必須要素として列挙しました。

  • 金貨をリジッドボディの物理で落として積もらせろ(手付けアニメ禁止)
  • 3Dの棒グラフと反射する床
  • 透視カメラのオービットと被写界深度、最後は「+128%」に寄れ
  • 3点ライトにボリューム(霧)かブルーム
  • 文字は押し出しとベベルの3D文字

3D版の途中フレーム

これは35分30秒で完走しました。レンダは300枚で15分40秒(1枚3.1秒)。金貨は台座に散らばって棒の上にも積み上がり、最後の時点で1枚だけまだ落下中というのが逆にリアルでした。

面白かったのは、Astraが本番レンダを94フレームで自分で止めたことです。試し画像で「金貨が画面内に突然出現している」のに気づいて、放出位置を画面外の上に動かして再ベイクし、全300枚をやり直した。中断した5分も時間予算に自分で計上して、25分の上限内に収めています。

ただ、直すべき点もあった。フッターの「モテクリ 2026年9月」が、最後の寄りカットでは画面外に出ています。Astra自身も報告書に「署名は寄りの構図で画面外となる」と書いていました。正直なのはいいけど、次からは「全カットで読めること」と書きます。

10秒の動画に35分かかるのはなぜか

ここで「20分も30分もかかるの、大変やね」と思いました。ログを分解するとこうです(2本目の音反応オープニングの実測)。

  • Blender 5.2のAPI調査と公式デモの解析: 約4分
  • スクリプトの設計と記述: 約3.5分
  • 試しレンダ2回と画像確認と修正: 約3.5分
  • 本番レンダ180枚: 5分11秒
  • エンコードと同期の検算と報告書: 約3分

つまりレンダは4分の1で、残りの4分の3は「初めて作る」ためのAIの思考時間です。

じゃあ2本目以降はどうなるか。音反応オープニングの文字を「@ai_hirosuke」から「さくさくぱんだ」に変えて作り直したところ、Astraを通さずスクリプトの2箇所を書き換えて再レンダしただけで4分15秒で出ました。初回19分の4.5分の1です。

文字を差し替えたバージョン

一度できたスクリプトはテンプレートになる。これが「コードが正本」の一番大きな効果です。

音に反応するノードは、ヘッドレスで本当に動いた

2本目の音反応オープニングは、Blender 5.2 LTSで追加されたばかりのSample Sound Frequenciesノードを使っています。公式のデモファイル(Cartesian Caramel氏作・CC-BY)を先に渡して「まず実機で開いてノード構成を読んでから作れ」と指示しました。

新しいノードなので「画面なしで本当に値が出るのか」が検証項目でした。結果、普通に動きました。Astraは各フレームでノードが返した値をJSONに書き出し、音声のRMSとの相関を出してきた。低音で0.989、中音で0.977、高音で0.930、ずれは0フレーム。私の方でもwavから別計算して検算したら0.979で、自己申告と一致しました。

ノードのソケットはSound Time All Channels Channel Low High FFT Size Window Functionで、出力がAmplitude。Attack/Releaseのような平滑化のソケットはなく、Hann窓だけで滑らかにしています。

内側64本・中間80本・外側96本の柱を低音・中音・高音に割り当て、中央の金属ロゴは低音で脈動する。「反応部分にキーフレームを使うな。ノードが音を読め」と指示したので、音声ファイルを差し替えれば動きは自動で変わります。3秒のジングルなら90枚で2.5分です。

正直に書く、途中で1回止まった件

3本目の広告は、Astraが18分で本番直前まで到達しました。公式デモの破砕ノードを流用して、旧文字とロゴの2系統を物理でベイクし、8時点の試しレンダと全300フレームの文字はみ出し検証まで済ませていた。

そこで「破片の差し替えが透けないよう、切替時だけ白いフラッシュを重ねる」という仕上げをしようとして、Blender 5.2には存在しないノード名(CompositorNodeMixRGB)を使い、試しレンダが落ちました。その直後にCodexのAPIが「Bad Request」を2回返して、セッションが終了。本番レンダに入る前でした。

原因はAPI側で、こちらからは分かりません。コンテキストの上限には余裕がありました。

ここからは私のAI秘書(Claude)が引き継ぎました。5.2のコンポジタにはMixRGBがなくCompositorNodeAlphaOverがあるので、それで同じフラッシュを実装し直して再ベイク。もうひとつ罠があって、Astraが作ったスクリプトの「本番レンダ」モードは保存済みの.blendを読む設計だったので、ビルド時の変更は「テスト」モードで再構築しないと反映されない。それも踏んでから、本番レンダを回して5分15秒で300枚が出ました。

引き継ぎに10分で済んだのは、Astraがベイク済みの.blend、試し画像、各工程の計測JSONを全部ファイルに残していたからです。途中生成物を必ずファイルに残すは、無人実行のブリーフに標準で入れるべき項目だと思いました。

これからBlender 5.2をAIに触らせる人が踏む罠

今日踏んだもの、踏まなかったものをまとめます。

  • ヒラギノの.ttcファイルはbpy.data.fonts.load()で直接読めた。代替フォント不要
  • 5.2.1のEEVEEのエンジン名はBLENDER_EEVEE。4.2で導入されたBLENDER_EEVEE_NEXTは統合済みで、決め打ちせず実機で列挙してから使うのが正解
  • Apple SiliconのヘッドレスEEVEEは素直に動く。GPUコンテキストの問題なし
  • 5.2ではScene.node_treeがなく、コンポジタはCompositorNodeTreeを作ってscene.compositing_node_groupに接続する。Glareの種類は入力ソケットで指定
  • 5.2のコンポジタにCompositorNodeMixRGBはない。CompositorNodeAlphaOverのソケットはBackground / Foreground / Factor
  • ヘッドレスでのリジッドボディのベイクはtemp_override(point_cache=...)でptcache.bake(bake=True)
  • BOXの衝突形状で原点を底面に置くと衝突面がずれて金貨が沈む。原点は中心のまま、scaleとlocationを同時にキーする
  • Material.use_nodesは6.0で削除予定の警告が出る。5.xでは動く
  • blender.orgのデモファイルのリンクをcurlで叩くとThanksページのHTMLが返る。実体はdownload.blender.org側

これは全部、Astraが自分で調べて回避したか、私の秘書が踏んで直したものです。人間がBlenderの知識を持っていた必要はありませんでした。

時間と費用の全記録

  • 1本目(平面グラフ・10秒): 無人13分27秒。レンダ34秒
  • 部分修正(2箇所): 5分22秒。レンダ35秒
  • 2本目(3D物理・10秒): 無人35分30秒。レンダ15分40秒
  • 3本目(音反応・6秒): 無人19分02秒。レンダ5分11秒
  • 3本目の文字差し替え: 4分15秒(Astra不使用)
  • 4本目(破砕広告・10秒): Astra18分で中断、引き継ぎ10分、レンダ5分15秒
  • Blender: 0円(無料・オープンソース)
  • Astra: ChatGPTの週次枠内。1本あたりのAPI呼び出しは35〜134回、キャッシュを除く入力トークンは14万〜25万
  • 20:48に依頼して、23:18に4本目が完成

全工程で、Astraが禁止事項(sudo、brew update、作業フォルダ外への書き込み、外部送信)に触れた形跡はゼロでした。これはAstraの実行ログを別のAIが全コマンド走査して確認しています。

Blender、Remotion、動画生成AI。どう使い分けるか

今日の結論です。

  • 文字・数値・図表が主役で、あとから直す前提の動画: BlenderかRemotion。コードが正本なので部分修正がデグレなしでできる
  • その中で、物理・反射・被写界深度・音反応のような3Dの表現が要るもの: Blender。Remotionでは作れない
  • 実写風、人物、キャラクター、声つきの一発生成: H3のような動画生成AI。質感と「それっぽさ」はまだこちらが上

「動画生成AIかBlenderか」ではなく、文字を出す場面をBlenderに、雰囲気を出す場面をH3に分けるのが今の答えだと思います。私の場合、広告の文字パートとチャンネルのオープニングはBlenderに寄せることにしました。

PR

Lステップ × AI を同時に使いたい方へ

公式LINEのWebhook、1つしか設定できなくて困っていませんか?

公式LINEでは、Webhookの送信先URLを1つしか設定できません。そのため、Lステップを導入している企業が「DifyでAIチャットボットも動かしたい」「自社システムにもイベントを飛ばしたい」と思っても、Webhookの奪い合いになってしまいます。

結果として、片方を諦めるか、中継サーバーを自前で構築するか——どちらにしても時間とコストがかかる選択を迫られます。

L-Proxyなら、1つのWebhookを複数サービスに同時転送

公式LINEとサービスの間にL-Proxyを挟むだけで、Webhookを好きな数だけ分岐できます。

  • Lステップはそのまま、AIチャットボットを追加導入
  • 自社の顧客管理システムにもリアルタイムでイベント連携
  • 設定はURL貼り替えだけ。コード不要、最短5分で導入

今なら2週間の無料トライアル実施中。クレジットカード不要で、すべての機能をお試しいただけます。

L-Proxy について詳しく見る
記事一覧に戻る