Nodes/H3 Character Sheet Designer/H3 Character Sheet Designer Reference 13 Views
ComfyUI Node

H3 Character Sheet Designer Reference 13 Views

One photo in, thirteen views out — the character sheet node that never touches a model

By ukr8b3g-cmyk·Created 25 days ago·Updated about 22 hours ago· 7
H3 Character Sheet Designer Reference 13 Views
  • character_image
  • reference_image_1
  • reference_image_2
  • reference_image_3
  • prompt
  • width
  • height
  • layout_image
  • character_image
  • reference_image_1
  • reference_image_2
  • reference_image_3
◄state_json{"schema_version":3,"views":["face_front","face_left","body_front","body_left","body_back"],"size":{"mode":"auto","body_height":1120,"manual_width":2208,"manual_height":1280},"part_prompts":{},"hand_state":"reference","clothing_mode":"worn","clothing_type":"reference","footwear_state":"reference"}►
◄use_layout_imagefalse►
◄stylenone►

You have one good picture of a character - a decent front-facing portrait, maybe a full-body shot - and you need the other twelve angles for a sprite sheet, a comic bible, or a LoRA dataset. The historical answers are all annoying: train a turnaround LoRA, or stack an edit model with a camera LoRA and stitch panels by hand. This node takes a third route. MiniMax H3 already does reference-image conditioning, so generating isn't the hard part - telling the model exactly which thirteen panels you want, at what sizes, is. That's the whole job here.

What it actually is

A deterministic prompt compiler wearing a GUI. It loads no model, calls no API, downloads nothing - it compiles a state blob into a text prompt, a width, a height, and an optional layout guide, then passes your photos through untouched.

The context: H3 is MiniMax's 33B omni-modal video model, open weights since August 2026 with day-zero ComfyUI support. So a "character sheet" here is technically a five-frame video whose first decoded frame gets saved.

This is the current node in the pack (v1.2.0) - the one to use if you're starting fresh.

The mechanism

Everything the UI does collapses into one state_json string: selected views, size mode, body-part prompt text, and four reference-relative settings (hand_state, clothing_mode, clothing_type, footwear_state). You never type that JSON; the widget writes it as you click. Thirteen views exist - six head views, three full-body, front and rear clothing details, paired hands, paired feet or footwear - each with fixed prose and a camera convention. The anatomical left profile, for instance, states that the nose points to the right edge, because that's the H3 left-view convention and people kept getting mirror-flipped sheets.

Layout is packed on a 32-pixel grid from a requested body height. The default 1120 gives the standard five-view sheet at 2816×1280.

use_layout_image is the fork in the road. Off (default, and where the author says to start): composition is described in words only and the layout_image output is None. On: the node renders a black-framed mannequin guide at your canvas size and sends it as a second reference. Closer panel matching, but the mannequin's proportions can bleed into your character.

Inputs worth setting

  • character_image - required, one RGB image. A batch gets rejected outright.
  • state_json - the GUI owns this. Hand-edit only for headless scripting.
  • reference_image_1/2/3 - optional extra photos of the same character: a back view, an old drawing, an outfit detail.
  • use_layout_image - leave false until text instructions visibly aren't enough.
  • style - ten choices from none to anime, watercolor, 3d. It appends one rendering sentence; it isn't a model switch.

Outputs and how you wire them

Eight single-value outputs. prompt, width, height go into the matching inputs on Core's MiniMaxH3ReferenceToVideo - right-click → Convert widget to input there first, since they're widgets by default.

Then the images: character_image → ref_images.ref_image_0, layout_image → ref_image_1, reference_image_1/2/3 → ref_image_2/3/4. Picture numbering skips absent images, which is what trips people: with the layout off, your character is <Picture 1> and the extras are 2, 3, 4. Keep the guide wire connected even when it's off - the output is None and H3 skips it.

Install

Via ComfyUI Manager, search "H3 Character Sheet Designer". Or:

cd ComfyUI/custom_nodes
git clone https://github.com/ukr8b3g-cmyk/H3-Character-Sheet-Designer.git

Restart ComfyUI, then reload the browser page - the illustrated widget is frontend JS and caches hard. No pip install; the project ships zero runtime dependencies.

The bundled four-image template is saved against Core 0.38.0 / frontend 1.53.10 and needs native MiniMaxH3ReferenceToVideo, SaveImageAdvanced and subgraphs. It also carries an empty rgthree Power Lora Loader, so rgthree-comfy must be installed for it to open cleanly - no LoRA is needed, it's leftover furniture. Models aren't bundled: an H3 diffusion model, a Qwen3-VL 32B-class text encoder, a video VAE. The saved filenames in the template are examples, not a recommendation.

Where people get burned

Feeding it an ImageBatch throws "accepts one image; connect separate LoadImage nodes." One Load Image per reference. Manual dimensions off the 32-pixel grid are rejected, not rounded, and anything past the runtime resolution limit fails at validation - plus a soft warning above about a million pixels.

The honest one: the author's own fixed-seed comparisons kept head and full-body panels stable, but clothing details sometimes came back as extra full-body views or dropped the neckline, and the all-thirteen layout could drop or rearrange panels. Text instructions aren't a geometry constraint. If a panel is wrong, re-roll or tighten the body-part prompt rather than assuming you misconfigured something.

On an old frontend where the custom DOM widget can't render, you'll see a JSON textarea instead of the illustrated chooser. That means update ComfyUI, not that the install failed.

Last thing, and it's not the node's fault: H3's community licence excludes the EU, UK, Korea and the US from its territory. Check that before building a pipeline on it.

CategoryH3/Character Sheet

Inputs (7)

NameTypeDefaultDescription
state_jsonSTRING{"schema_version":3,"views":["face_front","face_left","body_front","body_left","body_back"],"size":{"mode":"auto","body_height":1120,"manual_width":2208,"manual_height":1280},"part_prompts":{},"hand_state":"reference","clothing_mode":"worn","clothing_type":"reference","footwear_state":"reference"}—
character_imageIMAGE—
reference_image_1optIMAGE—
reference_image_2optIMAGE—
reference_image_3optIMAGE—
use_layout_imageoptBOOLEANfalse—
styleoptCOMBOnone10 options: none, anime, photo, realistic_painting, semi_realistic_anime, oil_painting, +4

Outputs (8)

NameTypeDescription
promptSTRING—
widthINT—
heightINT—
layout_imageIMAGE—
character_imageIMAGE—
reference_image_1IMAGE—
reference_image_2IMAGE—
reference_image_3IMAGE—