Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3 Skin Finish Per-Person / 逐人物逐镜头肤质收尾 (Advanced EXP)
ComfyUI Node

MiniMax H3 Skin Finish Per-Person / 逐人物逐镜头肤质收尾 (Advanced EXP)

The node that executes the cast sheet, track by track

By T8mars·Created 2 months ago·Updated about 8 hours ago· 1,158
MiniMax H3 Skin Finish Per-Person / 逐人物逐镜头肤质收尾 (Advanced EXP)
  • frames
  • track_plan
  • semantic_skin_mask
  • profiles
  • identity_assignment
  • audio
  • candidate
  • source
  • selected
  • audio
  • used_skin_mask
  • rejected_skin_mask
  • ownership_preview
  • skin_finish_state
  • report_json
◄semantic_report_json—►
◄default_policysource_unmatched►
◄default_presetsubtle►
◄default_amount0.35►
◄default_texture_keep0.90►
◄default_shine_control0.35►
◄default_tone_adjust0.00►
◄execution_modecandidate_only►
◄accept_candidatefalse►
◄chunk_frames2►
◄proxy_long_side640►
◄preview_count6►

The Per-Person node is the executor half of the pack's multi-person skin system. The Person Profile nodes write the plan; this one actually applies it - reassigning a source-bound semantic skin mask to exact SAM3.1 person tracks, then treating each tracked person with their reviewed parameters. If two people cross paths on screen, or one person is in the shot with the other, this is the node that decides who gets what, and - just as important - who gets nothing.

How it works

Inputs: frames, a track_plan (H3_T8_SAM31_MULTIFACE_TRACK_PLAN, produced upstream by a SAM3.1 tracking node), the semantic_skin_mask and its semantic_report_json (both from the same Multi-Person Semantic Mask node - the report binds source, track plan and mask together), plus an optional profiles stack (H3_T8_SKIN_FINISH_PERSON_PROFILES) and identity_assignment.

The routing precedence, straight from the node: exact shot:track profiles override character profiles, then the default policy, then bit-exact source. What that means in practice:

  • default_policy = source_unmatched (the default) - only explicitly profiled people get touched; everyone else stays bit-exact source. That's the safe lane.
  • default_policy = default_profile - the default_preset/default_amount/default_texture_keep/default_shine_control/default_tone_adjust block applies to every remaining track.

Two guarantees worth knowing: cross-person overlap (two masks overlapping in the same pixels) and unmatched people stay bit-exact source. No pixel gets treated by committee.

Outputs: candidate, source, selected (source until accept_candidate flips), audio, used_skin_mask, rejected_skin_mask, ownership_preview (the visualization of who owns which mask region), skin_finish_state, and report_json - which now includes, per resolved route, an SDR Rec.709 luma proxy, mean/max RGB treatment magnitude, and the fraction of treated pixels near clipping. Those are review aids, not beauty scores.

Why you'd reach for it

Any multi-person scene where a global pass would be wrong - or where you want different treatment per actor. The execution_mode (default candidate_only) and accept_candidate (false) keep everything in review-land until you're ready. chunk_frames (2), proxy_long_side (640), and preview_count (6) tune the CPU-side memory and preview load, since the actual treatment runs on proxies.

Installing it and gotchas

Standard pack install: ComfyUI Manager search "MiniMax H3 Audio T8", or clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git into custom_nodes, update ComfyUI core first, restart. Heavy optional dependency: SAM3.1 for the track plan, and FaceXLib (pinned ParseNet checkpoint in models/facedetection/parsing_parsenet.pth) for the semantic mask - those come from upstream, not the pack.

The classic mistakes: feeding a semantic_report_json from a different source batch (the hash binding breaks and masks go empty), and expecting per-person profiles to magically re-identify people across cuts - identity labels come from a separate, human-reviewed identity_assignment, and re-identification across shots is explicitly out of scope. Start with source_unmatched, review the ownership_preview, and only then consider default_profile.

CategoryT8/MiniMax H3/Post FX/Experimental

Inputs (18)

NameTypeDefaultDescription
framesIMAGE—
track_planH3_T8_SAM31_MULTIFACE_TRACK_PLAN—
semantic_skin_maskMASK—
semantic_report_jsonSTRINGConnect report_json from the same Multi-Person Semantic Mask node. The report binds source, track plan and mask.
default_policyCOMBOsource_unmatchedsource_unmatched changes only explicitly profiled people. default_profile applies the default controls to every remaining track.
default_presetCOMBOsubtle5 options: subtle, oil_control, tone_even, soft_portrait, custom
default_amountFLOAT0.350–1—
default_texture_keepFLOAT0.900–1—
default_shine_controlFLOAT0.350–1—
default_tone_adjustFLOAT0.00-1–1—
execution_modeCOMBOcandidate_only3 options: candidate_only, review_only, bypass
accept_candidateBOOLEANfalseFalse preserves source on selected output; acceptance is never automatic.
chunk_framesINT21–32—
proxy_long_sideINT640128–1280—
preview_countINT61–8—
profilesoptH3_T8_SKIN_FINISH_PERSON_PROFILES—
identity_assignmentoptH3_T8_MULTIFACE_IDENTITY_ASSIGNMENT—
audiooptAUDIO—

Outputs (9)

NameTypeDescription
candidateIMAGE—
sourceIMAGE—
selectedIMAGE—
audioAUDIO—
used_skin_maskMASK—
rejected_skin_maskMASK—
ownership_previewIMAGE—
skin_finish_stateH3_T8_SKIN_FINISH_STATE—
report_jsonSTRING—