ペーパー説明動画(ダッシュボードスタイル)
ユーザーが論文、セクション(システムモデル、定理、結果図)、または教育用概念についての説明動画、アニメーション、または「FASのような動画」を依頼した場合に使用します。
出力の外観
16:9のフレーム(1920×1080、30fps、白背景、カラフル):
- 上部:小さなグレーのクレジット行、太字のタイトル、設定の1行パープルの概要。
- 左側(幅の約40%):アニメーションする物理シーン(波、アンテナ、ノード、ユーザー、回路)。毎フレーム動き、決定や結果を示すマーカーが付きます。
- 右側:2×2のライブパネルグリッド。静的な曲線は一度描画され、点線の垂直線とドットがそれに沿って移動します。1つのパネルは毎フレーム完全に再描画される場合があります(例:ある実現の棒グラフ)。
- 下部:黄色の丸いキャプションボックス。スイープパラメータがしきい値を超えると4~6回変化し、最終ホールド中に主要な数値を含むサマリーを表示します。
- シーン内の挿入図(例:複素平面の矢印)で主要な量を示す場合があります。
手順
- 論文のセクションを読みます。ストーリーを伝えるために1つのスイープパラメータ(地平線、SNR、速度、傾き、ブロック数など)を選択します。動画が示すべき一文のメッセージを書きます。
- 論文自身の方程式とパラメータ値を使用して、NumPy/SciPyでモデルを再実装します。描画前に主要な数値(閉形式 vs 数値積分、テーブル値、極限)を検証します。矛盾があればユーザーに伝えます。
- 高コスト部分を事前計算:細かいグリッド(約21点、約2万回ドロー)でMonte Carlo曲線を計算し、キャッシュします。
- 実現パネルでは、パラメータに滑らかに変化する1つの固定ランダムドローを使用(例:パスが固定された有限平面波和、ノイズは一度だけドロー)。シードをスキャンし、ストーリーを明確に伝えるものを選び、ナレーションノートに記載します。
- タイムライン:イントロホールド(約2秒)、イーズドスイープ(0.5 - 0.5 cos(pi x))、最終ホールド(約3秒)。デフォルト17秒。ナレーション用の場合は約60秒(例:8 / 42 / 10秒)。
- スクリプトをargparseで作成:
--out、--preview(3枚のPNGフレームを書き出し)、--dpi。パラメータは先頭に記述(CREDIT、モデル値、SEED、タイミング)。matplotlib FFMpegWriter(libx264、yuv420p、ビットレート6000)を使用し、grab_frameループでレンダリングします。 - 必ず最初にプレビューをレンダリングし確認します。重なりを修正してからフル動画をレンダリングします。その後、ffmpegで4フレームを抽出しチェックします。
- .mp4、.py、およびナレーション用.md(時間 | キャプション | 簡単な英語で言うべき内容 | パネルガイド | 設定 | 簡単な編集)を納品します。バージョン番号はv1、v2、...とします。
レイアウトの教訓(これらのバグを避ける)
- シーン軸には
set_aspect('equal', adjustable='datalim')を使用し、xlimをコンテンツに合わせて中央に配置しないと、シーンが縮んでクリップされます。 - 長いシーンラベルは動かない場所に配置し、挿入軸がラベルを覆わないようにします。
- 凡例:空の領域に配置(アウテージタイプの曲線では多くの場合
lower right)。棒パネルではncol=2を使用し、マーカーのためにylimに余裕を残します。 - gridspecの上部を約0.86に保ち、サブタイトルがパネルタイトルに重ならないようにし、下部を約0.155に保ち、2行のキャプションがxラベルに重ならないようにします。
- 数式テキストは軸内の空き領域に配置し、曲線の上に重ねないようにします。
- 完全再描画(cla)はシーンと1つの実現パネルのみに行い、その他はset_dataを使用します。1080pで510フレームの場合、約4分は通常です。
スタイル定数
青 #1c7ed6、オレンジ #e8590c、緑 #2f9e44、赤 #e03131、ティール #0c8599、パープル #7048e8、グレー #868e96、インク #212529、ゴールド #f59f00。太字タイトル11.5pt、基本フォント10pt、上部/右軸のスパインはオフ。
言語
キャプションとナレーションは簡単な英語(B2以下)で、短文と番号付きキャプションステップ("1 ·"、"2 ·"、...)を使用します。