Concept Reel · コンセプトリール
一言で説明を表現する:視聴者が主体を認識し、変化を見て、因果関係を理解できるようにする。実行可能なプロジェクト、絵コンテ、事実の出典、およびリクエスト範囲内のプレビューまたは完成済み動画を納品する。
本スキルディレクトリには共有エンジンが含まれています。プロジェクトはユーザーのプロジェクト内に作成可能です。コマンド内の engine/、scripts/ は本スキルディレクトリからの相対パスであり、呼び出し時には実際のパスを使用します。現在固定のアスペクト比は1920×1080の横長、デフォルトは30fps、新規プロジェクト作成時にフレームレートを設定可能です。
タスク別の読み方
- ショットの作成や調整:まず 制作ガイド を読み、次に 視覚的説明手法 を読む。
film.jsを書く、またはツールを呼び出す:エンジンAPI を読む。- スタイルの選択や拡張:15のスタイルと選び方 を読み、
--list-styles/--describe-style IDでレシピを確認する。旧B/Cの外観については 互換外観 を参照。既存のスタイルがある場合はユーザーの要求に従う。 - テキストの調整:スクリプト を読む。
- 長尺作品、章、累積曲線、イベント:長尺の経験 を読む。
- 構図やトランジションの問題:レイアウト と 視覚文法 を読む。
- ブリーフが必要:プロンプト例 を読む。振り返りの例は 分析方法 を参照。
制作原則
- まず視聴者に何を理解させるかを決めてから、主体と動作を選択する。幾何学図形はグラフや抽象的な量に使用できる。現実の物体を描写する場合は認識可能な形状にする。
- 字幕内の変化は画面上で発生させる。数字は計算に基づく。図解、適用条件、不確かな事実は明示する。重要な事実は検証可能な出典を記録する。
- 一度に一つの主要な視覚焦点だけを配置する。字幕は安定させ、タイトル、キーワード、タグは主体と余白のレイアウトに合わせる。
- フォント、色の意味、動きの感触を統一する。カメラの重心、ショットサイズ、情報密度は内容に応じて選択する。スタイルプリセットは出発点であり、カラーパレットと動作を調整したり、メインスタイルと補助スタイルを組み合わせたりできる。
- 字幕が完全に表示された後に読むための停止時間を計算する。図を見るためや推論には追加の時間が必要。結論はまず止めてから、退場させる。
- アニメーションは
tによって決定する。乱数は固定シードを使用し、リアルタイムクロック、タイマー、またはフレームをまたぐ累積状態で画面を決定しない。 - 元のサンプルは実装方法を学ぶためのもの。新しい作品は独自のテーマ、テキスト、絵コンテに基づいて制作する。出典と素材の境界は NOTICE を参照。
ワークフロー
納品範囲を確定する。 題目、既存のテキスト、既存の悪いショット、長さ、スタイル、BGM、完全なエクスポートが必要かどうかを特定する。文脈から推測できる選択はそのまま進める。結果に影響を与える不足している要件のみを明確にする。ユーザーが完全な制作を承認している場合は、そのまま続行し、段階ごとの承認を繰り返し要求しない。
事実と絵コンテを整理する。 一言で核心的な質問と事実表(事実、出典、適用条件、確信度)を書く。ショットごとに時間、ナラティブタスク、主体と重心、テキストと読み順、動作、完全な読みのための停止時間、音声を記録する。まず絵で描けない文を解決し、次に時間を割り振る。既存のテキストの意図は保持する。修正が必要な事実や構造については理由を説明する。
スタイルを描画方法に落とし込む。 明確なスタイルがない場合は、主体、空間関係、情報密度、動きのトーン、実装コストに基づいて2~3の方向性を検討し、内容に適したものを選択する。絵コンテには選択理由、認識可能な特徴、実装の境界を記録する。スタイルギャラリーを使って動作を探るが、自分の作品は事実と絵コンテに基づいて制作する。3D、ガラス、液体のプリセットはCanvas向けのものであり、複雑な現実的なレンダリングは別途実装する必要がある。バラエティ番組のテロップは横長のまま。
まずキーショットを検証する。 環境を確認し、プロジェクトを作成してから、最も難しい、またはスタイルを最もよく表す部分を実装する。スケルトンには完成品の画面はなく、SUBS とシーン関数を埋める必要がある。既存の絵コンテは保持され、既存のソースコードはデフォルトでは上書きされない。
python scripts/check_env.py
python scripts/new_film.py --list-styles
python scripts/new_film.py --describe-style isometric
python scripts/new_film.py <プロジェクトディレクトリ> --style isometric --title "作品タイトル" --duration 60 --fps 30
python engine/render.py <プロジェクトディレクトリ> --serve
python engine/render.py <プロジェクトディレクトリ> --stills 2.5 8 15
python engine/render.py <プロジェクトディレクトリ> --motion 8 10 12
環境に依存関係が不足している場合はREADMEに従ってインストールする。フォントがない場合は python engine/get_fonts.py を実行する。デフォルトではバンドルされたChromiumを使用する。ユーザーがローカルのChromeを必要とする場合は --browser chrome を渡す。
--style ID と --world B/C は排他的である。指定がない場合、デフォルトのCが維持される。新しいスタイルのプロジェクトには調整可能な STYLE レシピが埋め込まれ、共有の VStyles を使用する。motion.fps はスタイルの動作の推奨サンプリングレートを示し、実際の出力フレームレートは --fps によって決定される。スケルトンは自動的にテーマコンテンツを生成しない。
確認してから拡張する。 実際のスクリーンショットを確認し、主体が認識可能か、動作が説明を担っているか、テキストが読めるかを判断する。対象となる視聴サイズで遮蔽をチェックする。発見した問題を調整し、関連する瞬間を再確認してから、作品全体を拡張する。1シーン1関数。字幕はdrawの最外層で描画する。複雑なセクションはファイルを分割し、index.html で宣言する。
python engine/render.py <プロジェクトディレクトリ> --sheet 16
python engine/render.py <プロジェクトディレクトリ> --det
python engine/render.py <プロジェクトディレクトリ> --clip 0 5 preview
--sheet の単一値はフレーム数を表し、複数値は特定の時刻を表す。--det が失敗した場合は、Canvasの状態、乱数シード、フレーム間キャッシュを確認する必要がある。失敗を通ったと呼んではならない。
承認範囲に従ってエクスポートと音声を追加する。 完成品がリクエストされた場合は、全フレームレンダリング、イベントエクスポート、オーディオ合成を実行する。ソースコードやプレビューのみが必要な場合は、対応する結果が完了した時点で納品する。
python engine/render.py <プロジェクトディレクトリ> --jobs 4
python engine/render.py <プロジェクトディレクトリ> --events
python engine/audio.py <プロジェクトディレクトリ>
# 利用可能な外部BGMがある場合
python engine/audio.py <プロジェクトディレクトリ> --bgm music.mp3 --bgm-db -8
fr.sfx のイベント名は tick、soft、chord、bloom(flash互換)、rise、thud、tock、stamp、shimmer、hush。外部BGMがなくても基音とイベントサウンドを合成できる。具体的な結果は正直に説明する。--wav-only は合成音声トラックのみを出力し、外部BGMは重ねない。
検収して納品する。 エクスポートされたクリップまたは全編を連続して視聴し、入り込み、安定した読み取り、キーアクション、トランジションの中間点を抜き打ちチェックする。事実と絵コンテが一致しているか、音声と映像が同期しているか、数字が一致しているか、フォントに欠けがないかを確認する。発見した問題を修正し、影響を受けるショットを再確認する。ソースコードのパス、プレビュー、または renders/final.mp4 を納品し、検証結果と実際の制限を簡潔に説明する。完全に視聴していない部分は明確に説明する。
プロジェクトと成果物
index.html は /engine/ の共有リソースとローカルの film.js を参照する。storyboard.md は絵コンテと事実を保存する。review/ にはキーフレーム、audio/ にはイベントと合成音声トラック、renders/ にはクリップと完成品を格納する。生成物はデフォルトではコミットされず、再レンダリング可能なソースコードは保持される。