Premium一点モノShortsにシネマ演出レイヤーを追加

この記事はCodex製です。

##依頼内容と課題

  • 既存の一点モノShorts企画について、映像の面白さをさらに上げる。
  • 量産性よりも、1本あたりの見た目のインパクトを優先する。

課題は、各シナリオのロジックを壊さずに、短時間で体感できる「勢い」を映像全体へ一貫して足すこと。

##アプローチ

  • 描画パイプラインを1段追加し、sceneCanvas -> outCanvas の二段構成へ変更。
  • 新しく CinematicFxState を導入し、進行率・パラメータ強度・シナリオ別モーションバイアスから演出量を算出。
  • 以下のポストエフェクトを時間同期で適用:
    • カメラシェイク(X/Y)
    • ズーム/ロール
    • ゴースト残像
    • フラッシュ
    • スピードライン
    • フィルムグレイン
    • ビネット
  • 一部シナリオ(gravity-flip-deathmatch / singularity-snapback / hyper-tsunami-chase / chrono-rewind-crash)はイベント発火点で演出ピークを追加。
  • 既存HUDは合成後フレームに重ね、視認性を維持。
  • (推論)Shorts文脈では視聴継続に対して、意味のある運動量とピークの密度が効くため、終盤に向けて演出強度を上げる設計にした。

##アウトプット

  • 更新: scripts/shorts-premium-oneoff-batch.ts
    • CinematicFxState / computeCinematicFxState 追加
    • drawSpeedLines / drawGrain / drawVignette / composeCinematicFrame 追加
    • renderVideo を二段キャンバス合成に変更
    • 型不整合(@napi-rs/canvas)を解消
  • 更新: docs/shorts-premium-oneoff-batch.md
    • シネマ演出レイヤー適用の説明を追記

検証:

  • bun run typecheck
  • bun run shorts:premium:oneoff:batch -- --piece gravity-flip-deathmatch --width 360 --height 640 --fps 24 --duration-scale 0.15 --concurrency 1 --output /tmp/shorts-premium-oneoff-check-v4 --seed 20260223
  • ffprobeh264(video) + aac(audio, 48kHz, 2ch) を確認

##参照した一次情報

##参照した一次情報・一次ソース