棒人間の絵コンテで、AI動画の構図はコントロールできるのか|MiniMaxH3実測記録
YoutubeでAI VTuberユニット「アルトルタ」を開発している四ツ谷です。
今回は、ローカル環境(ComfyUI)で動く動画生成モデル MiniMax H3 を使い、「棒人間の絵コンテで構図を指示できるのか」を検証した記録です。
AI動画生成では「配置を指定したのに、なぜか正面・寄り・左右対称の絵しか出てこない」という悩みがよくあります。
この記事は、その悩みに対する実測データです。
結論
先に結論を書きます。
棒人間は効きます。ただし「配置・大きさ・体の向き・カメラ」だけです。
背景・色・表情・演技は、プロンプト(言葉)が勝ちます。
そして棒人間と文字指示は「どちらか」ではなく「両方」必要です。
以下、実際にどう検証したかを、数値つきで書いていきます。
前提(環境とモデル)
モデル MiniMax H3(Ref2VA=参照画像でキャラを固定する使い方)
実行基盤 ComfyUI v0.33.1
GPU NVIDIA GeForce RTX 5090(32GB)
素材 自作の棒人間(絵コンテ)+ キャラの立ち絵(参照画像)+ 英語プロンプト
検証を始める前に、地味に効いた発見が1つあります。H3は静止画としても書き出せます。
ワークフローの`VAEDecode`ノードがコマ列を出しているので、そこに`SaveImage`を繋げばPNGが直接出ます。動画1本の生成が2〜3分かかるのに対し、静止画なら1枚57〜75秒。
この記事の検証は、ほぼすべてこの静止画書き出しで行いました。
やったこと・実測値
1. そもそも棒人間は効くのか(対照実験)
最初に確かめたのは「棒人間を渡すか渡さないかで、結果が変わるのか」です。同じシード(1234)・同じ解像度で、参照画像に棒人間を含めるかどうかだけを変えました。
棒人間あり(参照3枚) 棒人間なし(参照2枚)
画角 全身の引き(狙いどおり) 寄り。膝から上だけ
アルトの位置 左に立っている ベンチに座っている
オルタの位置 右・ベンチのそば ベンチに座っている
ベンチ 右半分・横向き 中央に横一杯
ラジオ ベンチの右端 二人の中央
背景 指示どおり真っ白 禁止したはずの建造物と光が湧いた
生成時間 67.1秒 57.2秒


棒人間なしでは、何も指定しないとH3は正面・寄り・左右対称の絵に落ち着きます。
「正面ばかりでツマラナイ」の正体はこれでした。
もう一つ収穫があります。棒人間なしの版では「壁も建物も置くな」と否定文で書いたのに、建造物が勝手に湧きました。一方、棒人間ありの版では棒人間の白い背景がそのまま効いて、背景が空になりました。 否定文で防げなかったものが、絵で示したら防げたことになります。
2. 棒人間を自作した理由
最初の検証では、既存の動画のワンシーンを参考に用意した簡単な棒人間を使いました。ここから先は、自分たちの絵コンテとして継続的に使える棒人間が必要になります。
手元の環境を調べたところ、3Dモデル(glb/fbx)を読み込んでボーンを動かす道具は一つもありませんでした(PIL・numpy・scipyはある一方、Blenderもnode.jsもtrimeshも無し)。
既成のモデルを探すより、PILとnumpyだけで完結する自作を選びました。理由は次のとおりです。
追加インストールが要らない
ライセンスが完全にクリア(自作なので商用可・クレジット不要)
ボーン構成を要件どおりに作れる
姿勢が数値(JSON)で残るので、AIとの共同制作がそのまま成立する
そもそも、1つめの検証で「あの程度に単純な棒人間で十分効く」と分かっていた
ボーン構成は当初7本(頭・上半身・下半身・両腕・両足)の予定でしたが、「肘と膝が無いと座る・手を伸ばすが作れない」「手の向きが主役のカットが多い」という理由で、
手首・足首・肘・膝を足した15本にしました。指は棒人間の粒度を超えるため作っていません。

3. 自作棒人間は効くか(対照実験)
同じプロンプト・同じシード(1234)・同じキャラ参照2枚で、渡す棒人間だけを差し替えました。
C-1 自作(濃い・太い) 75.3秒 配置は完全に再現。ただし副作用あり
C-2 自作(線を細く・色を淡く) 63.1秒 副作用が消え、配置はそのまま
再現されたのは、アルトが画面左に立つ/オルタがベンチに「座る」(腿が前・脛が下・足が接地)/木のベンチが右半分に横向き/灰色のラジオがベンチの右端にアンテナ付きで/地面の線・カメラの高さ・引きの距離、とかなり細かい部分まででした。


