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
- Pick a preset (Construct cyan, Blueprint, Void to location…);
modeis build an object, reveal, or a transition from A to B. - Name the 3D scene node in
scene(or wire B's render passes) and the project camera incamera. - Time the beats:
start,build_len,draw_time,fill_time,materialize_len;build_orderdecides what is drawn first. - Tune the line
widthandhalo; the flicker, shimmer and scan bands make it read as projected light.
Inputs
| Input | What it takes |
|---|---|
| A | the foreground, composited over B |
| B | the background — **B decides the format** |
| fg | — |
| subject_matte | — |
Outputs
| Output | Type |
|---|---|
| out | Image |
Parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
| mode | Choice | build object | What 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 |
| direction | Choice | build | build draws the hologram up; unbuild runs the beat backwards (the object comes apart into lines and goes). buildunbuild |
| scene | Text | The 3D scene node the hologram is built from, by name. Empty = build from B's render passes instead (see geometry). | |
| targets | Text | Which prim paths this affects — space or comma separated, * matches one segment, ** any run. Empty = everything upstream. | |
| camera | Text | The project camera to draw the hologram through, by name. Empty = the scene framed automatically. | |
| geometry | Choice | auto | Where 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 |
| view | Choice | result | The display transform for viewing only — it never changes the pixels in the graph. resultelementobjectspacemaskfrontdepth |
| start | Float | 1.0 | The frame the beat starts on. |
| build_len | Float | 36.0 | How many frames the hologram takes to draw itself, from the first line to the last. |
| draw_time | Float | 6.0 | How many frames each line takes to draw from one end to the other. |
| fill_delay | Float | 4.0 | Frames after a panel's edges are drawn before its fill starts. |
| fill_time | Float | 8.0 | Frames the fill takes to reach full. |
| materialize_lag | Float | 12.0 | Frames after the hologram is drawn before the real object starts to materialise into it. |
| materialize_len | Float | 24.0 | Frames the materialise takes to run over the whole object. |
| materialize_edge | Float | 3.0 | How wide the materialise front is, in frames — the band where the hologram and the real object cross-fade. |
| linger | Float | 8.0 | Frames the hologram lingers after the object has fully materialised, before it fades. |
| fade | Float | 8.0 | Frames the hologram takes to fade once it lingers no more. |
| build_order | Choice | rise | The 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_order | Choice | emissive first | The 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_fallback | Choice | top-down | The order the non-emissive parts land when materialize_order is emissive first. top-downbottom-upsame as buildsweepradialparts |
| emissive_lead | Float | 6.0 | Frames the emissive parts land ahead of the rest under emissive first. |
| sweep_x | Float | 1.0 | The sweep direction for a sweep order, x. |
| sweep_y | Float | 0.0 | The sweep direction for a sweep order, y. |
| sweep_z | Float | 0.0 | The sweep direction for a sweep order, z. |
| origin_x | Float | 0.0 | The origin a radial order grows from and a sweep starts at, x (scene units). |
| origin_y | Float | 0.0 | The origin for radial and sweep orders, y. |
| origin_z | Float | 0.0 | The origin for radial and sweep orders, z. |
| stagger | Float | 1.0 | How unevenly the parts start in their order: 0 = all together, 1 = fully staggered across the build. |
| jitter | Float | 0.0 | Random variation on each line's start time, frames (seeded). 0 = the order exactly. |
| seed | Int | 1 | The random pattern's starting point. Change it for a different pattern of the same character; keep it to reproduce a frame exactly. |
| color | Color | [0.25, 1.0, 0.9, 1.0] | The colour. |
| intensity | Float | 0.0 | How strong the added effect is. |
| width | Float | 1.6 | The line width, pixels. |
| halo | Float | 0.35 | The glow around each line, as a fraction of its brightness. |
| halo_px | Float | 3.0 | How far the halo spreads, pixels. |
| xray | Float | 0.0 | How much of the far side of the object shows through the near side (0 = hidden lines hidden, 1 = fully see-through). |
| dot_size | Float | 4.0 | The size of the dots drawn at vertices and bright features, pixels. 0 = no dots. |
| fill | Float | 0.05 | How bright the panel fill is, as a fraction of the line colour. |
| fill_fresnel | Float | 0.25 | How much the fill brightens toward glancing angles (a hologram's edge sheen). |
| crease | Float | 30.0 | The angle between faces, degrees, above which an edge is drawn as a line. Lower draws more lines. |
| panel_spacing | Float | 0.0 | Spacing of the panel grid drawn across each face, scene units. 0 = no panel lines. |
| pass_depth | Text | depth | B's depth pass, by layer name, when the geometry comes from the passes. |
| pass_position | Text | P | B's position (P) pass, by layer name. |
| pass_normal | Text | N | B's normal (N) pass, by layer name. |
| pass_uv | Text | uv | B's uv pass, by layer name. |
| pass_crypto | Text | CryptoObject | B's cryptomatte layer, for parts and subjects from the passes. |
| depth_edge | Float | 0.02 | How big a step in B's depth pass counts as an edge to draw, as a fraction of the depth range. |
| emissive_threshold | Float | 0.0 | Brightness in B above which a feature counts as emissive (lands first, gets a dot). 0 = none. |
| grid | Bool | true | Draw the holodeck's floor grid. |
| grid_cell | Float | 0.25 | The floor grid's cell size, scene units. |
| grid_major | Float | 4.0 | Every this many cells the grid draws a brighter line. |
| grid_in | Float | 12.0 | Frames the floor grid rises before the build starts. |
| room | Bool | false | Draw the room: walls and ceiling round the targets, room_margin out. |
| room_margin | Float | 0.5 | How far the room's walls stand from the targets, scene units. |
| void_top | Color | [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_bottom | Color | [0.0, 0.0, 0.0, 1.0] | The void's colour at the bottom of frame. |
| void_haze | Float | 0.3 | How much haze the void carries, fading the far parts of the room and the grid. |
| a_out | Choice | power-down | How A leaves in a transition: power-down (the lights die, then the image) or dissolve over dissolve_len. power-downdissolve |
| dissolve_len | Float | 12.0 | Frames A takes to dissolve when a_out is dissolve. |
| flash | Float | 1.0 | The landing flash when the object materialises, in stops of gain. 0 = none. |
| flash_len | Float | 2.0 | Frames the landing flash lasts. |
| void_grade | Float | 0.6 | How far the subjects in the void are pushed toward the hologram's colour wash (0 = as they are, 1 = fully graded). |
| settle | Float | 24.0 | Frames the void's haze and grade take to settle after the landing. |
| edge_style | Choice | hot edge | How the materialise front reads: hot edge (a bright line), digital (blocks), scanline (a band of lines), plain (a soft cross-fade). hot edgedigitalscanlineplain |
| edge_glow | Float | 1.0 | How bright the materialise edge glows, as a multiple of the line colour. |
| subjects | Choice | ask | Who 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_ids | Text | The cryptomatte objects that are the subjects (names, hashed the spec's way, or hex ids; comma separated). | |
| subject_crypto | Text | CryptoObject | A's cryptomatte layer the subjects are picked from. |
| spill | Float | 0.5 | How much of the hologram's light spills onto the subjects, as a fraction. |
| spill_radius | Float | 24.0 | How far the spill reaches from the hologram, pixels. |
| flicker | Float | 0.0 | Instability: the whole hologram's brightness flickers by this fraction, frame to frame. Off by default; the presets opt in. |
| shimmer | Float | 0.0 | Instability: the lines shimmer along their length by this amount. |
| fill_noise | Float | 0.0 | Instability: noise in the panel fill, this much of its brightness. |
| scan_bands | Float | 0.0 | Instability: horizontal scan bands rolling through the hologram, this much darker. |
| chroma_offset | Float | 0.0 | Instability: the colour channels offset sideways by this many pixels, like a projector out of register. |
| energy | Float | 0.0 | Energy at the build front: puffs born where the lines are being drawn, this bright. 0 = none. |
| energy_size | Float | 4.0 | The energy puffs' size, pixels. |
| energy_life | Float | 8.0 | Frames an energy puff lives. |
| energy_rise | Float | 1.5 | How fast the energy puffs rise, pixels a frame. |
| energy_sparks | Float | 0.3 | How much of the energy is sparks rather than puffs (0 = puffs, 1 = sparks). |
| format_width | Int | 1920 | Width in pixels. |
| format_height | Int | 1080 | Height in pixels. |
| slot | Int | 0 | The live-stream slot this node reads. Slots are process-wide; the same number in two nodes is the same stream. |
| disabled | Bool | false | Bypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back. |
| label | Text | A note shown under the node in the graph — what this node is FOR. Never affects the render or the cache. | |
| hide_input | Bool | false | Draw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap). |