Skip to content
VibeFather
Join

About this template

3D Exploded View Product Showcase is a single-page product site built around a procedural Three.js assembly rather than a photograph or downloaded model. The default case presents Korven Industrial's HX-42 helical gearbox. It suits industrial marketers, product designers, technical educators, and engineering teams that need to explain how a mechanical product fits together without asking visitors to open CAD software or watch a long video.

The first screen places a large interactive gearbox beside concise product positioning, three engineering figures, and direct controls. A five-stage scroll sequence opens the housing, releases the shafts, separates the helical gear pair, and resolves into a labeled exploded assembly. Visitors can rotate the model, make its housing transparent, apply a live clipping plane, and select a component to read its material, dimensions, and function. A six-second transport control reverses the exploded state into a complete assembly, with pause, restart, progress, and a return to scroll control.

Below the visualization, restrained engineering notes, a full specification table, and application rows give the interaction a practical context. Barlow Condensed headings, Inter body copy, IBM Plex Mono annotations, graphite surfaces, machined-metal tones, and one safety-orange accent create a precise editorial system without falling back to a generic card grid.

All product geometry is drawn in code from original primitives and custom gear geometry; there are no image, model, HDRI, or texture downloads. The template uses Vite, React, TypeScript, Three.js, and vanilla CSS. Five variables control the brand, product, audience, primary action, and model identifier, while a single content file holds the part data and copy. An alternate coaxial speaker-driver case demonstrates how the same interaction model can serve another mechanical product. The finished site is static, responsive, keyboard accessible, touch friendly, and respectful of reduced-motion settings.

The template prompt

The live demo was built from exactly this text — nothing added.

# 3D Exploded View Product Showcase

Build this website exactly as described below. Replace the [VARIABLES] with your own values; keep everything else.

## Brief
Build a one-page interactive product showcase for [BRAND]'s [PRODUCT] ([MODEL_ID]), aimed at [AUDIENCE]. The default is an original single-stage helical gearbox modeled entirely with Three.js primitives and custom BufferGeometry. A large assembled view leads into a five-step scroll-driven explosion; visitors can orbit, select labeled parts, make the housing transparent, apply a section cut, and play a six-second assembly sequence. When variable values change, keep the layout, interaction model, and visual system but redesign the procedural assembly, part data, engineering captions, specifications, and applications to fit the new [PRODUCT].

- Audience: [AUDIENCE], plus technical marketers, product designers, educators, and buyers who need to understand a mechanism before evaluating its specifications. The default copy speaks to mechanical design engineers without assuming access to CAD tools.
- Goal: Let visitors understand the product's construction, inspect every major component, compare its operating specifications, and replay the assembly order. The primary action, [PRIMARY_CTA], moves directly into the interactive assembly; a later action copies a clean specification summary to the clipboard without sending data anywhere.
- Tone: Precise, calm, engineered, and legible. Use short declarative copy and concrete sample engineering data. The page should feel like a carefully art-directed technical exhibit, not a science-fiction cockpit, gaming interface, or generic SaaS landing page.

