From 533167310b880338959a123643873d47c32a4362 Mon Sep 17 00:00:00 2001 From: Morpheus Date: Wed, 26 Aug 2026 13:24:49 +0000 Subject: [PATCH] Add 3-beat 10s H3 quality ref test --- .../README.md | 36 ++-- .../api-prompt-3beat-10s-480p-quality.json | 175 ++++++++++++++++++ 2 files changed, 200 insertions(+), 11 deletions(-) create mode 100644 custom/chris/minimax-h3-two-beat-savevideo-test/api-prompt-3beat-10s-480p-quality.json diff --git a/custom/chris/minimax-h3-two-beat-savevideo-test/README.md b/custom/chris/minimax-h3-two-beat-savevideo-test/README.md index 6b64a93..58e0548 100644 --- a/custom/chris/minimax-h3-two-beat-savevideo-test/README.md +++ b/custom/chris/minimax-h3-two-beat-savevideo-test/README.md @@ -1,10 +1,10 @@ -# MiniMax H3 Two-Beat SaveVideo Test +# MiniMax H3 SaveVideo Tests Practical test flow for `DumasH3LongVideos` that: - uses `LoadImage` refs derived from images stored in this repo -- renders exactly 2 beats -- stays under 10 seconds total +- renders short beat-based clips +- stays near or under 10 seconds total - converts the returned image batch with `CreateVideo` - saves the final file with `SaveVideo` @@ -22,18 +22,17 @@ Upload those repo images into the live ComfyUI input folder with these names: - `default-character-reference.jpg` - `default-location-reference.jpg` -The included `api-prompt.json` expects those names in `LoadImage`. +The included baseline prompts expect those names in `LoadImage`. + +The new reference-quality prompt uses these live input names instead: + +- `chris-character-reference.jpg` +- `chris-location-reference.jpg` ## Flow summary `LoadImage x2 -> DiffusionModelLoaderKJ / CLIPLoader / VAELoader x2 -> DumasH3LongVideos -> CreateVideo -> SaveVideo` -## Timing - -- `shot_seconds = 3` -- `2 beats` -- total target runtime = `6s` - ## Variants - `api-prompt.json` @@ -46,7 +45,22 @@ The included `api-prompt.json` expects those names in `LoadImage`. - `2` beats at `4s` each - total target runtime = `8s` +- `api-prompt-3beat-10s-480p-quality.json` + - reference-quality follow-up for today's H3 live test + - `3` beats with explicit per-beat timing: `3s`, `3s`, `4s` + - total target runtime = `10s` + - expects the provided live refs to be uploaded as: + - `chris-character-reference.jpg` + - `chris-location-reference.jpg` + - quality-oriented settings: + - `864x480` (`0.4 MP` at `16:9`) + - `20` steps + - `euler` sampler + - `beta` scheduler + - H3 turbo LoRA enabled + ## Notes - This is a practical API flow, not a promoted master workflow. -- The H3 node is configured for a cheap proof run, not final quality. +- `api-prompt.json` and `api-prompt-realistic-16x9.json` remain cheap proof-run variants. +- `api-prompt-3beat-10s-480p-quality.json` is the quality-biased reference test. diff --git a/custom/chris/minimax-h3-two-beat-savevideo-test/api-prompt-3beat-10s-480p-quality.json b/custom/chris/minimax-h3-two-beat-savevideo-test/api-prompt-3beat-10s-480p-quality.json new file mode 100644 index 0000000..8c79df1 --- /dev/null +++ b/custom/chris/minimax-h3-two-beat-savevideo-test/api-prompt-3beat-10s-480p-quality.json @@ -0,0 +1,175 @@ +{ + "1": { + "class_type": "LoadImage", + "inputs": { + "image": "chris-character-reference.jpg" + }, + "_meta": { + "title": "Character Ref" + } + }, + "2": { + "class_type": "LoadImage", + "inputs": { + "image": "chris-location-reference.jpg" + }, + "_meta": { + "title": "Location Ref" + } + }, + "10": { + "class_type": "DiffusionModelLoaderKJ", + "inputs": { + "model_name": "minimax_h3_ref2va_pruned_int8_convrot.safetensors", + "weight_dtype": "default", + "compute_dtype": "default", + "patch_cublaslinear": false, + "sage_attention": "disabled", + "enable_fp16_accumulation": false + }, + "_meta": { + "title": "Load Model" + } + }, + "11": { + "class_type": "CLIPLoader", + "inputs": { + "clip_name": "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", + "type": "minimax", + "device": "default" + }, + "_meta": { + "title": "Load CLIP" + } + }, + "12": { + "class_type": "VAELoader", + "inputs": { + "vae_name": "minimax_h3_video_vae_int8_convrot.safetensors" + }, + "_meta": { + "title": "Video VAE" + } + }, + "13": { + "class_type": "VAELoader", + "inputs": { + "vae_name": "minimax_h3_audio_vae_fp32.safetensors" + }, + "_meta": { + "title": "Audio VAE" + } + }, + "14": { + "class_type": "MiniMaxH3TurboLoRA", + "inputs": { + "model": [ + "10", + 0 + ], + "lora_name": "minimax\\minimax_h3_ref2v_lightx2v_turbo_4step_v0.1_resized_avg_rank_20_bf16.safetensors", + "strength": 1, + "low_vram": false + }, + "_meta": { + "title": "MiniMax H3 Turbo LoRA" + } + }, + "20": { + "class_type": "DumasH3LongVideos", + "inputs": { + "model": [ + "14", + 0 + ], + "clip": [ + "11", + 0 + ], + "vae": [ + "12", + 0 + ], + "audio_vae": [ + "13", + 0 + ], + "ref_image_1": [ + "1", + 0 + ], + "ref_image_2": [ + "2", + 0 + ], + "prompt": "Subject 1 is the same woman shown in . Preserve her facial structure, body proportions, sleek dark high ponytail, and confident editorial presence throughout. Use only for Subject 1 identity and outfit information. Ignore the background, lighting, pose framing, and studio environment shown in . Use as the sole environment and street-layout reference for the location.\n\nseconds: 3\nIn the rain-dark street shown in , Subject 1 stands still near the curve of the cobbled lane, turns her head slightly, and takes in the surroundings in a steady medium-full shot.\n\nseconds: 3\nSubject 1 begins walking forward through the wet street shown in with calm, deliberate confidence while the camera tracks gently backward to keep her framed cleanly.\n\nseconds: 4\nSubject 1 continues down the curved cobbled street, glancing toward the storefronts as the camera eases into a subtle side-follow and then settles into a composed closing hold.", + "anchor_override": "sleek dark high ponytail, realistic proportions, polished fashion-editorial presence", + "character_memory": "white cropped blouse with a high sculpted collar, black high-waisted trousers with a sheer corset panel and gold chain details, gold hoop earrings", + "resolution": "16:9", + "megapixels": 0.4, + "steps": 20, + "cfg": 1, + "sampler_name": "euler", + "scheduler": "beta", + "seed": 17, + "plan_only": false, + "shot_seconds": 4, + "ref_mode": "where tagged", + "per_beat_length": true, + "mute_nonspeech_audio": true, + "cleanup_between_shots": true, + "allow_res_backoff": true, + "decode_tile_frames": 8, + "decode_tile_size": 256, + "auto_soundscape": "fill if blank" + }, + "_meta": { + "title": "Dumas H3 Long Videos" + } + }, + "30": { + "class_type": "CreateVideo", + "inputs": { + "images": [ + "20", + 0 + ], + "fps": 24, + "audio": [ + "20", + 1 + ], + "bit_depth": 8 + }, + "_meta": { + "title": "CreateVideo" + } + }, + "31": { + "class_type": "SaveVideo", + "inputs": { + "video": [ + "30", + 0 + ], + "filename_prefix": "MiniMax/dumas-h3-3beat-10s-480p-quality", + "format": "auto", + "codec": "auto" + }, + "_meta": { + "title": "SaveVideo" + } + }, + "32": { + "class_type": "PreviewAny", + "inputs": { + "source": [ + "20", + 2 + ] + }, + "_meta": { + "title": "Info" + } + } +}