H3 Motion Context を導入して、入力動画の続きの動画を生成する

モルヴェイラ
質問: 長い動画を作りたい
MiniMax H3で10秒から15秒ぐらいの動画が作れました。もっと長い動画を作りたいです。H3 Motion Context を使うと作成した動画に続けて動画が生成できるそうです。 どのように導入して使うのでしょうか?

H3 Motion Contextの導入手順を紹介します。

H3 Motion Context とは

MiniMax H3で作った動画の「続き」を作れるようにする仕組みです。
MiniMax H3は一度に数秒〜十数秒の動画しか生成できず、標準機能で続きを作ろうとしても、最後の1フレーム(静止画)しか引き継げません。 静止画には動きの情報がないため、つなぎ目でカメラや人物の動きが一度止まってしまい、不自然になります。
H3 Motion Context を利用すると、前のクリップの**末尾の約1秒間(映像と音声の両方)を次の生成に引き継ぎます。 動きの速度や方向、音楽や環境音がそのまま続くので、つなぎ目がほぼ分からない長い動画を作れます。

導入手順

次のコマンドを実行します。

cd (ComfyUIの配置ディレクトリ)\ComfyUI\custom_nodes
git clone https://github.com/NikoDemon80/ComfyUI-H3-Motion-Context.git


ComfyUIを再起動します。インストールできていれば、[H3 Motion Context] [H3 Motion Context Trim] [H3 Motion Context Save Latent] [H3 Motion Context Load Latent] のノードが表示されます。
H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像1

しくみ

H3 Motion Contextを利用して動画の続きを生成する方法は次の方式があります。

  • 参照動画のみで延長部分を生成する (ref2v)
  • 参照動画と手前のシーンの動画のLatentで延長部分を生成する (ref2v)
  • 最初のフレームと最後のフレームの画像で延長部分を生成する (fl2v)
  • 最初のフレームと最後のフレームの画像と手前のシーンの動画のLatentで延長部分を生成する (fl2v)


3つ目の最初のフレームと最後のフレームの画像のみで生成する方法は品質が低くなりがちですので、基本は3つの方式のどれかを利用します。
最初と最後のフレーム画像を用意する方法は制作フローが若干変わりますので、この記事では、「参照動画のみで延長部分を生成する」 と「参照動画と手前のシーンの動画のLatentで延長部分を生成する」の方法を紹介します。

参照動画のみで延長部分を生成する

ワークフロー (最初の動画)

最初の動画は以下のワークフローを利用しています。こちらは通常の動画生成と同じです。fl2vaモデルを利用した開始フレームを画像で指定した動画生成です。

H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像2

プロンプトは以下を指定しています。

プロンプト
For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced.

integrated_multimodal_description: [Shot 1] 2D-animated, anime style with soft painterly lighting, the young woman shown in <Picture 1> stands at the top of the sunlit stone staircase of the whitewashed seaside town, preserving her blond hair with the red ribbon, blue cardigan, white dress, and beige backpack. She turns her head forward and walks down the steps away from the camera at a relaxed pace. The camera pushes in at slow speed, physically moving forward and descending the staircase directly behind her, matching her walking pace so that her back-view figure stays at a nearly constant size and remains centered in the frame throughout the shot. The camera pedestals down gradually step by step together with her descent, keeping the same slightly high angle over her shoulder. As the camera travels forward, the blue doors, potted flowers, and white walls on both sides continuously slide past the edges of the frame and recede behind the camera, while new steps and buildings further down the street keep entering the frame from the center, confirming forward motion. The gray tabby cat trots ahead of her down the stairs. Her dress and hair sway gently with each step as sunlight flickers across her shoulders, and the distant sea remains visible at the top of the frame.

overall_soundscape: Soft footsteps tap rhythmically on the stone steps beneath a gentle coastal breeze. Fabric rustles lightly with her movement, distant seagulls call over the town, and faint waves are audible far below.

non_diegetic_music: A light acoustic guitar arpeggio at a moderate slow tempo, joined by soft strings and occasional glockenspiel notes that sustain evenly throughout.
プロンプト(日本語訳)
ターゲット動画について、動画の0.00秒時点で、<Picture 1>([Shot 1] のもの)が完全に参照されます。

integrated_multimodal_description(統合マルチモーダル記述): [Shot 1] 2Dアニメーション、柔らかな絵画的ライティングのアニメスタイル。<Picture 1> に示された少女が、白壁の海辺の町の陽光に照らされた石段の上に立っている。赤いリボンのついた金髪、青いカーディガン、白いワンピース、ベージュのバックパックはそのまま維持される。彼女は顔を前に向け、カメラに背を向けてリラックスした足取りで階段を降り始める。カメラはゆっくりとした速度で前進(Push In)し、彼女のすぐ後ろで階段を物理的に移動しながら降下していく。彼女の歩くペースに合わせて移動することで、背中越しの姿がショット全体を通してほぼ一定の大きさで画面中央に保たれる。カメラは彼女の降下に合わせて一段ずつ徐々に下降(Pedestal Down)し、肩越しのやや高めのアングルを維持する。カメラが前進するにつれ、両側の青いドア、植木鉢の花、白い壁が画面の端を連続的に流れ去ってカメラの後方へ遠ざかり、通りのさらに下方の新しい石段や建物が画面中央から次々と現れて、前進運動を裏付ける。グレーのトラ猫が彼女の前を小走りで階段を降りていく。一歩ごとにワンピースと髪が優しく揺れ、陽光が彼女の肩にちらちらと反射し、遠くの海は画面上部に見え続ける。
overall_soundscape(全体の音風景): 穏やかな海風の下、石段を踏む柔らかな足音がリズミカルに響く。彼女の動きとともに衣擦れの音が軽く鳴り、遠くで町の上空をカモメが鳴き、はるか下方からかすかな波の音が聞こえる。