## Stack
- Framework: Vite 6 + React 19 + TypeScript
- Styling: Vanilla CSS
- Libraries: three (MIT), lucide-react (ISC), @fontsource/barlow-condensed (OFL), @fontsource/inter (OFL), @fontsource/ibm-plex-mono (OFL)
- Build: `npm run build` → static files in `dist/`. No backend, no server code, no external APIs.
- Setup:
  - Use Vite with React and TypeScript. Set base: './' and build.sourcemap: false in vite.config.ts; the production command must emit only static files to dist/. Do not substitute another framework, renderer, styling system, or state library.
  - Install and import three, lucide-react, and the three listed Fontsource packages locally. Import OrbitControls and RoomEnvironment from three/examples/jsm; use PMREMGenerator with RoomEnvironment for metallic reflections instead of downloading an HDRI.
  - Create src/content.ts as the single source for resolved variable values, navigation labels, headlines, assembly steps, part names, exploded offsets, part specifications, engineering notes, applications, and footer copy. Include the default [BRAND], [PRODUCT], [AUDIENCE], [PRIMARY_CTA], and [MODEL_ID] values there, rewrite all product-specific content when those values change, and never leave square-bracket variable tokens visible in the rendered site.
  - Create separate scene modules for geometry, materials, camera, labels, clipping, selection, and playback. Build the default gearbox from original box, cylinder, torus, shaft, bearing, seal, and custom helical-tooth BufferGeometry parts; use a stylized involute-like tooth profile with 18 teeth on the pinion and 63 on the gear. Do not load a model or reuse a commercial gearbox design.
  - Use MeshStandardMaterial for machined steel and aluminum, a neutral procedural environment, one broad key directional light, a cooler rim light, and a soft code-generated contact-shadow plane. Enable renderer.localClippingEnabled, antialiasing, and alpha; cap pixel ratio at 1.75 on desktop and 1.4 on mobile. Pause requestAnimationFrame work while a scene is outside the viewport.
  - Keep one shared assembly state in React: scrollProgress, selectedPart, housingTransparent, sectionCut, playbackProgress, playbackStatus, and controlMode. Derive every mesh position and label from the same keyframe data so scrolling, selection, and playback cannot disagree. Use direct interpolation rather than a physics engine or an additional animation dependency.
  - Create a reusable GearboxScene component for the hero and the pinned assembly stage. Share geometry and material definitions, render only the visible instance, and provide a static inline SVG technical drawing as a no-WebGL fallback with the part list and specifications still usable.
  - Use Lucide icons only for Rotate3D, Layers3, Slice, Play, Pause, RotateCcw, X, ChevronRight, Copy, Check, Menu, and ArrowDown. Give every icon button an accessible text label and use 44px minimum touch targets.
  - Centralize responsive rules and keyframes in src/styles.css. Support 1440×900 and 390×844 without horizontal overflow or console errors, include keyboard focus styles and a print stylesheet for the specification table, and implement prefers-reduced-motion by removing idle movement and automatic playback while retaining instant state changes and manual controls.

## Variables
- [BRAND] — Brand (default: "Korven Industrial"). Invented manufacturer or product studio name used in the header, hero, specification summary, and footer.
- [PRODUCT] — Product (default: "Helical Gearbox"). A mechanical assembly that can be modeled from code and separated into 6–10 meaningful components.
- [AUDIENCE] — Audience (default: "mechanical design engineers"). Lowercase descriptive audience phrase that fits naturally after for in the hero copy.
- [PRIMARY_CTA] — Primary action (default: "Explore the assembly"). Short button label that scrolls to the assembly section and remains suitable for the selected product.
- [MODEL_ID] — Model identifier (default: "HX-42"). Short invented alphanumeric identifier used in technical labels and the copied specification summary.
- [CREDIT] — keep a small "Template by VibeFather" link to https://vibefather.ai/t/3d-exploded-view-product-showcase in the footer (default: yes; delete this line to remove it)

The copy under Pages & Sections is written for the default values. If your values differ, rewrite every headline, paragraph, label and image for them — same length, tone and structure. Layout, colors, type and motion stay as described.
Keep all copy, image paths and links in one content file (for example `src/content.ts`), keyed by section, so the content can be swapped later without touching components.

Pro template. The design, sections, motion and assets parts of this prompt are for Pro members. The live demo and DESIGN.md stay free.

Join Pro early access →

DESIGN.md

The design system on its own — colors, type, spacing and motion. Apply this look to a project you already have.

---
name: "3D Exploded View Product Showcase"
colors:
  carbon: "#0B0D0E"
  graphite: "#131719"
  raised_steel: "#1B2023"
  bone_white: "#F1F0EA"
  cool_gray: "#9AA3A5"
  machined_line: "#30383B"
  safety_orange: "#F26A2E"
  satin_aluminum: "#BBC2C0"
  gunmetal: "#586165"
typography:
  display_and_section_headings: { family: "Barlow Condensed", weights: [500, 600, 700] }
  body_buttons_and_specification_values: { family: "Inter", weights: [400, 500, 600] }
  eyebrows_model_ids_dimensions_part_labels_and_transport_readouts: { family: "IBM Plex Mono", weights: [400, 500] }
spacing: "Use an 8px base unit, a maximum content width of 1520px, 32px desktop gutters, and 20px mobile gutters. Desktop section padding is 128px 0; mobile is 80px 0. Use a 12-column desktop grid with 24px gaps. Keep body measure between 52 and 68 characters, control gaps at 8–12px, and table-cell padding at 18px 0."
radius: "Use 2px on buttons and inputs, 6px on inspectors and scene panels, and no rounding on major sections or specification rows. Reserve circles for status indicators and transport icon buttons."
---

# 3D Exploded View Product Showcase — Design System

Apply this design system to an existing project. It describes the look and feel only; for the full site, use prompt.md.

