概要
ビートの画像生成において、1 クリックで N 枚(デフォルト 4 枚)を並列生成し、ユーザーが既存の履歴 UI から好きな 1 枚を選べるようにする。
背景
- アニメ・イラスト用途では「1 クリック = 1 画像」だと当たり外れの試行回数が増える
- 一方で「常に 1 枚で十分」というユーザーもいるため、opt-in にする必要がある
- CLI 側はパイプライン実行が前提なので、この体験は app 側で実装するのが妥当
- 現状の履歴機能(
{beatId}-{timestamp}.{ext} でバックアップ保存、MediaBackupDialog から復元)が既に存在するため、そこに乗せるのが自然
設計方針
並列生成 → 履歴に積む方式
- ユーザーが「N 枚生成」を実行
mulmoGenerateBeatImage を内部で並列に N 回呼び出し
- 各呼び出しで
withBackup: true の既存挙動により自動的にバックアップとして履歴に積まれる
- 最後に完了したものが
{beatId}.{ext}(current)になる
- ユーザーは既存の
MediaBackupDialog を開いて好きな 1 枚を選ぶ → mulmoImageRestoreBackup で current に切替
メリット
- 履歴管理ロジック・UI を新規追加せずに済む
- movie 生成側は今まで通り current ファイルを参照するだけ → CLI/パイプラインは無改修
検討すべき論点
1. タイムスタンプ衝突
現在のファイル名形式 {beatId}-{YYYYMMDDhhmmss}.{ext} だと、並列生成で同一秒内に複数完了した場合に上書きが起きる。
- 案 A: ms 精度に拡張(
YYYYMMDDhhmmssSSS)
- 案 B: 連番サフィックス追加(
{beatId}-{timestamp}-{n}.{ext})
- 既存履歴ファイル(旧形式)との互換は要確認
2. 「今回生成したバッチ」の見分け
履歴が多数ある状態で N 枚追加すると、MediaBackupDialog の中で「さっき生成したぶん」がパッと選びにくい。
- 案: 生成完了直後に該当ダイアログを自動オープン、新規バッチをハイライト
- バッチ ID(生成セッション ID)を持たせるかどうか
3. ON/OFF 切り替え方法
- 案 A: プロジェクト単位の設定
imageGenerationCount: 1 | 4
- 案 B: ビートごとに「複数生成」ボタンを別途用意(既存ボタンと並列)
- 案 C: グローバル設定(全プロジェクト共通)
4. API コストとシード
- 1 クリック N 倍のコスト → 設定 UI でコスト警告を出すか
- 並列実行時、同じプロンプト・同じシードだと同じ画像が返る生成器がある可能性 → リクエストごとにシードをばらすか、mulmocast 側の seed 扱いを確認する必要がある
やること(未確定、議論次第)
関連
- 履歴機能:
src/main/mulmo/handler_contents.ts:319-407(mulmoMediaBackupList, mulmoMediaRestoreBackup)
- 画像生成:
src/main/mulmo/handler_generator.ts:170-259(mulmoGenerateBeatImage)
- 履歴 UI:
src/renderer/pages/project/script_editor/beat_editors/media_backup_dialog.vue
概要
ビートの画像生成において、1 クリックで N 枚(デフォルト 4 枚)を並列生成し、ユーザーが既存の履歴 UI から好きな 1 枚を選べるようにする。
背景
{beatId}-{timestamp}.{ext}でバックアップ保存、MediaBackupDialogから復元)が既に存在するため、そこに乗せるのが自然設計方針
並列生成 → 履歴に積む方式
mulmoGenerateBeatImageを内部で並列に N 回呼び出しwithBackup: trueの既存挙動により自動的にバックアップとして履歴に積まれる{beatId}.{ext}(current)になるMediaBackupDialogを開いて好きな 1 枚を選ぶ →mulmoImageRestoreBackupで current に切替メリット
検討すべき論点
1. タイムスタンプ衝突
現在のファイル名形式
{beatId}-{YYYYMMDDhhmmss}.{ext}だと、並列生成で同一秒内に複数完了した場合に上書きが起きる。YYYYMMDDhhmmssSSS){beatId}-{timestamp}-{n}.{ext})2. 「今回生成したバッチ」の見分け
履歴が多数ある状態で N 枚追加すると、
MediaBackupDialogの中で「さっき生成したぶん」がパッと選びにくい。3. ON/OFF 切り替え方法
imageGenerationCount: 1 | 44. API コストとシード
やること(未確定、議論次第)
MediaBackupDialogの自動オープン・新規バッチハイライト UX関連
src/main/mulmo/handler_contents.ts:319-407(mulmoMediaBackupList,mulmoMediaRestoreBackup)src/main/mulmo/handler_generator.ts:170-259(mulmoGenerateBeatImage)src/renderer/pages/project/script_editor/beat_editors/media_backup_dialog.vue