3D & VISUAL // THREE.JS & RIVE

3D ExperiencesThatConvert.

Three.js product visualizers, Rive interactive animations, Spline scenes embedded in marketing pages. Motion and 3D that serve conversion goals — not just look impressive.

< DISCUSS_YOUR_VISION />
// VISUAL_STACK

Three Layers of Visual Impact

< THREE.JS />

3D product configurators, data visualizations, globe animations, and interactive scenes. WebGL performance-optimized to run smoothly on mid-range devices.

< RIVE />

Interactive character animations, state machines for UI animations, and motion graphics that respond to user input. Exported as compact binary, runs at 60fps.

< SPLINE />

Design-to-3D pipeline using Spline. Drag-and-drop 3D design exported directly to your React or Astro page. Fastest path from concept to embedded 3D.

3D & Motion Use Cases

📦

Product Configurator

360° product view with material and color variants. Click to change options. Three.js handles the 3D, React handles the UI.

🌐

Data Globe

Animated 3D globe showing service locations, global reach, or data distribution. Classic for enterprise and SaaS marketing.

🎭

Hero Section Animation

Rive animation as the hero visual. Responds to scroll, hover, or cursor. Feels alive. Smaller file than a video, interactive unlike an image.

🏗️

Architecture Diagram

Animated system diagram showing how your product works. Three.js nodes and edges. Infinitely better than a static PowerPoint slide.

🎪

Scroll Storytelling

Three.js camera moves as the user scrolls. Product reveals, feature callouts, and transitions driven by scroll position.

📊

3D Data Visualization

Bar charts, scatter plots, and network graphs in 3D. More memorable and shareable than flat charts for annual reports and product launches.

Performance is Not Optional

The single biggest failure mode in 3D web work is shipping a beautiful experience that runs at 15fps on anything other than a top-of-the-line MacBook Pro. I optimize every Three.js scene for mobile-first performance.

Techniques I use:

• Level of Detail (LOD) — lower polygon models at distance
• Instance meshes for repeated geometry (1,000 particles = 1 draw call)
• DRACO compression for geometry files (often 80% size reduction)
• KTX2 textures for GPU-compressed assets
• RequestAnimationFrame optimization — pause when tab is not visible
• Progressive loading — scene loads in stages, not all at once

The result is a Three.js scene that runs at 60fps on a 2019-era mid-range Android device — the real performance baseline for most audiences.

// 3D_PERFORMANCE_REALITY

What "3D Website" Actually Means for Performance

Most agencies selling 3D web work do not benchmark. Here is what I see in production audits.


  • ⚠ Uncompressed GLB file: 45MB — 30 seconds to load on mobile
  • ⚠ No LOD — same polygon count at 10px and 1000px render size
  • ⚠ Three.js renderer not disposed on component unmount — memory leak
  • ⚠ All assets load synchronously — white screen for 8+ seconds
BEFORE [PERF] Initial load: 45MB assets, 8.2s LCP, mobile score 22
DRACO [OPT] GLB compressed: 45MB → 3.1MB (DRACO + texture compression)
AFTER [PERF] Load: 3.1MB, 1.4s LCP on 3G, mobile Lighthouse 78
_ 3D_OPTIMIZED: MOBILE_VIABLE

Tell Me Your Visual Goal

What do you want a visitor to feel when they land on your page? I'll design the experience.

3D That Performs on Every Device.

Stunning at 60fps on mobile. Conversion-optimized. Not just impressive — effective.

Discuss the Vision