Nodes/MiniMax H3 Audio T8/MiniMax H3 Skin Finish / H3肤质收尾 (Advanced)
ComfyUI Node

MiniMax H3 Skin Finish / H3肤质收尾 (Advanced)

A non-generative skin finish that never touches a pixel you didn't sign off

By T8mars·Created 20 days ago·Updated a day ago· 807
MiniMax H3 Skin Finish / H3肤质收尾 (Advanced)
  • frames
  • skin_mask
  • face_plan
  • audio
  • candidate
  • source
  • selected
  • audio
  • used_skin_mask
  • rejected_mask
  • difference
  • skin_finish_state
  • report_json
mask_sourceexternal_exact
presetsubtle
amount0.35
texture_keep0.90
shine_control0.35
tone_adjust0.00
execution_modecandidate_only
accept_candidatefalse
protect_featurestrue
minimum_mask_area0.002
maximum_mask_area0.45
mask_feather_px3
temporal_mask_radius0
proxy_long_side640
chunk_frames4

H3 close-ups come out of the sampler with skin that's sometimes waxy, sometimes blotchy, sometimes just off. Most people reach for a beauty filter or an upscaler and end up melting the texture along with the flaw. This node is the opposite approach: a non-generative skin finish. It builds a low-frequency skin-tone/oil-shine candidate inside a reliable mask, keeps everything outside that mask pixel-identical, and by default outputs the source - you have to explicitly accept the candidate before the "selected" output changes. It's the pack's P0 (preview/provenance) route, and it reads like it was written by someone who has watched too many filters ruin good footage.

How it works

The mechanics split into mask + process. mask_source is external_exact (default - you bring a skin_mask) or face_refine_plan (builds a conservative inner-face proxy mask from a face-refine plan; the description is careful that this is not a semantic face parser). Either way, the mask goes through gates: minimum_mask_area (0.002) and maximum_mask_area (0.45) reject masks that are too tiny or suspiciously huge, mask_feather_px (3) softens the edge, and temporal_mask_radius (0) can smooth the mask across frames.

Then the candidate is computed in CPU-bounded chunks (chunk_frames 4) on a proxy (proxy_long_side 640), which keeps VRAM flat. The tone is controlled by preset (subtle default), amount (0.35), texture_keep (0.9 - how much skin grain survives), shine_control (0.35), and tone_adjust (±). protect_features (true) keeps features safe inside the mask treatment.

The output selection is where its personality shows: candidate, source, and selected all come out. With accept_candidate false (default), selected = source. Flip it true and selected = candidate. Nothing is ever automatic. You also get used_skin_mask, rejected_mask (when a mask failed gates), difference, audio passthrough, a skin_finish_state handle for the resumable P1 route, and report_json.

Installing

Part of T8mars MiniMax H3 Audio T8:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8

or ComfyUI Manager → "MiniMax H3 Audio T8", restart. No pip deps for this node itself. The fancier semantic-mask siblings (separate nodes) need FaceXLib + a pinned ParseNet weight, but this core node just needs frames, a mask, and optionally an audio to pass through.

The take

This is the node to reach for when H3 skin texture is the complaint but you don't want to lose the face. Its honest limits are stated in the description: it doesn't fix facial features, blur, identity, or lip-sync - it evens out low-frequency skin tone and shine inside a bounded mask. Where people get burned: trusting a shaky mask (use the area gates and watch rejected_mask), or flipping accept_candidate and then re-running with different inputs. Set execution_mode to review_only first, look at candidate vs source side by side, and only then accept. It's a finishing tool, not a miracle worker, and it's refreshingly explicit about that.

CategoryT8/MiniMax H3/Post FX/Experimental

Inputs (19)

NameTypeDefaultDescription
framesIMAGE
mask_sourceCOMBOexternal_exact2 options: external_exact, face_refine_plan
presetCOMBOsubtle5 options: subtle, oil_control, tone_even, soft_portrait, custom
amountFLOAT0.350–1
texture_keepFLOAT0.900–1
shine_controlFLOAT0.350–1
tone_adjustFLOAT0.00-1–1
execution_modeCOMBOcandidate_only3 options: candidate_only, review_only, bypass
accept_candidateBOOLEANfalseFalse preserves the source on selected output. Acceptance is always explicit and never automatic.
protect_featuresBOOLEANtrue
minimum_mask_areaFLOAT0.0020–0.5
maximum_mask_areaFLOAT0.450.01–1
mask_feather_pxINT30–64
temporal_mask_radiusINT00–8
proxy_long_sideINT640128–1280
chunk_framesINT41–32
skin_maskoptMASK
face_planoptH3_T8_FACE_REFINE_PLAN
audiooptAUDIO

Outputs (9)

NameTypeDescription
candidateIMAGE
sourceIMAGE
selectedIMAGE
audioAUDIO
used_skin_maskMASK
rejected_maskMASK
differenceIMAGE
skin_finish_stateH3_T8_SKIN_FINISH_STATE
report_jsonSTRING