一鏡到底白模型プレビス Skill
一言で言うと:ユーザーが画像や言葉を提供すると、このスキルが白模型動画を出力します。白模型が確定した後にプロンプトを書き、白模型動画をモーションリファレンスとして動画モデルに投入します。 長回しカメラワークを運任せのプロンプトに頼らず、まずカメラの動きを計算し、ユーザーが自分の目で確認してから決定します。
0. 実行方法(対外的には常にこの3ステップのみ説明)
- ユーザーは参考画像を1枚、または説明文を1文提供します(「10秒、背後から斜め前に回り込み、机の上のものを浮かせる」など)。
- スキルは3D白模型のカメラワークプレビス動画を出力し、双方で修正を繰り返します。ユーザーが「この感じだ」と言うまで続けます。
- 確定後、2つのものを提供します:白模型プレビス動画 + 詳細なビデオプロンプト。これらを一緒にSeedance 2.5に投入して最終映像を生成します。
内部の計算(シーン、座標、検証など)はスキルの責務であり、技術的な詳細をユーザーに要求しないでください。完全なエントリールール、必須質問、平易な言葉への変換表は references/00-flow-intake-iteration.md を参照してください。これがこのスキルのフロー全体の要綱です。トリガーされるたびに最初に読んでください。
1. 6フェーズのメインフロー(順序は変更不可)
| フェーズ | ユーザーの行動 | あなたが提供するもの | 合格条件 |
|---|---|---|---|
| ① 要件受け付け | 参考画像 / 一言説明を提供 | 「私の理解したシーン」を3文で復唱(被写体、カメラワーク方向、浮遊/無重力の有無を含む) | ユーザーが「はい」と言うか、1文修正する。アスペクト比と尺を確認 |
| ② 環境検出 | 二択(インストールする / しない) | check_blender.py の検出結果 + 一言でのルート説明 | ルートが明確で、AまたはBに進む |
| ③ 初版白模型動画 | 動画を視聴 | 再生可能な mp4/webm + 3~4枚のキーフレーム + 「おかしいところがあれば言ってください」 | 実際に動画が出力され提供されること。座標表だけの提供は契約違反 |
| ④ 対話的イテレーション | 平易な言葉で意見を述べる | v2/v3… の新版動画 + 1行の変更内容説明 | 毎ラウンド1箇所のみ変更。ユーザーが明示的に承認 |
| ⑤ 確定 + プロンプト作成 | 感覚が合っていることを確認 | 4つの検証が RESULT: PASS + 6カラムのプロンプト | 検証がPASSしていない場合、プロンプト作成禁止 |
| ⑥ 最終成果物提供 | 素材を動画生成に使用 | 白模型動画 + プロンプト + アップロード時の説明(動画1=モーションリファレンス、画像1=ビジュアルリファレンス) | プロンプト内の座標はすべて実測JSONからのみ取得 |
フェーズ③④は何度も繰り返し可能です。これがこのスキルの主要な価値です:カメラワークの問題を3D空間で修正し、動画モデルでのガチャに頼らないこと。
2. 6つの鉄則
- 順序の鉄則:シーン構築 → 白模型動画 → ユーザー確認 → プロンプト作成。 動画をユーザーが見ていない状態でプロンプトを書くことは、無駄な作業です。
- プロンプトのビジュアルはユーザーの参考画像のみを基準とする。 白模型はビジュアルのリファレンスではありません。モーション、タイミング、座標のみを固定するために使用します。画質、形状、照明、色はすべて参考画像に従います。
- カメラワークは一方向に連続。 回転角は単調増加または単調減少でなければならず、左右への折り返しは禁止です。折り返しは失敗とみなし、カーブを再調整します。
- 被写体は決して画面からはみ出さない。 フレームごとの投影検証で、被写体のNDCが安全枠内にあることを確認します。被写体が上昇する場合、カメラも同期して上方向にパンします。
- 貫通(クリッピング)ゼロ。 任意の2つの移動オブジェクトの任意のフレームにおける距離がしきい値未満の場合、失敗です。「先に移動してから上昇」「軽いものを先に飛ばし、重いものを後から飛ばす」という順序で解決し、密度で無理やり回避しません。
- ユーザーは人間の言葉のみを使用。 ユーザーが「もう少し高く」「椅子にぶつかった」と言った場合、それをパラメータに変換し、その項目のみを変更します。ユーザーに極角、NDC、AABBなどの用語を説明してはいけません。
3. 環境検出とルート選択(Tip 1:検出とモデリング)
check_blender.py
├─ インストール済み → ブランチA(Blender、最高精度、フレームごとの実測データをエクスポート可能)
├─ 未インストール
│ ├─ ユーザーがインストールに同意 → ポータブル版を案内(05-blender-setup.md)→ ブランチA
│ ├─ ユーザーが別バージョン/パスを既に所有 → パスを入力 → ブランチA
│ └─ ユーザーがインストールを拒否(または権限がない、時間がない)→ ブランチB(Three.js ウェブ白模型)
└─ ブランチBも同じ6フェーズを実行。「モーションリファレンス」のみを取得。検証とプロンプト作成の口径は完全に同一。
インストール案内の話し方——一度に1つの決定ポイントのみを提示し、長文は書かない:
現在Blenderがインストールされていません。2つの方法があります: 1)ポータブル版をインストール(約300MB、システムドライブ以外にインストール、レジストリやCドライブを汚さず、丸ごと削除可能)——最高精度で、フレームごとの実測座標をエクスポート可能。 2)インストールしない。Three.jsを使ってブラウザ上で白模型のカメラワーク動画を生成——数分でレンズの動きを確認可能。座標精度はやや低い。 どちらを選びますか?
ユーザーが1を選択 → references/05-blender-setup.md に従う。2を選択 → references/06-threejs-fallback.md に従う。
4. フェーズ詳細
① 要件受け付け
references/00-flow-intake-iteration.md §1–§3 を読む:入力が画像か、説明文か、両方かを判断する。必須質問は3つだけ(尺とアスペクト比、被写体の向き、カメラワークの意図)。推測できる場合は推測し、それ以外は knowledge/kb-levitation-office.md のテンプレート値をデフォルトとして使用する。ユーザーが「任せる」と言った場合、デフォルト値で初版を出力し、動画を見せて問題点を指摘させる。
③ 初版白模型動画(Tip 3:まず白模型プレビスを出力)
まず静的な白模型シーンを構築し、ワールド座標を設定する(1単位=1メートル、原点は地面上)→ パラメトリックなカメラ軌道 → 480P低サンプルレンダリング → 動画出力 + キーフレーム。このフェーズではプロンプトを書きません。検収条件:再生可能、黒フレームがない、被写体が枠内、部屋の壁や床が静止している。
④ 対話的イテレーション
00 §4 の変換表に従い、ユーザーの言葉をパラメータに変換する。1回に1項目のみ変更し、新バージョンを作成し、1行の変更内容説明を書く(v2:半径 3.45→2.95、被写体が最終フレームでより大きく表示される)。バージョン命名規則は 00 §5 に従う。
⑤ 確定検証とプロンプト作成(Tip 2 自動チェック + Tip 4 白模型を見ながらプロンプト作成)
4つの検証(極角の単調性 / 被写体のはみ出し / グループ間の貫通 / 天井への衝突)が RESULT: PASS である必要がある。その後、フレームごとの実測JSONをエクスポートし、6カラムでプロンプトを作成する。プロンプト内のすべての座標はこのJSONからのみ取得し、手動で推測して入力してはいけません。 作成仕様は references/04-prompt-format.md を参照。
⑥ 最終成果物提供(Seedance 2.5との連携)
00 §6 の提供仕様に従う:白模型動画はモーション/カメラ位置/タイミングのリファレンスとして、参考画像はビジュアルの唯一のリファレンスとして注釈。プロンプトの最初の文で「参照動画のカメラモーションと浮遊順序を厳密に再現する」ことを強調。尺は白模型動画と合わせ、カメラワークは2~3秒ごとに区切る。
5. ブランチA:Blender実行マニュアル
- シーンと座標仕様:
references/01-scene-spec.md - カメラワークデザイン仕様:
references/02-camera-motion.md - 階層別浮遊と貫通防止タイミング:
references/03-levitation-timing.md - インストールと接続:
references/05-blender-setup.md - スクリプト:
scripts/build_scene_template.py— 白模型シーンの骨格(部屋、机、デュアルモニター、椅子、人物ブロック)scripts/render_previs.py— 低サンプル480Pプレビスレンダリング(EEVEE、マテリアルなし)scripts/export_cam_data.py— フレームごとのcam / 注視点 / 仰角 / オブジェクトzをJSONにエクスポートscripts/validate_trajectory.py— 4つの検証(単調性 / はみ出し / 貫通 / 天井衝突)
コマンドラインシーケンス(ローカルで動作確認済み、$BLENDER はblender.exeの絶対パス、パスはプロジェクトに合わせて適宜変更):
# 1 検出
python scripts/check_blender.py --json
# 2 シーン構築 + サーキュラー軌道と階層別浮遊アニメーション(--orbit 1)の書き込み、座標リストをエクスポート
"$BLENDER" -b --python scripts/build_scene_template.py -- \
--orbit 1 --center 0.0 0.15 --dur 10 --fps 24 \
--a0 186 --a1 300 --r0 3.45 --r1 2.45 --z0 0.78 --z1 1.20 --l0 1.05 --l1 1.45 \
--out "Z:/project/scene.blend" --csv "Z:/project/coords.csv"
# 3 4つの検証(確定前に必ず実行)、RESULT: PASS であること
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/validate_trajectory.py -- \
--center 0.0 0.15 --ceiling 2.75 \
--keys Person_Head,Person_Torso,Desk_Top,Monitor_H_Body \
--moving Minion_,Monitor,PC_Case,Keyboard,Mouse,Person_,Desk_,Chair_
# 4 フレームごとの実測データをエクスポート(プロンプト作成にはこのデータのみ使用)
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/export_cam_data.py -- \
--out "Z:/project/cam.json" --center 0.0 0.15 --keys Person_Head,Desk_Top,Chair_Seat
# 5 プレビスレンダリング:まず16フレームのサンプルでパイプライン確認、その後全編をレンダリング
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/render_previs.py -- \
--out "Z:/project/previs.mp4" --res 960x540 --samples 4 --start 1 --end 240
イテレーションによる修正は、手順2(パラメータ変更)→ 手順5(動画出力)を再実行するだけで済む。確定後、手順3、4を追加で実行する。
--keys には被写体のキーポイント(頭、胴体、天板、メインモニター)のみを指定。被写体より1m以上低い付属物(椅子の座面など)を含めると必然的にはみ出し検出されるが、これはカメラワークの物理的結果として許容される。
--moving には移動するオブジェクトのプレフィックスのみを指定。指定しない場合、貫通検出は行われない。オブジェクトは名前の最初のセグメントでグループ化され、同じグループ内の接触は貫通とみなされない。
6. ブランチB:Three.js ウェブ白模型
- 方式と制限:
references/06-threejs-fallback.md - 直接実行可能:
scripts/threejs_previs.html(単一ファイル、CDNからthreeを読み込み、軌道再生、透視図/上面図の切り替え、JSONエクスポート、webm録画を含む) - 制限:人物はブロックで近似、マテリアルはすべて白。モーションの方向、構図関係、タイミングのみを検証可能。照明と質感は検証不可。
- 出力:webm + キーフレームスクリーンショット。座標はページ内の同じパラメータセットからエクスポート。
7. プロンプト提供仕様(Tip 4)
固定の6カラムで、すべて必須:【Generation Unit】 【参考】 【連続性】 【ナレーションと音声】 【タイムライン・座標付き】 【ネガティブプロンプト】。
3つの厳格な要件:
- 白模型を見ながら書き、推測で書かない:カメラワークの各文は白模型のタイムコードを参照できること。例:「0–2.5s 被写体の背後左後方から開始、カメラ高さ0.78m、半径3.45m、極角186°、仰角3.7°」。
- 参照の役割を明確に区別する:白模型動画はモーションのみを固定、参考画像はビジュアルを固定。両方について具体的に記述する。
- 貫通防止は因果関係のある順序文で記述する。「貫通に注意」ではなく。
作成テクニック、フレーズ、悪い例、一般的な失敗原因は references/04-prompt-format.md を参照。プロジェクト実測パラメータは knowledge/kb-levitation-office.md(テンプレート値として直接再利用可能)。
8. 一般的なトラブルと対処法
| 現象 | 根本原因 | 対処法 |
|---|---|---|
| レンズが左右にガクガク、行ったり来たり | 極角曲線が非単調 / 補間の跳ね返り | 単調パラメータ化 + 1次差分符号チェック + LINEAR補間 |
| 被写体が途中で画面外に | 被写体が上昇したがカメラが追従していない | カメラzと注視点zを追従係数0.8–0.95で同期キーフレーム |
| 机、椅子と人が貫通 | 人と椅子が同時に浮遊開始 | 人を先に浮かせ、椅子は0.4–0.7秒遅らせる。かつ水平方向に移動してから上昇 |
| デバイスと天板が衝突 | デバイスと机が同時に浮遊開始 | デバイスを約1.3m先に浮かせてホバー、机は2–3秒遅らせる |
| 部屋も一緒に浮く | 注視点または親子関係が間違っている | 被写体グループのみz変位。壁、床、窓は静止 |
| 最終映像で人物が振り返る、正面が崩れる | 向きが固定されていない | 【参考】で背中/斜め後ろ向きに固定。ネガティブプロンプトに振り返り、顔のアップを追加 |
| 最終映像が3Dグレーモデルになる | 白模型がビジュアルリファレンスとして扱われた | 【参考】で「白模型はモーションのみのリファレンス」と明記。画風は写実撮影で固定 |
| モデルが参照動画を完全に無視する | 最初の文で再現を強調していない | 最初の文に「参照動画のカメラモーションと浮遊順序を厳密に再現」と記述。カメラワークを2–3秒ごとに区切る |
| プロンプトの座標が画面と合わない | 推測座標を使用 | フェーズ⑤に戻り、実測JSONから値を取得。手動入力を禁止 |
9. 高品質成果物チェックリスト
- ユーザーが参考画像または説明を提供し、「私の理解したシーン」を確認済み
- 初版白模型動画が実際に出力され、提供された(座標のみではない)
- イテレーションバージョンに番号と変更内容説明があり、最終版がユーザーに明示的に承認された
- 4つの検証が
RESULT: PASS - 参考画像がプロンプト内で @画像1 として指定され、白模型動画がモーションリファレンスとして指定されている
- タイムラインが秒単位で区切られ、各区間に「開始カメラ位置 → 終了カメラ位置 + 注視点 + 仰角 + 半径」が記述されている
- 階層別タイミングに、誰が先に浮遊するか、誰が後か、浮上高さ、最終階層高さが記述されている
- 貫通防止ロジックが因果関係のある文で記述されている
- ネガティブプロンプトが以下をカバー:人物の向きと顔、デバイスの増減と向き、貫通と落下、部屋の漂い、カメラの折り返し、スタイルの急変、字幕、透かし
- 提供時に「プレビスはモーションのみの検証であり、ビジュアルは参考画像を基準」と説明し、アップロード時の説明を添付
10. スクリプトパラメータクイックリファレンス
| スクリプト | 主要パラメータ | 説明 |
|---|---|---|
check_blender.py | --json | 読み取り専用検出;出力 found/path/source/version |
build_scene_template.py | --orbit 1 --center cx cy --dur --fps --a0 --a1 --r0 --r1 --z0 --z1 --l0 --l1 --out --csv | --orbit なしは静的シーンのみ出力。ありはフレームごとのカメラと浮遊キーフレーム(LINEAR)を書き込み |
validate_trajectory.py | --center --ceiling --keys --moving --margin --tol | 終了コード 0=PASS 1=FAIL;4項目チェック |
export_cam_data.py | --out --center --keys | 出力 [{f,cam,rad,ang,pitch,オブジェクト:[x,y,z]}] |
render_previs.py | --out --res --samples --fps --start --end --engine | 最初に16フレームサンプル、その後全編 |
install_blender.ps1 | -TargetDir -Version -Mirror auto|official|aliyun|tuna -DryRun | ミラー自動フォールバック;ポータブルディレクトリ作成;BLENDER_PATHを書き込み |
パラメータはすべて -- の後に記述し、Pythonスクリプトに渡します。
11. 対外向け説明(「このスキルで何ができる?」と聞かれた場合)
参考画像か一言の説明を与えると、まずあなたのカメラワークを3D白模型で動かして見せてくれます。気に入らなければ修正し、満足したらプロンプトを書き、白模型動画とプロンプトを一緒にSeedance 2.5に投入して最終映像を生成します。検出モデリング、4つの自動検証、白模型プレビス、カメラワークを見ながらのプロンプト作成、すべてが含まれています。サーキュラームーブ、上昇、無重力浮遊、どんなものでも、映像はスムーズで突然の貫通や変形は起こりません。この一鏡到底のSkillがあれば、長回しカメラワークは驚くほど安定します——AI動画制作に、もはや運任せのプロンプトを学ぶ膨大な時間は必要ありませんか?
12. 本スキルの自己チェック状況
| 項目 | 結果 |
|---|---|
| Blenderの検出 | 合格(4.5.15 LTS ポータブル版、Dドライブ) |
| シーン + 軌道 + 浮遊アニメーションの構築 | 合格(240フレーム @24fps、座標CSV出力) |
| 4つの検証 | PASS:はみ出し0(960 NDC検出)、新規貫通0、天井衝突0、3つの単調性すべてTrue |
| フレームごとのデータエクスポート | 合格(240フレームJSON) |
| プレビスレンダリング | 合格(EEVEE_NEXT、16フレームサンプルmp4正常) |
| インストールスクリプト | 合格(-DryRun 実測:公式403 → 阿里雲 4.5.16、約380MB) |
テンプレートデフォルトパラメータは knowledge/kb-levitation-office.md を参照。新しいプロジェクトの出発点として直接再利用可能。