Nodes/ComfyUI_CineStyle/CS VFX Beauty
ComfyUI Node

CS VFX Beauty

A skin-beauty pass that estimates skin tone for you, no mask required

By chflame163·Created 26 days ago·Updated 3 days ago· 72
CS VFX Beauty
  • image
  • mask
  • IMAGE
  • MASK
colourauto
weights6.0, 0.0, 3.0
blur_m10.00
sigma10.00
threshold15.00
r_spots_blend0.800
r_h_blend0.500
strength0.00
blur_h0.00
blur_s30.00
o_amount0.200
sat_amount100.0
hue_amount0.00
wait_for_input_cachefalse

Most "beauty" nodes in this ecosystem are either a single blur filter with a slider or a fiddly chain of keying nodes that assume you've already got a perfect skin mask. CS VFX Beauty is the CineStyle pack's video-grade skin-cleanup node, and it's a torch port of the 19-pass Matchbox CROK Beauty shader - the kind of multi-pass pipeline Nuke artists know. Feed it your video frames, and it builds a skin matte, smooths blemishes while protecting edges, softens shine, and lets you nudge saturation and hue at the end. No mask? No problem: when colour is auto, it loads a BiSeNet face-parsing model, estimates the clip's skin tone for you, and keys on that.

How it works

The pipeline keys on skin color in HSV using the weights vector (default 6.0, 0.0, 3.0) to build a soft matte. Then a sequence of passes runs in order: matte softening (blur_m), edge-preserving blur (sigma, threshold), dark-spot repair (r_spots_blend), highlight repair (r_h_blend), optional detail restoration (strength, blur_h), shine reduction (blur_s, o_amount), and final skin-tone saturation/hue grading. If you connect a MASK, it's used as the beauty region and the color-estimation area directly - no external matte switch to flip, the node just uses it. Outputs are an RGB image and the final skin matte, so you can reuse that mask elsewhere.

The inputs that matter

  • image - your frames as IMAGE, single image or batch.
  • mask - optional MASK. Connect it if you have a good skin region; otherwise BiSeNet does a rough internal estimate (preview only, not an output).
  • proxy_video - optional VIDEO, used only by the VFX Preview UI for fast scrubbing. Rendering always uses image.
  • colour - auto (default) estimates the target skin tone from the clip; type a #RRGGBB to bypass estimation entirely.
  • weights - the HSV keying weights string. The VFX Preview splits it into separate Hue/Saturation/Value sliders and writes the result back.

The rest of the sliders map to CROK Beauty's passes - names like sigma / Amount, threshold / Preserve Edges, r_spots_blend / Dark Spots. Defaults are reasonable; adjust in the preview, not blind.

Outputs

  • IMAGE - the RGB result, no alpha, ready to feed downstream image or video nodes.
  • MASK - the skin matte actually used, 0–1, so you can composite or inspect it.

Installing it

Same pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/chflame163/ComfyUI_CineStyle.git

or ComfyUI Manager → ComfyUI_CineStyle, then restart. The one extra download is the BiSeNet weight, parsing_bisenet.pth, which the node fetches automatically (from FaceXLib's official release or a HuggingFace mirror) on first auto-color run, or you can drop it manually at ComfyUI/models/facexlib/parsing_bisenet.pth. If your environment blocks the auto-download, that's the file to grab by hand.

Where people get burned

  • First run downloads weights. The auto skin-tone path needs parsing_bisenet.pth; if it can't download, you'll get an error telling you exactly where to place the file. It's ~100 MB, not a model marathon.
  • The preview lies until it doesn't. For inputs generated at runtime, run the workflow once to build the preview cache before opening VFX Preview - the README says this explicitly.
  • colour=auto needs skin on screen. If the clip is a landscape with a tiny face, auto-estimation can key the wrong tone. That's exactly when you hardcode a #RRGGBB.
Category😺dzNodes/CineStyle

Inputs (16)

NameTypeDefaultDescription
imageIMAGEOriginal foreground image.
colourSTRINGautoUse auto for clip skin-colour estimation, or enter a #RRGGBB value to bypass automatic estimation.
weightsSTRING6.0, 0.0, 3.0HSV keying weights vec3.
blur_mFLOAT10.000–100
sigmaFLOAT10.000–100
thresholdFLOAT15.000–100
r_spots_blendFLOAT0.8000–1
r_h_blendFLOAT0.5000–1
strengthFLOAT0.000–10
blur_hFLOAT0.000–50
blur_sFLOAT30.000–100
o_amountFLOAT0.2000–1
sat_amountFLOAT100.00–300
hue_amountFLOAT0.00-360–360
wait_for_input_cacheBOOLEANfalseInterrupt execution when this node is reached after caching its input.
maskoptMASKOptional skin mask. When connected, it is used automatically for the beauty region and colour estimation.

Outputs (2)

NameTypeDescription
IMAGEIMAGE
MASKMASK