rig
The submersible *Nautile*, built out of primitives, plus the five emitters it puts into the water.
deadlight.sub.rig
The submersible Nautile, built out of primitives, plus the five emitters it puts into the water.
local Rig = require("deadlight.sub.rig")
local h = Rig.build() -- idempotent: an existing Nautile is taken away first
build() returns the handles the driver writes to: the root, the three
thruster hubs, the three lamp pivots, the beacon, the four arm joints, and the
five particle systems (beamPort, beamStbd, beamSpot, wash, ballast).
The vehicle's local frame
-Z is the way it faces — the same convention the wreck's bow uses and the
one Transform.quatFromBasis calls forward. +Y is up through the sail, +X
is starboard. The hull is 8.2 m long, 2.9 m across the fairing and 3.6 m from
the skids to the beacon, which is the envelope the shot list is framed
against: shot 3 puts the camera 1.7 m to port of the root, just outside the
skin. The landing gear sits 1.1 m under the origin, because Film.SUB_PATH
puts the origin 1.1 m off the silt in the debris field.
Materials
Nine .material assets under deadlight/sub/materials/, authored by
build() with overwrite = true. They are referenced by their FULL identity
(deadlight.sub.materials.dl_sub_foam): a bare leaf that also exists
elsewhere in the world is ambiguous, and a Model handed the ambiguous name
keeps the raw string unresolved and renders untextured.
On the pbr shader emissive is the glow COLOUR and emissive_intensity is
how hard it glows. There is no emissive_color.
The lamps
face = "Back" on every SpotLight — that is the lamp's local -Z, the
direction the vehicle is aimed along. "Front" is +Z and shines out of the
stern (#8632).
Each lamp carries a beam cone: a dense additive emitter firing along the lamp's own axis, its particles widening and dimming down the cone. The engine's participating medium reports active and never dispatches (#7760), so the beam is the suspended matter drawn rather than a fog march — which also means the specks in it drift, and a marched medium's never would.
The emitters are bare particles.create calls with autoUpdate = false: the
clock belongs to the film, and SubRig steps each of them by exactly
Film.DT per film frame.
Scoped to this part · feeds back into the world's score.