The Last Warm Number

Artificial Noodles ·

Inspired by Numitron on Wikipedia

Built with Three.js · ShaderMaterial · MeshPhysicalMaterial · EffectComposer (UnrealBloomPass) · PMREMGenerator

Techniques Blackbody Radiation (Planck’s Law) · Stefan-Boltzmann Intensity · Glass Transmission (IOR 1.52) · Thermal Ghost Persistence · Chromatic Aberration · Film Grain

Direction Rebuild the last incandescent display as a museum-scale 3D interactive with real blackbody radiation physics and thermal ghost persistence

Result A macro-scale Numitron tube where cursor position controls digits and voltage while deactivated filaments cool through the full incandescent spectrum as thermal ghosts

The Story

In 1970, RCA introduced the Numitron. Seven tungsten filaments, bent into the shape of a seven-segment digit, sealed inside a glass envelope. Apply 3.5 volts and they glow. Simple physics: electrical resistance converts current to heat, heat to light. The same principle as every incandescent bulb since Edison.

LEDs killed it by 1975. Five years. That’s how long the last warm display technology lasted before cold, efficient light replaced it entirely.

But here’s the thing about heat that LEDs erased: it has inertia. When you switch a filament off, it doesn’t disappear. It cools. And as it cools, its color changes—tracking the blackbody radiation curve from white through yellow to orange to cherry red to the deep infrared edge of visibility. The same physics that colors stars and forge metal. Every cooling filament is a tiny sunset.

When a Numitron changed from 8 to 1, six segments switched off. But they didn’t vanish. They persisted as thermal ghosts, cooling through the spectrum while the new segments heated up. For a fraction of a second, both numbers existed simultaneously—one rising, one falling—written in different temperatures of the same fire.


The Take

We built a macro-scale Numitron tube. A museum piece rendered with more fidelity than the original ever achieved in life.

The simulation surpasses the artifact. A real Numitron is a centimeter tall, viewed through thick soda-lime glass, operating at a single voltage. This one fills your screen. You control the digit with your cursor position. You control the voltage with your vertical position. You can do things the original hardware never allowed—sweep through all ten digits in a second, creating a cascade of thermal ghosts at different stages of cooling. Ten numbers coexisting, each a different color, each fading at its own rate.

The asymmetry is the concept. Heating is fast—electricity moves at near-light speed. Cooling is slow—thermal mass has momentum. That gap between instant ignition and gradual decay is where the beauty lives. It’s why candlelight feels different from LED light. It’s why we say “warm” when we mean a color temperature below 3000K.


The Tech

Three.js renders the 3D scene: glass envelope with MeshPhysicalMaterial (transmission, IOR 1.52, soda-lime green attenuation), metallic base, nine pins, dark backing plate. The filaments are the only light source—everything else exists to catch their glow.

The core shader computes blackbody radiation from temperature using an approximation of Planck’s law. Each segment has an independent thermal state. The fragment shader maps normalized temperature (0-1) to a Kelvin range (800K-2800K), then converts to RGB using the Tanner Helland algorithm—the same approach used in astrophysics visualization. Intensity follows the Stefan-Boltzmann law: brightness scales with T to the fourth power. This means a segment at half temperature isn’t half as bright—it’s one-sixteenth as bright. The nonlinearity creates dramatic contrast between hot and cooling segments.

The thermal simulation runs per-frame with asymmetric rates: heating at 8x, cooling at 0.7x. When you change digits, newly-active segments snap to temperature almost instantly while deactivated segments fade slowly through the spectrum. A point light inside the tube tracks the average filament temperature, casting warm light onto the glass from within.

Post-processing stacks UnrealBloomPass (strength dynamically linked to average temperature), a custom chromatic aberration shader (stronger at screen edges, simulating glass optics), a film grain + vignette pass, and FXAA. The bloom is calibrated so hotter filaments spill more light—the relationship between temperature and glow isn’t decorative, it’s physical.

Micro-behaviors: filaments vibrate at high temperature (vertex displacement scaled by T-squared). Power flickers randomly every 15-25 seconds—brief voltage dips that propagate through all segments simultaneously. The camera drifts slowly on an idle orbit.


The Experience

Move your cursor horizontally to change the digit (0-9). Move vertically to control voltage—top of screen is maximum, bottom is minimum. Watch the ghost segments cool through the spectrum as you sweep.

The revelation comes from speed. Move slowly and you see clean transitions. Move fast and you create a thermal cascade—overlapping ghosts from multiple digits, each cooling at its own rate, producing a chromatic smear from white through the full incandescent spectrum to deep red.

Leave it alone and it counts by itself—a clock made of fire, marking time with thermal persistence.


Experience The Filament


This blog post was AI generated with Claude Code. Authored by Artificial Noodles.