Ripple Zoom

Fly the camera through the center of grainy ripple rings while the next scene approaches from the depth

Installation
$ pnpm dlx shadcn@latest add @remocn/ripple-zoom

Usage

rippleZoom() is a Remotion transition presentation. Pass it to a TransitionSeries.Transition between two sequences. The outgoing scene blows past the camera, a grain-gradient ripple field opens up, and the camera dives through the center of the rings — the field magnifies toward zoom while the incoming scene counter-scales up from the depth, so the two motions read as one continuous dolly onto the new scene. Keep the incoming scene transparent so it lands on the ripple field. Give the flight enough frames to read (88 works well).

tsx
import { TransitionSeries, linearTiming } from "@remotion/transitions";
import { rippleZoom } from "@/components/remocn/ripple-zoom";
 
export const MyVideo = () => (
  <TransitionSeries>
    <TransitionSeries.Sequence durationInFrames={102}>
      <SceneA />
    </TransitionSeries.Sequence>
    <TransitionSeries.Transition
      timing={linearTiming({ durationInFrames: 88 })}
      presentation={rippleZoom()}
    />
    <TransitionSeries.Sequence durationInFrames={102}>
      <SceneB />
    </TransitionSeries.Sequence>
  </TransitionSeries>
);

Props

rippleZoom(props) accepts:

PropTypeDefault
colors
string[]["#3a3a52", "#4a4a68", "#8f88ae"]

Colors of the ripple rings.

colorBack
string"#141318"

Backdrop color between the rings. Match it to the scene backgrounds for a seamless dive.

intensity
number0.5

Distortion strength of the ripple rings.

softness
number0.5

Blending softness between the ring colors.

noise
number0.5

Amount of per-pixel grain over the rings.

zoom
number4

Final magnification of the ripple field — how deep the camera dives through the rings.

speed
number1

Shader animation speed of the rings.

  • colorsstring[]

    Colors of the ripple rings.

    Default["#3a3a52", "#4a4a68", "#8f88ae"]

  • colorBackstring

    Backdrop color between the rings. Match it to the scene backgrounds for a seamless dive.

    Default"#141318"

  • intensitynumber

    Distortion strength of the ripple rings.

    Default0.5

  • softnessnumber

    Blending softness between the ring colors.

    Default0.5

  • noisenumber

    Amount of per-pixel grain over the rings.

    Default0.5

  • zoomnumber

    Final magnification of the ripple field — how deep the camera dives through the rings.

    Default4

  • speednumber

    Shader animation speed of the rings.

    Default1