VELVET VICE MiniMax H3 — AUTO Resolution Planner
Let the node read your reference image's shape, then hand H3 a resolution it can actually digest
- image
- last_frame
- width
- height
- status
- aspect_label
Image-to-video has a boring but brutal rule: the resolution you hand the model has to respect the reference frame's aspect ratio, or you get a video where everything is subtly squeezed, cropped, or fighting the source image for its whole duration. MiniMax H3 adds its own wrinkle - it's fussy about dimensions that don't land on its expected grid. The Velvet VICE MiniMax H3 AUTO Resolution Planner is the node that reads your first frame, decides the shape, and computes H3-safe dimensions so you never type 1344×768 blind again.
The mechanism is straightforward arithmetic wrapped in taste. Feed it your image (the first frame), and in AUTO mode it measures the actual aspect ratio of that picture. You can override with a forced format_mode (16:9, 9:16, 1:1, or CUSTOM if your source is an oddball). Then resolution_preset decides how many megapixels you're targeting, and this is where the node earns its keep:
- TEST → 0.4 MP. For iteration. Fast, ugly, cheap.
- BALANCED → 0.7 MP. The default, and the sane middle ground.
- QUALITY → 1.0 MP. When you're committing to the final render.
- CUSTOM → whatever custom_megapixels says (0.1–4.0).
Width and height are then derived from the target area and the chosen ratio, and rounded to the H3-safe grid so you don't hand the model a dimension it'll reject or silently quantize. Two supporting knobs: rotate_format flips the ratio (handy when your reference is portrait but you want a landscape clip - or vice versa), and the optional last_frame input runs an end-frame ratio check so the loop closes without an aspect mismatch between the first and last frames.
Outputs: width (INT) and height (INT) - the two numbers you actually feed downstream; aspect_label (STRING) tells you which format was selected; and status (STRING) reports what it decided and any warnings. In the Velvet VICE H3 layout, those INTs drive the workflow's resolution/conditioning inputs so the sampling area matches the reference.
Install
It's one node in the one-pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/Velvet-Vice/velvet-vice-minimax-h3
Restart ComfyUI (or Manager → search "velvet-vice-minimax-h3"). No pip dependencies, no model files. This is pure math on an IMAGE tensor.
The traps worth knowing
The biggest one is expectation-setting: in CUSTOM mode, custom_width and custom_height are what actually get used (grid-rounded), and custom_megapixels only matters when the preset is CUSTOM - the three named presets ignore it entirely. So if you fiddle custom_megapixels and nothing changes, that's why; switch the preset to CUSTOM first.
Second: TEST at 0.4MP is not a quality setting, it's a smoke test. If you judge motion and pacing at TEST resolution and then re-render at QUALITY, results differ more than you'd like - video models care about absolute resolution, not just aspect. And finally, if your output comes back in the wrong orientation, check rotate_format before you blame the model. One checkbox, that's the whole fix.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| format_mode | COMBO | AUTO | 5 options: AUTO, 16:9, 9:16, 1:1, CUSTOM |
| resolution_preset | COMBO | BALANCED | 4 options: TEST, BALANCED, QUALITY, CUSTOM |
| rotate_format | BOOLEAN | false | — |
| custom_width | INT | 1344256–4096 | — |
| custom_height | INT | 768256–4096 | — |
| custom_megapixels | FLOAT | 0.40.1–4 | — |
| last_frameopt | IMAGE | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| width | INT | — |
| height | INT | — |
| status | STRING | — |
| aspect_label | STRING | — |