Effector Field
Cinema 4D MoGraph cloner and effectors: clone any element into a grid, radial or linear arrangement and let animatable spherical, linear or noise falloff fields drive each clone. Install with npx remotion-ui@latest add effector-field.
PrimitiveMotion graphicsAdvanced
$ npx remotion-ui@latest add effector-fieldA cloner lays out copies of any element — grid, honeycomb, radial or linear. Fields measure how far inside a region each clone sits, and effectors turn that value into a move toward the camera, a rotation about any axis, a scale, an opacity and a colour. Effectors run in order and sample their fields at each clone's rest position, so one effector pushing clones around never changes which clones the next one selects.
The preview is one grid and three effectors. Two spherical fields travel on expression-driven paths whose period is the clip length, lifting and tinting the floor where they pass; a slow noise field underneath dims and shrinks tiles so it never reads as a flat grid. The crest glow comes from renderClone, which receives each clone's field weight.
| Field | Parameters |
|---|---|
spherical | center, radius, falloff (share of the radius that ramps) |
linear | center, angle, length — rises from 0 to 1 across a plane |
noise | scale, speed, seed, contrast |
Thousands of clones. The default renderer="dom" makes each clone an element, so any React child can be cloned. renderer="canvas" draws cloneShape (square, rounded, circle) on one canvas with the same camera maths — the two match tile for tile — and glow adds a single bloom pass. 5,000 clones at 1080p render at ~80ms per frame on canvas, against ~710ms on the DOM path.
Every field takes invert, strength and a blend mode against the fields before it. Centres, radii and effector values are Animatable — static, keyframed with ae-motion, or an expression.
Usage
import { EffectorField } from "@/remotion/primitives/effector-field";
<EffectorField
layout={{ mode: "grid", columns: 24, rows: 12, spacing: 26 }}
effectors={[
{
fields: [{ shape: "spherical", center: ({ time }) => [Math.cos(time) * 200, 0], radius: 160 }],
position: [0, 0, 120],
rotation: [-60, 0, 0],
scale: 1.5,
color: "#e8b86d",
},
]}
tilt={50}
>
{/* Anything: painted in currentColor */}
<svg viewBox="0 0 10 10" width="100%" height="100%"><circle cx="5" cy="5" r="5" fill="currentColor" /></svg>
</EffectorField>Fields: spherical (center, radius, falloff), linear (center, angle, length), noise (scale, speed, seed, contrast); each with invert, strength and blend. children/renderClone are DOM-only; use renderer="canvas" past ~1,000 clones (5,000 at 1080p render in ~80ms/frame).
Agent notes
Install first, then import the copied source component locally. AI guide →
@/remotion/primitives/effector-field- Use when: After Effects-style motion graphics built from composable, keyframeable operators.
- Customize: layout, effectors, width, height, plus copied source for timing, layout, colors, and typography.
- Rule: do not import this component from the
remotion-uinpm package; it is copied into your project.
Usage
import { EffectorField } from "@/remotion/primitives/effector-field";
<EffectorField
layout={{ mode: "grid", columns: 24, rows: 12, spacing: 26 }}
effectors={[
{
fields: [{ shape: "spherical", center: ({ time }) => [Math.cos(time) * 200, 0], radius: 160 }],
position: [0, 0, 120],
scale: 1.5,
color: "#e8b86d",
},
]}
tilt={50}
/>API Reference
| Prop | Type | Default | Description |
|---|---|---|---|
| layout* | ClonerLayout | - | grid, honeycomb, radial (count, radius, sweep, align) or linear (count, step, rotationStep, scaleStep). |
| effectors | Effector[] | [] | { fields?, position [x,y,z], scale, rotation [x,y,z], opacity, color, strength }, run in order. |
| width | number | 800 | Stage width in px. |
| height | number | 450 | Stage height in px. |
| cloneSize | number | 18 | Size of each clone's box. |
| color | string | "#f4f4f5" | Clone colour before tints; children can use currentColor. |
| children | ReactNode | - | Element to clone, painted in currentColor. Defaults to a rounded tile. |
| renderClone | (clone: CloneRenderState) => ReactNode | - | Per-clone renderer; receives weight, index, u/v and the tinted colour. |
| perspective | number | 1400 | Camera distance for z moves and x/y rotation. |
| tilt | number | 0 | Tilts the cloner plane away from the camera, degrees. |
| renderer | "dom" | "canvas" | "dom" | dom clones any React child; canvas draws cloneShape with the same camera, for thousands of clones. |
| cloneShape | "square" | "rounded" | "circle" | "rounded" | Canvas renderer only: the drawn shape. |
| glow | number | 0 | Canvas renderer only: bloom radius in px at full field weight. |
| frame | number | - | Render this frame instead of the current one. |
Related
Text Animator
After Effects text animator: range and wiggly selectors drive per-character, per-word or per-line position, scale, rotation, opacity, blur, tracking and fill over measured layout. Install with npx remotion-ui@latest add text-animator.
Slit Scan
Slit-scan time displacement: each strip of any child — rows, columns, rings or a gradient map — shows that child at a different moment, deterministically. Install with npx remotion-ui@latest add slit-scan.