non_diegetic_music(非ディエジェティック音楽=劇伴BGM): 中程度にゆったりしたテンポの軽やかなアコースティックギターのアルペジオに、柔らかなストリングスと時折鳴るグロッケンシュピールの音が加わり、全体を通して均一に持続する。

ワークフロー (続きの動画)

最初の動画に続く2つ目以降の動画のワークフローは以下になります。

H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像3

動画の読み込みノードには最初の動画を参照動画として指定します。[ビデオコンポーネント取得]のノードをつなげ、画像とオーディオを分離して出力します。
H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像4

画像とオーディオの出力は、[H3 Motion Context]ノードの[context_frames]と[context_audio]に入力します。
H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像5

[H3 Motion Context]ノードの[trim_frames]の出力は[H3 Motion Context Trim]ノードの[trim_frames]に入力します。
H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像6

続きを生成したい動画の長さを10秒にしたい場合には、生成する動画の長さを1秒長い11秒にします。[H3 Motion Context]の[context_length]に設定したフレーム数、 今回の場合は22フレーム分(1秒)が前の動画とのつなぎとなる共通部分になります。共通部分は、[H3 Motion Context Trim]ノードで削除されるため、手前の動画と隙間なくつなげて問題ありません。

さらに動画をつなげる場合は、生成した結果の動画を参照入力に設定し、生成を繰り返します。

参照動画と手前のシーンの動画のLatentで延長部分を生成する

先の方法で動画の続きを生成できますが、つなぎ目の部分で明るさが変わったり、若干つなぎ目の品質が下がる場合があります。 つなぎ目の部分でより品質の高い動画を生成する方法として、参照動画と動画のLatentを利用する方法があります。

ワークフロー(最初の動画)

最初の動画は以下のワークフローを利用しています。こちらは通常の動画生成と同じです。fl2vaモデルを利用した開始フレームを画像で指定した動画生成です。

H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像7

先のワークフローとの違いは[カスタムサンプラー]ノードの出力を [H3 Motion Context Save Latent]ノードに接続し、Latentをディスクに保存します。
H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像8

最初の動画なので、[clip_index]は"1"とします。
H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像9

この設定で動画を生成すると動画とは別に "(ComfyUIの配置ディレクトリ)\ComfyUI\output\h3_context" に "clip_00001.safetensors" ファイルが生成されます。 生成された動画と、"clip_00001.safetensors" を利用します。

なお、プロンプトは先のワークフローと同じです。

ワークフロー (続きの動画)

最初の動画に続く2つ目以降の動画のワークフローは以下になります。

H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像10

動画の参照部分は先のワークフローと同様です。手前の動画を参照動画に設定し、[ビデオコンポーネント取得]のノードをつなげ、画像とオーディオを分離して出力します。 画像とオーディオの出力は、[H3 Motion Context]ノードの[context_frames]と[context_audio]に入力します。
また、[H3 Motion Context Load Latent]ノードを配置します。[clip_index]に読み込むLatentの番号を指定します。最初の続き動画の場合は、"clip_00001.safetensors" を読み込むため、"1"を設定します。
H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像11

[H3 Motion Context Load Latent]ノードの[Latent(潜在)]の出力は、[H3 Motion Context]ノードの[context_latent]に接続します。
H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像12

このワークフローでも[カスタムサンプラー]ノードの出力を [H3 Motion Context Save Latent]ノードに接続し、Latentをディスクに保存します。 [H3 Motion Context Save Latent]ノードの[clip_index]の値は、読み込んだclip_indexの値より一つ大きくします。"clip_00001.safetensors" を読み込んで、続きの動画を生成した場合は、保存するLatentは "clip_00002.safetensors"としたいので、"2"を設定します。
H3 Motion Context を導入して、入力動画の続きの動画を生成する:画像13

実行して続きの動画を生成します。さらに動画を続ける場合は、[H3 Motion Context Load Latent]ノードの[clip_index]の値を1つ増やして"2"に設定し、 [H3 Motion Context Save Latent]ノードの[clip_index]の値を"3"にします。実行して動画を生成すると続きの動画と、"clip_00003.safetensors"が保存されます。

生成結果

生成結果の動画は以下です。Latentを使用したほうが、つなぎ目の明るさの変化が軽減されています。
延長し続けると徐々に形状が怪しくなってくるため、単純な延長だけではなく、参照イメージなどを追加する必要がありそうです。


AuthorPortraitAlt
著者
iPentecのメインデザイナー
イタリア好き。Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。 最近は生成AIの画像生成の沼に沈んでいる。
作成日: 2026-08-11