Skip to content

Nodes ยท Masks

Crucible

Masksv1core

Overview

The matting engine, as a node. Click the subject; correct what is wrong. The correction vocabulary โ€” Fix, Guide, Refine, Exclude โ€” decides which control to reach for, and the tool says why when a correction has no effect.

How to

  1. View the node and click the subject.
  2. Wrong object โ†’ Fix. Wrong shape โ†’ Guide. Wrong softness โ†’ Refine. Should not have looked there โ†’ Exclude.
  3. Chain a CrucibleRefine when the edge wants separate treatment.

Inputs

InputWhat it takes
inthe image this node works on
shapeโ€”
masklimits the effect to this matte โ€” the engine's universal mask slot, applied for every node that declares it

Outputs

OutputType
outImage

Parameters

ParameterTypeDefaultWhat it does
viewChoiceimageimage passes RGB through with the matte in alpha (what you comp with); alpha shows the matte itself on black (what you judge it by). imagealphaband
band_opacityFloat0.65How strongly the band view paints the trimap over the plate โ€” amber for the solve band, green for the definite inside.
band_erodeFloat0.0Widen the solve band INTO the subject by this many pixels, on top of the adaptive width. Use it when the solved edge cuts into hair.
band_dilateFloat0.0Widen the solve band into the BACKGROUND by this many pixels, on top of the adaptive width. Use it when background bleeds through the edge.
roleChoicecompositeWhat the matte is FOR โ€” and it is not cosmetic, it changes which stages run. composite: true float alpha, edge matting and background decontamination, for a matte going into a comp. occlusion: skips both, runs coarse and deliberately fat, for holding a mover out of a camera solve โ€” a conservative region beats a beautiful edge there. holdout / garbage: coarse and generous, for excluding an area. compositeocclusionholdoutgarbage
detailChoicewholeWhich nested subject you meant. One click is ambiguous โ€” the person, the jacket, or the collar โ€” so identification produces all three and this picks. If it grabbed too much, try 'part'; too little, 'whole'. Cheaper than adding a correction. wholepartsubpart
matteChoiceautoWhich matter solves the band: auto measures the background's chroma variance per frame and picks โ€” a uniform screen gets the keyer, a busy background the closed-form matter โ€” and the status line says which ran and on what number. Force one to compare. autokeyerclassical
edgesChoicesolidWhat the EDGE may be. solid is a silhouette: interior partials and speckle become 1, and anything softer than a one-pixel ring drops to 0 โ€” right for a body, and it deletes hair. soft keeps the band matter's own fractional alpha. Measured on a hair plate, solid leaves 0.8% of pixels fractional with nothing between 0.75 and 1; soft leaves 3.0% spread across the range. Switch to soft for hair, smoke and any genuinely semi-transparent edge. solidsoft
floatersFloat1.0Drop solid islands smaller than this percentage of the subject โ€” the specks a keyer leaves in the background. 0 keeps everything. It is a share of the subject, not a pixel count, so it means the same at any resolution, and a piece the previous frame also had is never dropped however small: temporal support is evidence. Raise it if specks survive; lower it if a genuinely detached piece (a hand behind a prop, a foot under a railing) disappears.
consistencyFloat0.6How hard the matte holds still where nothing is moving. High stops hair crawling frame to frame; the blend is region-adaptive, so a genuinely moving edge still tracks rather than smearing. 0 is a full bypass โ€” the right answer when the hair really is moving that fast.
garbage_shapesShapesโ€”EXCLUDE regions โ€” "never look here". Draw over the thing in the corner of the plate that keeps getting picked up, once, instead of re-explaining it every frame. It CONSTRAINS identification rather than being cut out of the result, so you can draw the boundary straight through your subject: the edge still solves properly up to the line and simply finds nothing past it, with no aliased slice through hair. Screen-space and held still by default (a garbage matte is usually lens-fixed); per-shape lifetime bounds it to the frames it's needed. Not the same as role=garbage, which applies to a whole matte.
retain_shapesShapesโ€”INCLUDE regions โ€” "always consider here". Ring a part of the subject that keeps getting dropped and it is kept, whatever identification decided. Where an Include and an Exclude overlap, Include wins, so a broad Exclude over a busy corner with the one real thing ringed inside it works. An Include says WHERE, not what the subject looks like โ€” it won't drag identification toward its colour and take everything else that shade.
guide_shapesShapesโ€”Edge guides: open splines saying "the half-alpha line passes through here". Drawn where the solved edge is in the wrong PLACE. They move the band's centre, never its width, and never write alpha.
guide_strengthFloat1.0How hard the guides pull the band's centre โ€” 1 means it. 0.5 gives "I drew it and it almost worked", which is worse than either end.
guide_falloffFloat48.0How far a guide's pull reaches, in pixels โ€” what makes a local guide local: 48 px fixes the jaw and leaves the ear alone.
promptsTextThe corrections you have made, in order โ€” the ledger. The matte is a pure function of this list, so the same clicks always give the same matte, and removing one bad click from ten minutes ago keeps the nine good ones after it.
paint_strokesTextAlphaPaint strokes, the escape hatch: applied to the final alpha at Analyze. An edit on the ledger โ€” replayable and undoable โ€” not a bypass.
refine_strokesTextRefine-brush strokes: definite-foreground / definite-background statements consumed when the band is built. An input the solve honours, never an authority over alpha.
tracksTextThe baked matte, packed run-length. Written by ๐Ÿœ› Analyze; read by the node every frame. Not meant to be edited by hand.
frame_startFloat0.0The project frame the bake starts at โ€” set by ๐Ÿœ› Analyze.
statusTextWhat the last Analyze did: the stages that ran, the matter picked per frame and why, and anything it refused.
bake_dirTextWhere ๐Ÿœ› Analyze writes the matte sequence. Empty writes beside the project.
bake_prefixTextcrucibleThe file name prefix of the baked sequence.
bake_formatChoiceexr16exr16 is the deliverable; exr32 when a downstream tool needs full float; png8-proxy is 8-bit and WILL band on hair โ€” it says so in its name. exr16exr32png8-proxy
bake_firstFloat-1.0The first frame to bake, โˆ’1 for the project range's start.
bake_lastFloat-1.0The last frame to bake, โˆ’1 for the project range's end.
bindingTextProvenance: which models made this matte, written by Analyze and copied into the bake's sidecar, so a sequence on disk can still answer "what made this and may I ship it" later. Not edited by hand.
tracks_hiddenText[]Track ids the object list has hidden. They stay in the bake; they just do not render.
disabledBoolfalseBypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back.
labelTextA note shown under the node in the graph โ€” what this node is FOR. Never affects the render or the cache.
hide_inputBoolfalseDraw the node without its input wire โ€” a tidy graph for a node whose source is obvious (a Dot, a viewer tap).

Known edges

Two stages are still reference-* placeholders, so Crucible is not shippable yet โ€” see crucible.

See also

  • Crucible โ€” How to pull a matte on a shot that never saw a screen.