失敗:濃い棒人間は「色」が絵に写り込む
C-1(濃い・太い)の出力では、アルトの背後に青い塊、オルタの背後に赤い塊が、実体のある物としてうっすら描かれました。線が太く(thickness 1.0)、色が濃い(pale 0)ときに起きる現象で、色の占める面積と彩度が閾値を超えると、H3が「そこに在る物」として解釈すると推定しています(実測ではなく推定)。
thickness 1.00 / pale 0.00(濃い) あり(青と赤の塊が背後に)
thickness 0.55 / pale 0.45(薄い) 完全に消えた


以後、既定値をthickness 0.55 / pale 0.45にしました。
4. 棒人間と文字指示、どちらがどれだけ効くのか
ここが検証の核心です。同じシード(1234)・同じキャラ参照2枚・同じ解像度で、「渡すもの」だけを変えた3条件を用意しました。
A あり 詳しくあり
B あり なし(「この配置を再現せよ」だけ)
C なし 詳しくあり
自動計測(位置は画面幅に対する%、高さは画面高に対する%)です。
下絵(狙い) 塊2 左20.0% 右70.4% 高さ56.7% インク率7.2%
A:人形+指示 塊2 左19.8% 右70.3% 高さ59.6% インク率8.8%
B:人形のみ 塊3 左35.9% 右70.3% 高さ71.2% インク率13.0%
C:指示のみ 塊6 左25.3% 右63.0% 高さ75.2% インク率25.6%
Aのずれは0.2ポイントと0.1ポイント。 狙った配置がそのまま出ました。

Bの発見:文字指示が無いと、棒人間そのものが絵に描かれる
条件Bでは、青い木製人形が「第三の人物」として画面左に描き込まれ、その隣にアルトが立ちました。
塊の数が2→3に増えているのはこれです。H3は、参照画像を放っておくと「被写体」として扱います。
「これは下絵であって、描くべき対象ではない」と文章で明示しないと通じません。
効いていたのは、次の一文でした(推定ではなく、抜いたら破綻したので実証済みです)。
<Picture 3> IS NOT A CHARACTER DESIGN AND NOT A STYLE REFERENCE. ... Never copy its drawing style,
never draw anybody as a plain wooden figure, and never give anybody a blank featureless head.Cの弱点:骨格は出るが、寸法と背景が制御できない
文字だけでも「アルトが左に立ち、オルタがベンチに座る」という構図自体は再現できました。
ただし、人物の高さが75.2%(狙いは56.7%)まで寄りすぎ、位置もずれ(左25.3%/右63.0%、
狙いは20.0%/70.4%)、背景にも金色の塊が複数湧きました(インク率25.6%、Aは8.8%)。
「壁も建物も景色も無い」と否定文で書いても防げませんでした。
結論:棒人間と文字指示は「どちらか」ではなく「両方」。役割が違う
文字指示 「これは下絵だ」と伝える(無いと人形ごと描かれる)/何を描くかを伝える
棒人間 位置・大きさ・画角・姿勢を精密に決める/背景を空に保つ
5. 背景・色・演技は、下絵とプロンプトのどちらが勝つか
もう一つ確かめたかったのが、「絵コンテの背景が雑だと、生成される絵の背景の質まで
引っ張られるのか」「立ち位置は下絵に従ってほしいが、立ち方・座り方・表情はプロンプトを
優先してほしい」という懸念です。同じ人形・同じシード・同じキャラ参照で、プロンプトに足す内容だけを変えました。
A(前回) 配置の説明のみ
D +背景と色(下絵は茶色のベンチ・白背景 → 青いベンチ・夕暮れの街)
E +演技と表情(アルト=凜々しく/オルタ=可愛らしく座り照れ笑い)
F +両方
ベンチ座面の平均色を実測しました(下絵は茶色)。
A(前回) 配置の説明のみ
D +背景と色(下絵は茶色のベンチ・白背景 → 青いベンチ・夕暮れの街)
E +演技と表情(アルト=凜々しく/オルタ=可愛らしく座り照れ笑い)
F +両方

