A Mile in Your Fist: Simulating Shape-Memory Alloy Deployment in Space
The story behind The Antenna
Inspired by Nickel titanium on Wikipedia
Built with Three.js · BufferGeometry · ShaderMaterial · EffectComposer (UnrealBloomPass)
Techniques Scroll-Driven Deployment Animation · Procedural Geometry · Dynamic Starfield · Bloom · Vignette · Film Grain
Direction Simulate Nitinol shape-memory alloy deployment as a scroll-driven journey from crumpled fist to mile-wide satellite dish in the void of space
Result A scroll experience where a crumpled metal ball unfolds panel by panel into a golden parabolic antenna while the camera pulls back through an expanding starfield, collapsing the scale between fist and stadium
The Story
In 1965, Goodyear Aerospace faced an impossible problem. NASA needed a satellite antenna a mile wide to pick up faint signals from deep space. The rocket that would carry it was six feet across.
The solution was Nitinol — nickel titanium, a shape-memory alloy discovered by accident at the Naval Ordnance Laboratory. At low temperatures, Nitinol exists in a deformable martensite phase: crumple it, twist it, compress it into any shape you want. But heat it past its transformation temperature and the crystalline structure snaps back to austenite — the alloy’s “remembered” configuration. The metal doesn’t just return to its original shape. It returns with force.
They could crumple a mile-wide antenna into a ball the size of a fist, pack it into a rocket, and let the heat of sunlight do the rest. The antenna would unfold itself in the void of space, remembering what it was designed to be.
This is the physics of transformation through threshold. Below the transition temperature, the metal is malleable, patient, compressed. Above it, something fundamental changes. The response isn’t proportional to the input — it’s categorical. One phase becomes another. A fist becomes a stadium.
The Take
A crumpled ball of metal floats in space. Stars scattered behind it — few, large, intimate. You’re close. Close enough to see the chaotic folds, the overlapping panels compressed impossibly tight.
Scroll, and the camera begins to pull back. The ball starts to loosen. Panels separate. Struts extend. The unfolding accelerates as you scroll faster — not because you’re controlling speed, but because the transformation has its own momentum now. The shape-memory is taking over.
As you zoom out, space opens up. Stars flood in — thousands of them, rushing into the frame as if the void itself is expanding. The intimate darkness becomes infinite. The capsule that floated beside the crumpled ball — your human scale reference — shrinks to a speck. The antenna keeps growing.
By the time the camera swings up to look down into the dish, the transformation is complete. A mile-wide parabolic surface, golden in the sunlight, waiting to hear. The scale shift isn’t gradual. It’s categorical. You started with something you could hold. You end with something that could hold a stadium.
The Tech
The experience runs as a scroll-driven Three.js scene with custom procedural geometry and a two-phase camera choreography.
Dish Geometry. The antenna is built from 8 radial panel segments, each a custom BufferGeometry with parabolic curvature. Each panel stores two position arrays: crumpledPos (vertices compressed into a tight ball with randomized offsets) and originalPos (vertices in their unfolded parabolic positions). On each frame, vertex positions are interpolated between these arrays based on scroll progress, with per-panel stagger delays creating a ripple effect as the dish unfolds.
The Crumple Algorithm. Crumpled positions are generated procedurally: each vertex is displaced from the dish center by a small random radius, with angular offsets and vertical jitter creating the chaotic compression of real crumpled metal. The randomization uses panel index as a seed offset, so panels overlap believably rather than occupying the same space.
Custom Dish Shader. A ShaderMaterial handles the antenna’s appearance. The fragment shader interpolates between cold steel blue (crumpled) and warm gold (unfolded) based on unfoldProgress. Fresnel rim lighting simulates metallic reflectivity. A procedural grid pattern (radial and circular lines) fades in as the dish unfolds, revealing its structural framework. At 90%+ progress, a sunlight catch effect sweeps across the surface.
Two-Phase Camera. The camera motion is split into distinct phases to maximize the sense of scale:
-
Phase 1 (0-60% scroll): Zoom. The camera pulls straight back from z=4 to z=65, staying mostly level. This is where scale transformation happens — the dish grows while the camera retreats, but the dish grows faster, filling more of the frame even as it gets farther away.
-
Phase 2 (60-100% scroll): Rotate. The camera swings upward, rotating from a horizontal view to looking down into the dish bowl at ~63° elevation. The dish tilts forward to meet the camera, revealing its interior.
Dynamic Star Field. 8,000 stars are generated at initialization, but only 100 are visible at start. As zoomProgress increases, a cubic reveal curve (progress³) floods stars into the scene — most appearing in the second half of the zoom phase. This creates the sensation of the void expanding as you pull back. Stars use a custom shader with subtle velocity-based streaking: when scrolling fast, stars elongate slightly in the direction opposite to camera motion.
Scale Reference. A small spacecraft capsule — white hull, blue solar panels — floats beside the antenna throughout. It never changes size. At scroll 0%, it’s 80% as large as the crumpled ball. At scroll 100%, it’s a tiny bright speck against the mile-wide dish. This constant anchor makes the antenna’s growth feel real rather than abstract.
Post-Processing. The scene uses Three.js EffectComposer with UnrealBloomPass (intensity ramping with unfold progress), a custom vignette shader, and subtle film grain. The bloom intensifies as the dish catches sunlight, creating the golden glow of deployment completion.
The Experience
You open the page. A crumpled ball of metal against the void. A few dozen stars, large and scattered. Text fades in: “1965. Goodyear Aerospace. They needed to launch a mile-wide antenna.”
You scroll.
“The rocket was six feet across.”
The ball begins to loosen. Panels separate with staggered timing — first one, then another, like petals of a metal flower. The camera pulls back. More stars appear. Then more. Then hundreds. The void opens up.
“So they taught metal to remember.”
The unfolding accelerates. Struts snap into place. The parabolic curve emerges from chaos. The capsule that floated beside the ball is smaller now — you can still see it, but it’s receding. The stars are everywhere, flooding the frame, and you’re still zooming out.
The text disappears. Pure visual.
The camera keeps pulling back. The dish keeps growing. The capsule is a speck. The dish fills the frame, exceeds it — edges disappearing past the viewport. The camera swings upward. You’re looking down into the bowl now, the golden surface catching sunlight, the grid structure visible across its face.
“A mile across. Waiting to hear.”
The antenna is complete. A stadium-sized dish, deployed from a fist-sized ball, floating in an infinite field of stars. The capsule — your human reference — is almost invisible against its scale. The transformation is complete. Not gradual. Categorical. You held it. Now it could hold you.
This blog post was AI generated with Claude Code. Authored by Artificial Noodles.