シネマティックフィルム は何をしますか?
この方法で作られたフィルムは、1つのカメラが1つの世界を移動するものです。すべての写真、カード、切り抜き、地図、数字は1つの大きなボード上に存在し、ストーリーが進むにつれてカメラは紐、ルート、矢印に沿ってそれらの間を移動します。すべてのビジュアルヒットは、ナレーターが話す言葉に合わせてタイミングが調整されます。すべてコード(PythonのSkia)で記述されているため、毎回同じようにレンダリングされ、どんなトピックにも対応でき、新しい音声が自動的にフィルム全体のタイミングを再調整します。
アル・カポネに関する5分22秒のドキュメンタリーから構築され、その後あらゆる主題に拡張されました。ここにあるルールは、制作中に発生した問題から記述されました。
ツール
| ファイル | 機能 |
|---|---|
scripts/check_setup.py | Python、skia-python、ffmpeg、フォント、メモリをチェックし、インストールすべきものを表示 |
scripts/get_fonts.py | このマシンに不足しているテキストロール用に、オープンライセンスのフォント(Bebas Neue、Homemade Apple)を取得 |
scripts/new_project.py | assets/template/(実行可能な解説)からプロジェクトを開始、または--exampleでドキュメンタリー例を作成 |
scripts/make_beats.py | beats.md(承認するテーブル)を作成。時系列、行の長さ、音声テキストの数字をリント |
scripts/tts_say.py | 最終的な音声の前にフィルムのタイミングを取るための、無料のスクラッチ音声(macOS say、espeak-ng、または任意のTTSコマンド) |
scripts/split_takes.py | セクション全体のテイクを1行ごとのクリップに分割し、疑わしいカットをフラグ付け |
scripts/build_narration.py | 行を結合してaudio/narration.m4aとaudio/timing.jsonを作成。これがフィルムの基盤 |
scripts/fetch_commons.py | Wikimedia Commonsを検索し、ライセンスとクレジット付きでダウンロード。非フリーファイルを拒否し、credits.mdを作成 |
scripts/make_map.py | 地図用にパブリックドメインの境界(任意の国または地域)を投影 |
scripts/prep_assets.py | すべての画像を1つのルック(白黒、セピア、または自然色)にグレーディング。ボードテクスチャを生成 |
scripts/engine.py | フィルムエンジン:カメラ、スポットライト、アイテム、地図、ルック、フィルム仕上げ |
scripts/render.py | 静止画、コンタクトストリップ、キューリスト、および並列MP4レンダリング |
scripts/build_sfx.py | キューリストからすべての効果音を合成(サンプル無し、ライセンス不要) |
scripts/mix_soundtrack.py | 音声、効果音、オプションの音楽を、ダッキングとラウドネスノーマライゼーションでミックス |
scripts/burn_captions.py | 4つのキャプションスタイルのいずれかを完成したフィルムに焼き付け、SRTファイルを作成 |
Python 3.9+、pip install skia-python numpy pillow(scipyはオプション)、およびffmpegが必要です。最初にscripts/check_setup.pyを実行してください。LinuxまたはWindowsでは、プロジェクトごとにscripts/get_fonts.pyも実行してください。すべてのコマンドは--project <folder>を受け付けます。
フィルムの選択
| 種類 | ルック | 画像 | 典型的なアイテム |
|---|---|---|---|
| 歴史、実録犯罪、調査 | wall、slate | 白黒グレーディングされたアーカイブ写真と書類 | 印刷物、破れた切り抜き、スタンプ、赤い紐、地図ルート |
| 製品発表、ブランドまたは創業者の物語 | studio、charcoal | 自然色グレーディングされた製品写真とチーム写真 | カード、大きな数字、カウンター、矢印 |
| 科学、工学、仕組み | blueprint、paper | 図、アーカイブまたはAI静止画 | カード、カウンター、ペン書き、地図 |
| テクノロジー、宇宙、予告編 | night | スクリーンショット、レンダリング、AI静止画 | 大きなタイプ、カウンター、ルート、カード |
ルックはボードと仕上げであり、すべてのアイテムはすべてのルックで機能するため、自由に組み合わせてください。references/story.mdには、各種類のストーリーの形があります。
ルール
- 1行に1つのヒーロー。 各ナレーション行には、カメラが捉えるものが正確に1つだけあります。スポットライトが他のすべてを暗くします。
- ヒットは発話された単語に合わせる。 スタンプは行の開始時ではなく、「起訴された」という言葉に合わせて打たれます。
doc.W(line, "word")ですべてのタイミングを調整します。 - フレーズは1つの方法で表示する。 画面上にタイプするか、実際の文書に表示するかのどちらかで、両方は決して行いません。文書の本文コピーは灰色の行であり、フィラーワードは使用しません。
- 時間はオープニング後、前方にのみ進む。 コールドオープンは先に飛ぶことができます。1つのブリッジ行(「4年前…」)の後、ストーリーの時間は前方にのみ進みます。
- 電話で1秒で読める大きさ。 大きく凝縮された大文字。画面上のタイプされたラベルは、フレーム高さの約3%以上にする必要があります。
- 少ない方が良い。 紐はビートの後にフェードし、古いアイテムは暗くなります。最終的な引きのショットは、乱雑ではなく、構成されたように見えるべきです。
- 本物に見えるものは発明しない。 実際の写真と書類にはクレジットが付きます。コードで描かれた文書は再現とラベル付けされ、実際に書かれた言葉のみを引用します。AI画像はイラストとして問題ありませんが、実際の出来事や実際の人物の証拠としては決して使用しません。
ワークフロー
4つのゲート(ゲートと表示)でユーザーの承認を待ちます。
- ストーリー。 リサーチし、
script.jsonを作成します:テイク(セクション)の行。各行にはtext、spoken(数字は言葉に)、hero、typedがあります。事実メモも併記します。60〜90秒で約150〜230語です。詳細はreferences/story.mdにあります。 - ビートテーブル。
scripts/make_beats.pyを実行し、すべてのリント警告を修正します。ゲート: ユーザーがbeats.md(事実を含む)を承認します。 - 画像。
photos.jsonにすべての画像をリストします:そのID、種類、出典。- アーカイブ画像:
fetch_commons.py search、category、get。 - ユーザー自身のファイル:
<project>/assets/photos/にドロップします。 - AI静止画:1つのスタイルで生成します(
motion-assetsスキルが計画と価格設定を行います)。 references/archive.mdには、他のアーカイブと権利ルールが記載されています。
- アーカイブ画像:
- スクラッチ音声。
tts_say.py、次にsplit_takes.py、次にbuild_narration.pyを実行します。split_takes.pyがフラグを立てたすべての行を聞きます。これでタイミングが実際のものになります。 - アセット。 ストーリーが移動する場合は
make_map.pyを実行し、次にprep_assets.pyを実行します。 - シーン。
scene.pyを作成します:セクションごとにクラスターでボードをレイアウトし、doc.L/doc.Wのタイミングでアイテムを追加し、カメラとスポットライトのキー(film.shot)を設定します。references/film.mdを読んでください。出荷された両方のプロジェクトがパターンを示しています:assets/template/scene.py(解説、スタジオルック)とassets/wright-flyer/scene.py(ドキュメンタリー、すべてのアイテムタイプ)。 - ルックテスト。 各行の1つの静止画を1280x720で
render.py --probeでレンダリングし、すべてを確認します。次に、すべての大きなカメラ移動に対して--stripを実行します。ゲート: ユーザーにオープニングとルックの静止画を見せます。 - ドラフト。 最初の30秒を1280x720でスクラッチ音声でレンダリングします。ゲート: ユーザーが視聴します。
- 最終音声。 任意のTTSまたは人物で録音します(
references/voice.md)。スプリット、ビルド、プローブを再度実行します。シーン内の何も変更しません。 - サウンド。
render.py --cues、次にbuild_sfx.py、次にmix_soundtrack.pyを実行します。必要に応じてスコアを追加します。references/sound.mdを読んでください。 - 仕上げ。 フルレンダリングを実行し、次に
burn_captions.pyとSRTを作成します。1440pまたは4Kでレンダリングする前にreferences/performance.mdを読んでください。フィルムと共にcredits.mdを引き渡します。
毎回のセルフレビュー
何かが機能すると主張する前に、静止画を確認してください。これらは、実際のレンダリングで発生したことがあるミスです:
- 暗いボードに暗いインク:見えません。暗いルックには明るいタイプを使用するか、暗いタイプの背後に完全なラベルブロックのために
bar_h=0.92を使用します。 - カメラは動いたがスポットライトが残り、暗いフレームになる。分割しない限り
film.shot()を使用します。 - 地図の縮尺が小さすぎる:海岸全体が1枚の写真より小さい。各場所に独自のスペースができるように
Kを選択します(references/film.md)。 - 地図のラベルが衝突する。ラベルを隣接するラベルから離れた側に配置します。
- クラスターが地図の端にまたがっている。クラスターは地図上か、明確に地図外のどちらかに保ちます。
- ハイライトが単語から数ピクセルずれている。
PaperDoc.phrase_spansを使用し、画像のグリッドオーバーレイから読み取った分数でdoc.on(print, fx, fy)を使用します。
出荷済みプロジェクト
assets/template/:「From Cherry to Cup」、25秒の解説(スタジオルック)。カード、矢印、カウンターで構成され、画像はありません。new_project.py my-filmでコピーされます。スクラッチ音声を追加すればレンダリングされます。assets/wright-flyer/:「Twelve Seconds」、初飛行と50,000ドルの賞金に挑み2度墜落したライバルについての90秒のドキュメンタリー。7枚のパブリックドメイン写真、アメリカ地図、2つの組版文書、すべてのアイテムタイプを使用しています。
python3 scripts/new_project.py wright --example
python3 scripts/fetch_commons.py get --project wright
python3 scripts/make_map.py --project wright && python3 scripts/prep_assets.py --project wright
python3 scripts/tts_say.py --project wright && python3 scripts/split_takes.py --project wright && python3 scripts/build_narration.py --project wright
python3 scripts/render.py --project wright --size 1280x720 --out out/draft.mp4 --audio audio/narration.m4a
関連スキル
Open 3D Skillsより:motion-assetsは、フィルムにイラストが必要な場合にAI静止画を計画・価格設定し、frame-captureはコード描画フィルムの代わりにウェブページを録画します。