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 about a month ago·Updated a day ago· 1,031
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