## Colors
- **Carbon** `#0B0D0E` — Page background and the darkest canvas clear color.
- **Graphite** `#131719` — Header, inspector, and specification-row surfaces.
- **Raised steel** `#1B2023` — Control groups, hover states, and subtle scene panels.
- **Bone white** `#F1F0EA` — Primary headings, important values, and high-contrast copy.
- **Cool gray** `#9AA3A5` — Secondary copy and inactive labels; never use for text smaller than 13px.
- **Machined line** `#30383B` — Hairline borders, construction grid, table rules, and leader lines.
- **Safety orange** `#F26A2E` — Active step, selected part, primary button, focus outline, and playback progress only.
- **Satin aluminum** `#BBC2C0` — Three.js housing and machined aluminum components, with darker variants for depth.
- **Gunmetal** `#586165` — Three.js shafts, fasteners, and secondary metal surfaces.

## Typography
- **Display and section headings** — Barlow Condensed (OFL), weights 500/600/700. Self-host the font files.
- **Body, buttons, and specification values** — Inter (OFL), weights 400/500/600. Self-host the font files.
- **Eyebrows, model IDs, dimensions, part labels, and transport readouts** — IBM Plex Mono (OFL), weights 400/500. Self-host the font files.

## Spacing & shape
- Spacing: Use an 8px base unit, a maximum content width of 1520px, 32px desktop gutters, and 20px mobile gutters. Desktop section padding is 128px 0; mobile is 80px 0. Use a 12-column desktop grid with 24px gaps. Keep body measure between 52 and 68 characters, control gaps at 8–12px, and table-cell padding at 18px 0.
- Radius: Use 2px on buttons and inputs, 6px on inspectors and scene panels, and no rounding on major sections or specification rows. Reserve circles for status indicators and transport icon buttons.

## Motion
- On hero entry, fade the copy upward by 16px over 450ms and ease the assembled model from scale 0.96 and opacity 0 to its final state over 600ms. After entry, use only a restrained ±4° idle yaw over 12 seconds; stop it on interaction and when reduced motion is requested.
- Drive the explosion directly from normalized scroll progress through five explicit keyframes. Interpolate each part's position, rotation, opacity, and label visibility from its own keyframe record; do not use time-based triggers that can drift from the visitor's scroll position.
- Enable OrbitControls damping at 0.08 on desktop with zoom limited to 0.72×–1.8× of the default camera distance and polar angle limited to 20°–105°. Reset view returns camera, target, selection, and clipping to their defaults over 250ms.
- Assembly playback starts fully exploded and assembles over exactly 6000ms with smoothstep easing per part, a 120ms stagger by assembly order, a progressing orange track, and a numeric 0–100% readout. Pause preserves the exact frame; Restart returns to 0%; Return to scroll restores the scroll-derived state.
- Part selection pauses playback, eases the camera target toward the selected component over 300ms, highlights only that mesh in safety orange, and opens the inspector. Closing the inspector restores the prior camera target and playback or scroll state.
- Buttons, disclosure panels, labels, and specification-copy confirmation use 160ms opacity and 2–4px transform transitions. Avoid decorative particles, glitch effects, constant spinning gears, large parallax backgrounds, and gratuitous page transitions.
- For prefers-reduced-motion, remove idle yaw, smoothing, camera flights, and automatic playback. Scroll and the manual progress slider update to discrete keyframe states instantly, and all content remains available without animation.

## Imagery
The only hero visual is an original, high-craft procedural Three.js [PRODUCT], shown large with physically shaded metal, a subtle construction grid, fine dimension marks, and a soft contact shadow. The default gearbox must be recognizably mechanical at first glance, with two parallel shafts, visible helical teeth, bearing races, housing halves, fasteners, and seals. No photographs, AI-generated images, downloaded 3D models, HDRIs, texture maps, logos, people, or branded objects are used. HTML labels and an SVG leader-line overlay track projected 3D anchors; Lucide supplies only interface icons.

## Tone
Precise, calm, engineered, and legible. Use short declarative copy and concrete sample engineering data. The page should feel like a carefully art-directed technical exhibit, not a science-fiction cockpit, gaming interface, or generic SaaS landing page.

---
Inspired by 3D Exploded View Product Showcase — https://www.kimi.com/showcases/3dmake
— Prompt by VibeFather · https://vibefather.ai/t/3d-exploded-view-product-showcase · CC BY-NC 4.0 (non-commercial; commercial use needs a VibeFather Pro license) · Request removal: https://vibefather.ai/takedown