An animated 3D WALL-E that watches your cursor. His binocular head tracks the pointer with a soft, critically-damped spring — he idles, blinks, leans, and trundles a little on his treads to keep you in view, then perks up and bobs excitedly when you hover the call-to-action. Robot on the left, copy and CTA on the right. Premium, characterful, alive.
import WallE from '@crazygl/hero-wall-e';
<WallE
heading="Meet WALL-E."
subheading="He follows your every move."
ctaLabel="Say hello"
ctaHref="#"
/>;heading, subheading, ctaLabel, ctaHref.lookStrength / lookDamping (how far and how snappily the head turns), driveAmount (how far he trundles toward the cursor), positionX / positionZ (his home spot), eyeTilt (mood roll of the binocular eyes).ambientLight (overall fill / IBL / floor brightness — the low default reads dark and cinematic), bodyTint, keyIntensity / keyColor, rimIntensity / rimColor, floorContact (contact-shadow opacity), particleAmount (drifting dust density).transparent, backgroundTop, backgroundBottom.3D model: "WALL-E(Animated)" by Janis Zeps (Zeps3D), licensed CC-BY-4.0. WALL-E is a character © Disney / Pixar; this model is fan-made — use accordingly.
npm install @crazygl/hero-wall-eThe component takes the same props you see in the live customizer on the right — every default ships poster-quality.
import WALLE from '@crazygl/hero-wall-e';
export default function Landing() {
return (
<WALLE />
);
}The wrapper renders static HTML on the server and only initialises the canvas after hydration, so search engines see your copy.
// app/page.tsx — works in SSR-first frameworks (Next, Remix, Astro, etc.)
'use client';
import WALLE from '@crazygl/hero-wall-e';
export default function Page() {
return (
<section>
<WALLE
heading="Say hi."
subheading="Your new hero."
/>
<article>
<h2>Welcome</h2>
<p>Your content keeps its own voice below the hero.</p>
</article>
</section>
);
}