Kalem: 各シーンにそれぞれの描画エンジンを は何をしますか?
このスキルはリポジトリのルートから実行されます(claude をリポジトリフォルダで開きます)。すべてのパスはリポジトリのルートを基準とします。新しい動画は projeler/<名前>/ の下に作成されます。
単一のエンジンで作成された動画は似たり寄ったりになります。このスキルは動画をシーンに分割し、各シーンの中に何があるかを調べて、それを最も美しく描画できるエンジンを選択します。エンジンは鉛筆のようなものです。同じ絵を鉛筆と水彩では異なるタッチで描きます。
シーンの中身 → どのエンジン
| シーンの中身... | エンジン | 理由 |
|---|---|---|
| 手描き、自己描画線、スケッチ、ペンの動き | Paper.js | 線を最も滑らかで自然に描くエンジン。ペンワーク専用。 |
| キャラクター、歩行、手を挙げる、図形が別の図形に変形 | 素のCanvas(独自描画コード) | 動きと図形を完全に制御。 |
| 爆発、光、グレア、埃、数千の小さなパーティクル | PixiJS | 数千のパーティクルをカクつかずに再生。 |
| 画面上のテキスト、数字、カウンター、情報カード、ニュース編集 | HyperFrames(HTML + GSAP) | テキストと情報アニメーションで最もクリーン。 |
| 本物の3D:カメラが回る、光、影、機械 | Three.js | ブラウザで本物の3D。 |
| 数式、グラフ、図式、数学 | Manim(Python) | 3Blue1Brownのツール。LaTeXがない場合はTextを使用。 |
ヘルパーはシーンを描画せず、エンジン内部で補助します。
| 処理 | ヘルパー |
|---|---|
| 軽いオブジェクトが落下、転倒、バウンド | Matter.js |
| 重いオブジェクトが滑る、積み重なる | Rapier |
| シーン間のトランジション(125種類のトランジション、ページめくり = BookFlip) | gl-transitions (ortak/gecis.html) |
| 何かが弧を描いて画面に飛び込んでくる | Anime.js |
| 紙吹雪、星、絵文字のシャワー | tsParticles |
| 3Dモデルの削減 | glTF-Transform |
| フレームロックされた効果音(クリック、ざわめき、ビート) | Tone.js (ses/ses.html) |
このテーブルは一個人の好みで作成されました。20のツールを同じシーンで競わせ、評価・採点しました。ご自身で試行錯誤し、テーブルをご自身の目で調整してください。
フロー
- シーンに分割。 ユーザーが説明した動画を4~8シーンに分割します。各シーンについて日常的な言葉で一文を書き、エンジンを選択し、ユーザーにテーブルとして表示します。 「1. シーンには自己描画されるスケッチがある → Paper.jsで描画する必要がある。」 技術的な圧縮は行わない(「数字が走る」ではなく「シーンの中に増加する数字がある」)。 1シーン = 1エンジン。 シーンに複数の処理がある場合、画面を占有する主要な処理がエンジンを決定し、副次的な処理はヘルパーとして追加されます。
- 共通ファイルを作成。
<プロジェクト>/zaman.json(fps、サイズ、トランジションフレーム数、シーンリストと各シーンのフレーム数)と<プロジェクト>/BRIEF.md(共通のビジュアル言語、事実、各シーンの説明、納品契約)。サンプル:ornek/ucan-makine/(存在する場合)。 - シーンを生成。 紙の質感、色、フォントはBRIEFで一度定義され、各シーンはそれらを統一して使用します。動画が一貫性を持つかどうかはこれに依存します。
各シーンは独自のフォルダに格納:
<プロジェクト>/sahneler/<NN-エンジン>/→calistir.sh、video.mp4、kontrol.png、olaylar.json。シーンは互いに独立しており、並行生成可能(各シーンに別々のエージェント)。 - 制御。 各シーンの
kontrol.pngおよびいくつかの完全なフレームを確認:テキストのはみ出し、空フレームの有無、色が共通言語に従っているか、最初のフレームが塗りつぶされているか。 - 結合。
python3 birlestir.py <プロジェクト> [--gecis BookFlip]→ トランジション + 音声 →<プロジェクト>/cikti.mp4。 視聴者に各シーンがどのエンジンで描画されたかを表示したい場合は--etiketを追加:zaman.json の各シーンに"etiket": ["Paper.js", "自己描画ペン線"](オプションで3行目にヘルパー)、最初のトランジション用に"gecis_etiketi"。各シーンの左下に、ノート用紙の色をした小さなカードが表示されます。 - レビュー。 新しいエージェントに制御画像とBRIEFのみを渡し、質問:「見ている人がここで『ありえない』と思うことはありますか?」発見された問題を修正し、その後ユーザーに公開します。
技術契約
- 時間はフレーム番号から取得。
Math.randomは使用せず、シード付き乱数を使用。2回の実行で同じフレームが生成されること。 - ブラウザエンジン:ページは
/ortak/surucu.jsのsurucu(kur, kare, KARE)を呼び出し、kare(f)は描画済みのキャンバスを返します。キャプチャ:python3 ortak/yakala.py <ページパス> <フレームフォルダ> [幅 高さ]、その後 ffmpeg で mp4 に変換。 olaylar.json:[{"kare": 12, "tur": "cizgi|tik|vurus|dusme|hisirti|parilti|kanat|sayac", "guc": 0-1}]。画像のタイミングと同一フレーム。音声はここから生成されるため、音声と画像がずれることはありません。- ブラウザページをキャプチャする前に、JS を
node --checkで構文チェックします。構文エラーがある場合、ページはロードされず、キャプチャは60秒後に停止します。 - Manim:リポジトリルートに
.venv-manim/bin/pythonがある場合はそれを使用(MANIM_PY)。LaTeXがない場合は MathTex ではなく Text を使用。 - ffmpeg でのテキスト描画(drawtext)は使用しません。テキストはエンジン内部で描画されます。
- トルコ語文字(Ç Ğ Ş İ Ö Ü)は完全にサポート。大文字変換には
toLocaleUpperCase('tr')を使用。 - 最初のフレームは塗りつぶされていること:黒からのフェードインは行いません。最後の約15フレームは静かに(トランジションがそこに重なる)。
- 突然のフラッシュ/グレアなし:フレーム間の明るさの急激な変化は小さく抑える。
- 縦長動画(Reels/Shorts)の場合、上部約250px、下部約420px、右側約150pxに意味のある要素を配置しない。
セットアップ
./kurulum.sh がエンジンのパッケージをインストールします(Node 20+、Python 3、ffmpeg、Google Chrome が必要。Manim はオプション:pip install manim)。