DとFでは、夕暮れの空・ビル群・ネオン・石畳・長い影が指示どおりに描かれ、下絵の真っ白な背景はまったく残りませんでした。ベンチも青くなりました。
背景の描写の質は、下絵の雑さに一切影響されません。
E・Fでは、オルタは指示どおり膝を揃え、両手を膝の上で組み、目を細めた照れ笑いになりました。
「首を少しかしげる」という指示も反映されています。下絵の人形は首をまっすぐにしていたので、姿勢の「ニュアンス」についてもプロンプトが下絵を上書きすると分かりました。
まとめると、役割分担はこうなります。
立ち位置・大きさ・体の向き・手足の姿勢・カメラ → 下絵(棒人間)
色・材質・背景・空・地面・光・雰囲気 → プロンプト
表情・演技の質(凜々しい/可愛らしい/照れ) → プロンプト
裏を返すと、これは危険でもあります。プロンプトの書き方しだいで、
せっかく決めた配置まで崩せてしまうということです。下絵と矛盾しない書き方に統一する必要があります(この危うさが、後述する山場につながります)。
6. おまけ:座り姿勢を作る仕組み(道具の小ネタ)
棒人間に「腰を下ろすと、足の位置は変えずに座り姿勢になる」機能を足しました。
MMDの足IKと同じ仕組みを自作の人形にも実装したものです。

最初の実装では、足が体の真下にあるままだったため「しゃがみ」にしかなりませんでした。
椅子に座るには腿が前へ水平である必要があるためです。足IKターゲットを前へ出せるようにして、初めて「椅子に座る」形になりました。 腰を下ろす量を変えた実測が下記です。
センター−0.10 腰の高さ0.790 足首のずれ0 膝の曲がり55.1°
センター−0.25 腰の高さ0.640 足首のずれ0 膝の曲がり88.5°
センター−0.35 腰の高さ0.540 足首のずれ0 膝の曲がり105.9°
センター−0.45 腰の高さ0.440 足首のずれ0 膝の曲がり121.5°
足首は完全に固定されたまま、膝だけが前に曲がります。まだH3には渡していないので、「H3が座らせてくれた」ではなく「下絵の側では座らせられるようになった」までが実測範囲です。
踏んだ罠
ここからは、配置がある程度制御できるようになった後に出てきた、別種の不具合の話です。
罠1:カメラの回り込みが強いと、H3は左右を取り違える
ある1カットだけ、どうやってもキャラクターが狙いと逆の位置に出ました。下絵では画面右(0.76)を指定していたのに、生成結果はずっと画面左寄りでした。
下絵(狙い) 0.76
旧プロンプト(シード違い3種) 0.23/0.37/0.29
左右の指示を強化 0.45/0.36
Turbo LoRAを外して20ステップ 0.29
下絵のカメラ回り込みを浅くした 0.79/0.69
言葉をいくら強めても0.45が限界でした。下絵のカメラを浅くしたら一発で直りました。
高速化用のLoRAが原因でもありませんでした(外しても0.29のまま)。

結論(実測):下絵のカメラ回り込みは浅く(±70度くらいまで)保つ。
背後から撮りたいときは、カメラを回すのではなく、人物自身の位置と向きで作ります。
なお、この不具合の背景には、下絵の情報を英語プロンプトへ機械的に翻訳する処理そのものに複数のバグがあったことが分かっています。カメラの回り込み(yaw)を一度も英文に書いていなかった、体の向きの判定がカメラ基準ではなくワールド座標基準になっていた、画面の左右もワールド座標のまま判定していた、などです。数値も下絵も正しいのに、言葉だけが鏡像になっていたというのが実態でした。この「翻訳側のバグ」というテーマは、
次の罠でさらに深く掘り下げます。
罠2:単独カットでは、写らない子の参照画像を渡さない
1人だけが写るはずのカットで、文章で2回禁止しても、もう1人が描かれました。
解決したのは、文章での禁止ではなく、参照画像そのものからもう1人を外すことでした。渡さなければ描けません。
教訓:H3に「描くな」と言うより、材料を渡さないほうが確実です。
★罠3(山場):「向きが逆」の正体は、機械が書いた配置文そのものの矛盾だった
これがこの記事でいちばん書いておきたい話です。
あるカットで「向きが逆」という問題が起きました。配置の説明は、下絵から機械的に英文を組み立てる仕組みが自動生成しています。そのカットの出力は、次のような内容になっていました。
- ALTO is in the RIGHT part of the frame, ... turned towards the left of frame.
- a festival stall counter with bags of cotton candy stands in the RIGHT part of the frame.アルトも、屋台も「画面の右」。しかも彼女は「左を向く」。 3つが同時には成立しません。
調べていくと、面白いことが分かりました。同じ矛盾を含む配置文から作った静止画では、問題が起きていなかったのです。 静止画の生成では、たまたま「屋台を左に置く」という解き方でこの矛盾を解消していました。結果オーライだったわけです。一方、動画の生成では、文字どおり屋台を右に置き、キャラクターを左へ反転させる、という別の解き方をしました。
つまり、静止画で問題が出なかったのは「たまたま」でした。 矛盾したプロンプトは、条件が変わると別の解き方をします。一度うまくいったからといって、その書き方が正しかったとは限らないということです。
直したのは、動画用のプロンプトだけです(承認済みの静止画の記録には手を触れていません)。
- THE COTTON CANDY STALL ... are in the LEFT HALF OF THE FRAME, in front of her,
so that she is looking towards them.
## WHICH SIDE EVERYTHING IS ON - DO NOT MIRROR THIS SHOT
ALTO STANDS IN THE RIGHT HALF OF THE FRAME. SHE FACES LEFT, towards the stall.
... If any earlier sentence seems to say otherwise, THIS SECTION WINS.

