Skip to content

Nodes · Blacksmith

BS_HoloBuild

Blacksmithv1appForge

Overview

BS_HoloBuild: the holodeck — an object drawn as a hologram of lines and panels that then materialises into the real thing, or a hologram that reveals what is behind it, or a transition where A powers down, the void opens and B is built and lands. Built from a 3D scene node or from B's render passes (depth, P, N, uv, cryptomatte), drawn through the project camera, with a floor grid and a room, the subjects kept solid and lit by the hologram's spill, and the instabilities (flicker, shimmer, scan bands, chroma offset) that make it read as projected light. Nine presets. Every beat is on the clock knobs, in frames.

How to

How-to

  1. Pick a preset (Construct cyan, Blueprint, Void to location…); mode is build an object, reveal, or a transition from A to B.
  2. Name the 3D scene node in scene (or wire B's render passes) and the project camera in camera.
  3. Time the beats: start, build_len, draw_time, fill_time, materialize_len; build_order decides what is drawn first.
  4. Tune the line width and halo; the flicker, shimmer and scan bands make it read as projected light.

Inputs

InputWhat it takes
Athe foreground, composited over B
Bthe background — **B decides the format**
fg—
subject_matte—

Outputs

OutputType
outImage

Parameters

ParameterTypeDefaultWhat it does
modeChoicebuild objectWhat the node does. build object: a hologram builds into A (the object materialises). reveal: the void reveals B behind the hologram. transition: A powers down, the void opens, B is built and lands — one node, the whole beat. build objectrevealtransition
directionChoicebuildbuild draws the hologram up; unbuild runs the beat backwards (the object comes apart into lines and goes). buildunbuild
sceneTextThe 3D scene node the hologram is built from, by name. Empty = build from B's render passes instead (see geometry).
targetsTextWhich prim paths this affects — space or comma separated, * matches one segment, ** any run. Empty = everything upstream.
cameraTextThe project camera to draw the hologram through, by name. Empty = the scene framed automatically.
geometryChoiceautoWhere the geometry comes from: auto uses the scene when one is named, else B's passes; scene and passes force one. The passes are depth / P / N / uv / cryptomatte, named by the pass_* knobs. autoscenepasses
viewChoiceresultThe display transform for viewing only — it never changes the pixels in the graph. resultelementobjectspacemaskfrontdepth
startFloat1.0The frame the beat starts on.
build_lenFloat36.0How many frames the hologram takes to draw itself, from the first line to the last.
draw_timeFloat6.0How many frames each line takes to draw from one end to the other.
fill_delayFloat4.0Frames after a panel's edges are drawn before its fill starts.
fill_timeFloat8.0Frames the fill takes to reach full.
materialize_lagFloat12.0Frames after the hologram is drawn before the real object starts to materialise into it.
materialize_lenFloat24.0Frames the materialise takes to run over the whole object.
materialize_edgeFloat3.0How wide the materialise front is, in frames — the band where the hologram and the real object cross-fade.
lingerFloat8.0Frames the hologram lingers after the object has fully materialised, before it fades.
fadeFloat8.0Frames the hologram takes to fade once it lingers no more.
build_orderChoiceriseThe order the lines draw: rise (bottom up), fall, sweep (along sweep_x/y/z from origin), radial (out from origin), parts (one part at a time), panels. risefallsweepradialpartspanels
materialize_orderChoiceemissive firstThe order the real object lands: emissive first (lights and emissive parts, then the rest emissive_lead frames later in the fallback order), or the same choices as build_order. emissive firsttop-downbottom-upsame as buildsweepradialparts
materialize_fallbackChoicetop-downThe order the non-emissive parts land when materialize_order is emissive first. top-downbottom-upsame as buildsweepradialparts
emissive_leadFloat6.0Frames the emissive parts land ahead of the rest under emissive first.
sweep_xFloat1.0The sweep direction for a sweep order, x.
sweep_yFloat0.0The sweep direction for a sweep order, y.
sweep_zFloat0.0The sweep direction for a sweep order, z.
origin_xFloat0.0The origin a radial order grows from and a sweep starts at, x (scene units).
origin_yFloat0.0The origin for radial and sweep orders, y.
origin_zFloat0.0The origin for radial and sweep orders, z.
staggerFloat1.0How unevenly the parts start in their order: 0 = all together, 1 = fully staggered across the build.
jitterFloat0.0Random variation on each line's start time, frames (seeded). 0 = the order exactly.
seedInt1The random pattern's starting point. Change it for a different pattern of the same character; keep it to reproduce a frame exactly.
colorColor[0.25, 1.0, 0.9, 1.0]The colour.
intensityFloat0.0How strong the added effect is.
widthFloat1.6The line width, pixels.
haloFloat0.35The glow around each line, as a fraction of its brightness.
halo_pxFloat3.0How far the halo spreads, pixels.
xrayFloat0.0How much of the far side of the object shows through the near side (0 = hidden lines hidden, 1 = fully see-through).
dot_sizeFloat4.0The size of the dots drawn at vertices and bright features, pixels. 0 = no dots.
fillFloat0.05How bright the panel fill is, as a fraction of the line colour.
fill_fresnelFloat0.25How much the fill brightens toward glancing angles (a hologram's edge sheen).
creaseFloat30.0The angle between faces, degrees, above which an edge is drawn as a line. Lower draws more lines.
panel_spacingFloat0.0Spacing of the panel grid drawn across each face, scene units. 0 = no panel lines.
pass_depthTextdepthB's depth pass, by layer name, when the geometry comes from the passes.
pass_positionTextPB's position (P) pass, by layer name.
pass_normalTextNB's normal (N) pass, by layer name.
pass_uvTextuvB's uv pass, by layer name.
pass_cryptoTextCryptoObjectB's cryptomatte layer, for parts and subjects from the passes.
depth_edgeFloat0.02How big a step in B's depth pass counts as an edge to draw, as a fraction of the depth range.
emissive_thresholdFloat0.0Brightness in B above which a feature counts as emissive (lands first, gets a dot). 0 = none.
gridBooltrueDraw the holodeck's floor grid.
grid_cellFloat0.25The floor grid's cell size, scene units.
grid_majorFloat4.0Every this many cells the grid draws a brighter line.
grid_inFloat12.0Frames the floor grid rises before the build starts.
roomBoolfalseDraw the room: walls and ceiling round the targets, room_margin out.
room_marginFloat0.5How far the room's walls stand from the targets, scene units.
void_topColor[0.0, 0.02, 0.06, 1.0]The void's colour at the top of frame (a reveal or transition's empty space).
void_bottomColor[0.0, 0.0, 0.0, 1.0]The void's colour at the bottom of frame.
void_hazeFloat0.3How much haze the void carries, fading the far parts of the room and the grid.
a_outChoicepower-downHow A leaves in a transition: power-down (the lights die, then the image) or dissolve over dissolve_len. power-downdissolve
dissolve_lenFloat12.0Frames A takes to dissolve when a_out is dissolve.
flashFloat1.0The landing flash when the object materialises, in stops of gain. 0 = none.
flash_lenFloat2.0Frames the landing flash lasts.
void_gradeFloat0.6How far the subjects in the void are pushed toward the hologram's colour wash (0 = as they are, 1 = fully graded).
settleFloat24.0Frames the void's haze and grade take to settle after the landing.
edge_styleChoicehot edgeHow the materialise front reads: hot edge (a bright line), digital (blocks), scanline (a band of lines), plain (a soft cross-fade). hot edgedigitalscanlineplain
edge_glowFloat1.0How bright the materialise edge glows, as a multiple of the line colour.
subjectsChoiceaskWho is a subject in A (kept solid, lit by the hologram's spill): ask says out loud that the node needs one; matte uses the subject_matte input; cryptomatte picks subject_ids from A's layers; none. askmattecryptomattenone
subject_idsTextThe cryptomatte objects that are the subjects (names, hashed the spec's way, or hex ids; comma separated).
subject_cryptoTextCryptoObjectA's cryptomatte layer the subjects are picked from.
spillFloat0.5How much of the hologram's light spills onto the subjects, as a fraction.
spill_radiusFloat24.0How far the spill reaches from the hologram, pixels.
flickerFloat0.0Instability: the whole hologram's brightness flickers by this fraction, frame to frame. Off by default; the presets opt in.
shimmerFloat0.0Instability: the lines shimmer along their length by this amount.
fill_noiseFloat0.0Instability: noise in the panel fill, this much of its brightness.
scan_bandsFloat0.0Instability: horizontal scan bands rolling through the hologram, this much darker.
chroma_offsetFloat0.0Instability: the colour channels offset sideways by this many pixels, like a projector out of register.
energyFloat0.0Energy at the build front: puffs born where the lines are being drawn, this bright. 0 = none.
energy_sizeFloat4.0The energy puffs' size, pixels.
energy_lifeFloat8.0Frames an energy puff lives.
energy_riseFloat1.5How fast the energy puffs rise, pixels a frame.
energy_sparksFloat0.3How much of the energy is sparks rather than puffs (0 = puffs, 1 = sparks).
format_widthInt1920Width in pixels.
format_heightInt1080Height in pixels.
slotInt0The live-stream slot this node reads. Slots are process-wide; the same number in two nodes is the same stream.
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).