RemotionUI

Liquid Warp

A liquid displacement warp that stirs one scene into the next.

PrimitiveTransitionsAdvanced

transition-liquid-warp30fps · 960×540
Install
$ npx remotion-ui@latest add transition-liquid-warp

A turbulence field displaces the frame hardest in the middle of the cut and is exactly zero at both ends, so a settled scene carries no filter at all. The default frequency of 0.006 gives large, slow lobes that read as liquid; the core's higher default reads as sand at 30 fps, and anything above about 0.02 reads as noise rather than as a warp.

A warp on its own never reveals anything: the frame is still the old scene, just stirred, so the arriving scene dissolves onto the outgoing one underneath. Only the arriving scene fades: ramping both at once leaves two half-transparent layers and the page background flashes through the middle of the cut.

churn is how much the noise field re-seeds across the cut. 0 holds one static field and reads as a lens; the default boils. affect chooses whether both scenes warp or only the arriving one.

scaleRatio is the peak displacement as a fraction of the frame's short axis, not an absolute pixel count: the same absolute displacement is a quarter of a 540px stage and a fourteenth of a 1080p one, so a pixel value silently makes the effect a different strength at every composition size. The filtered layer is scaled up by frameSize / (frameSize - 2 x drag) so the transparent border the displacement drags in from outside the layer stays off screen. Adding drag pixels of height is not enough, because the scale-up moves the contaminated band outward too.

This is a configuration of the shared displacement presentation: the turbulence channel with no mask.

Exports transitionLiquidWarp() and getTransitionLiquidWarpDuration() for use with TransitionSeries.Transition.

Requires @remotion/transitions. Run npx remotion add @remotion/transitions if not already installed.

Configuration of the shared displacement presentation: the turbulence channel with no mask.

Agent notes

Install first, then import the copied source component locally. AI guide →

Import
@/remotion/primitives/transition-liquid-warp
  • Use when: scene transitions and composition pacing.
  • Customize: durationInFrames, scaleRatio, frequency, octaves, plus copied source for timing, layout, colors, and typography.
  • Rule: do not import this component from the remotion-ui npm package; it is copied into your project.

Usage

Example
import { transitionLiquidWarp } from "@/remotion/primitives/transition-liquid-warp"; <TransitionSeries.Transition {...transitionLiquidWarp({ scaleRatio: 0.12 })} />

API Reference

PropTypeDescription
durationInFramesnumberTransition overlap length. Long enough for the field to boil.
scaleRationumberPeak displacement at the middle of the cut, as a fraction of the frame's short axis. Frame-relative so the warp reads the same at any composition size.
frequencynumberTurbulence base frequency. Below 0.004 reads as a lens, above 0.02 as noise.
octavesnumberTurbulence octaves. Above 3 costs a lot and adds almost nothing.
churnnumberHow much the noise field re-seeds across the cut. 0 holds one static lens.
blurnumberPeak blur in px, on the same curve as the displacement.
seednumberTurbulence seed.
affect"both" | "entering"Warp both scenes, or only the arriving one.
variant"linear" | "spring" | "editorial"Timing curve.

On this page