教訓:人物と置き物の「画面のどちら側か」が同じ側になったら、矛盾を疑うこと。
人物が「左を向く」なら、その人物が見ている対象は反対側にあるはずです。
配置文を機械的に組み立てる仕組みそのものが、こうした矛盾を出しうる状態はまだ残っています。
人物の向きと置き物の側が食い違ったら警告を出す、というのが本筋の直し方ですが、これはまだ手を付けていません。
未解決
正直に書きます。
人形の写り込みは「確率的」に再発します。 濃い棒人間で起きていた写り込みは、線を細く・色を淡くする対策でほぼ消えましたが、同じ対策を入れた条件でも、なぜか1回だけアルトの背後に青い塊と人型の影が出たケースがありました。
同じ「これは下絵だ」という否定文を入れているのに、出る時と出ない時があります。
必要条件ではあっても、十分条件ではないということです。配置文を機械的に組み立てる仕組みそのものに残る矛盾(罠3参照)は未修正です。
カメラ回り込みを浅く保つ以外の解決策(人物自身の位置と向きで背後を作る方法)は、まだ体系立てて検証していません。
まとめ
棒人間は「配置・大きさ・体の向き・カメラ」に効きます。 何も指定しないとH3は正面・寄り・左右対称の絵に落ち着くので、これは大きな効果です。
背景・色・演技・表情は、プロンプト(言葉)が勝ちます。 下絵の雑さに引っ張られる心配はありません。
棒人間と文字指示は、両方必要です。 文字が無いと棒人間そのものが絵に描き込まれます。
棒人間は線を細く・色を淡くしないと、色の塊が背景に写り込みます。
カメラの回り込みは浅く保つこと。深くすると、言葉でどう補正しても限界があります。
そして、一度うまくいった書き方が、次も正しいとは限りません。 矛盾を含んだままの指示は、条件が変わると別の壊れ方をします。人物と置き物が同じ側にいたら、まず矛盾を疑う。
これが今回いちばんの収穫でした。
次回予告
この記事は「棒人間は構図に効くのか」という検証編でした。
次回は実践編として、この絵コンテアプリを使って実際に9カット・約40秒のショートアニメを作った記録を書く予定です。
・自作の絵コンテアプリの中身(全体絵コンテ→絵コンテ表→人形エディタの3階層構成)
・「舌を出す」演出は言葉で4回粘っても直らず、演出そのものを変えたら1回で解決した話
・シーンを分けると、キャラクターが手に持っているアイテムのデザインが変わってしまう話
・下見(高速・低解像度)と本焼き(高品質・低速)、それぞれの実測値
「言葉では動かない壁」がどこにあるのか、実測でそのまま示します。
お楽しみに。
X(旧Twitter)もやっています
日々の検証の様子や、記事にする前の途中経過はXで先に投稿しています。よかったらフォローしてください。
▼ アルトルタ(AI Vtuber Unit Ver.0.01)
https://x.com/Altolta_Project
note のフォローもお願いします
この開発記録は不定期に更新しています。続きが気になる方は、ぜひフォローをお願いします。
お知らせ
アルトルタ開発チームでは、配信で使えるOBS用ツール・オーバーレイをBOOTHで販売しています。
zipを解凍するだけで使え、外部への通信は行いません。
▼ Altolta428(BOOTH)
https://altolta428.booth.pm/
