Skip to content

Kinetic Type

3d

A word built from forty thousand particles that dissolves into the next word. Move the cursor to disturb it, click to morph.

particlestypographywebglmorphkinetichero
Live previewthreejs renderer
loading webgl…
source/kinetic-typelive mode

How it works

3 steps
01

Preview

See the authored component running live.

02

Customize

Open the playground to tune its controls.

03

Ship

Copy the TypeScript source and install what it needs.

Runtime package

Install the requirements

verified from renderer

These are the real runtime dependencies declared for this renderer. The product itself is not presented as a package until a published package exists.

npm install three^0.185.1 @react-three/fiber^9.7.0

Product contract

Renderer
threejs
Version
Not published
Preview
live
Controls
0 authored controls
Source
kinetic-type

Usage

Use the authored product, not a screenshot

This product is rendered as a live Three.js scene. The preview and exported source are driven by the same repository definition and renderer contract.

Stored product brief

A kinetic typography hero: the word is rasterised, sampled into a particle cloud and rebuilt in WebGL, then morphs into the next word through a swirl. Cursor repels and twists the particles, a click advances the sequence, and the two accent colours sweep across the word from left to right.

Source integrity

Traceable back to the registry

Registry source

kinetic-type

Public slug

kinetic-type

Renderer

threejs

Published version

Not published

Playground

Code, API, and integration

kinetic-type.tsxTypeScript
import { Canvas, useFrame } from "@react-three/fiber";
import { useRef } from "react";
import type { Group } from "three";

// Kinetic Type — SceneUI 3D export (React Three Fiber)
function Rig({ children }: { children: React.ReactNode }) {
  const ref = useRef<Group>(null);
  useFrame((_, delta) => {
    if (ref.current) ref.current.rotation.y += delta * 0.45 * 1;
  });
  return <group ref={ref} scale={1.000}>{children}</group>;
}

export function KineticType() {
  return (
    <Canvas dpr={[1, 1.5]} camera={{ position: [0, 0, 4], fov: 45 }} style={{ background: "#05060b" }}>
      <ambientLight intensity={0.35} />
      <pointLight position={[3, 3, 3]} intensity={9.0} color="#6ee7ff" />
      <pointLight position={[-3, -2, -2]} intensity={5.1} color="#a78bfa" />
      <Rig>
        {/* Paste the matching JSX for this design from the playground renderer,
            or open it in the editor and copy the live scene. */}
      </Rig>
    </Canvas>
  );
}

Related

Nearby in the library

More 3d →