Meridian 2 · 素材窗口与几何(T8)
One Image or One Video. Wiring Both Gets You Nowhere.
- runtime
- image
- video
- material
- source_preview
- report_json
What it is, and when you reach for it
This is node 2 of the Meridian four-node chain: it turns a still or a clip into the "material" object the camera editor and the generator both read. If node 1 was the file cabinet, this is the part that actually looks at your source - estimating geometry, picking the frame window, and deciding what canvas the rest of the chain will work in.
It's also where you stop and check your work, because everything downstream is expensive. The node does the geometry pass once and hands you a preview; if the crop or the window is wrong, you find out here, not after three model forwards.
How it works
Feed it one IMAGE or one VIDEO. For an image, it reconstructs a single camera view - it does not duplicate your still into 73 frames and rebuild geometry 73 times, which is the naive version of this and the reason the node's tooltip points it out. For video, it keeps Core's active trim/crop and aspect ratio, then reads the selected window by real presentation timestamps rather than assuming a perfectly even frame rate.
Geometry comes from the authorized VGGT-Omega stack configured in node 1, run once over the window. The frame is letterboxed, then the nearest trained aspect bucket is chosen and a centred ROI crop is taken. That's aspect-preserving - nothing is stretched - but it also means the extreme edges of your source can be cropped away. If your subject is hugging the frame edge, expect to lose it. The crop is a ratio-faithful centre cut, not the whole original canvas.
The inputs that matter
imageorvideo. Exactly one. Both is a wiring mistake, and this is the node's most common beginner error because both sockets are optional and ComfyUI will happily let you connect them.start_frameandwindow_frames. Defaults are 0 and 73. The window is normalized to 24 fps, sowindow_framesmeans frames as the model counts them, not frames of your 30 fps phone clip. Output lengths must still satisfy H3's 17n+5 grid.runtimecomes from node 1 - the only input that has no default and no alternative.
Outputs: material (T8_MERIDIAN_MATERIAL) into the camera editor, source_preview (IMAGE) so you can eyeball the actual window and crop with a normal Preview node, and report_json with the identity, kind, start/end, canvas, crop box and geometry receipt. Preview the source_preview output with a plain Preview Image node - that's the actual window after the crop, so it's the fastest way to catch a bad window before you pay for anything.
Installing
If the pack isn't in yet:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
Restart ComfyUI fully and refresh the page, or install via Manager by searching MiniMax H3 Audio T8. This node is useless on its own - it needs the Meridian checkpoint, the H3 video VAE, the pinned Meridian source/assets and the Omega geometry weights that node 1 validates. The paired length assets matter too: a 73-frame run needs the matching 73-frame embed and silence assets in models/meridian/source/assets/, and yes, a different length needs that length's files. Don't slice one to fake another.
Where people get burned
Big windows OOM, and the node will not save you. There's no automatic downscale and no silent re-run at a smaller size - the description says so outright. If you ask for a long window on a card that can't hold the geometry pass, you get a real out-of-memory error.
Changing material invalidates camera plans. Edit the source or the window and the saved camera path no longer applies; reset it deliberately rather than discovering the mismatch later.
This node is not the camera. Output frames are set later. Getting the window right here, then building the move, is the order the workflow wants - and it's the order that keeps you from re-running the expensive half of the chain.
It's an EXP node. The author is explicit that specific tested samples passing doesn't mean arbitrary footage, arbitrary hardware or any window length will behave the same. Treat "it worked on the sample clip" as a starting point, not a specification.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| runtime | T8_MERIDIAN_RUNTIME | — | |
| start_frame | INT | 0 | — |
| window_frames | INT | 73 | 源窗口,按24fps归一;IMAGE只重建一次,不复制成73张再重建 |
| imageopt | IMAGE | — | |
| videoopt | VIDEO | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| material | T8_MERIDIAN_MATERIAL | — |
| source_preview | IMAGE | — |
| report_json | STRING | — |