Filter node

Grid Warp

Cuts any picture into Columns × Rows cells and lets you pin any cell, grid line or point to a place and a size through the Control input (JSON) — every other cell gives way, squeezed or stretched, so the whole picture is still there. A pinned cell keeps its natural size unless told otherwise: cable a tracked face in as {“at”: [x, y]} and the face stays undistorted while the room around it warps. Ids: cells “2,1” (column, row), lines “x2” / “y1”, points “x2y1” — Show IDs writes them into the picture. Conflict says what happens when pins cannot all be met: they meet in the middle, the higher priority wins, or whole columns and rows change places. Randomize and Animate keep the free cells alive; Curved bends the lines; Interactive lets you drag any point in the Render View. Points, Cells and Lines go out for particles, text and lines to follow.

Inputs

PortTypeDefault
EnableOff passes nothing through: the output is cleared. The eased grid is kept, so switching on again continues where it was.booltrue
ImageThe picture that is cut into cells: a camera, a video, any generator or filter. Its alpha is kept.image—
ControlJSON pins: one object, a list, or a dictionary keyed by id. {“cell”: “2,1”, “x”: 0.3, “width”: 0.6} pins a cell (Grafit units; missing size = natural). {“at”: [x, y]} keeps the cell under a point undistorted. Lines “x2” / “y1”, points “x2y1”, column, row; also priority, alpha, color, source, scale.json—
ColumnsCells across, 1–64. Cell ids are “column,row” counted from the top-left, 0-based; vertical lines are x0 (left border) … x Columns.int5
RowsCells down, 1–64. Horizontal lines are y0 (top border) … y Rows; points are “x2y1”.int3
Mix0 = the plain grid (no warp at all), 1 = the solved layout. A fader for the whole effect.float1
ConflictWhat happens when pins cannot all be met. Squeeze: they meet in the middle, weighted by priority. Priority: the higher priority (then the first listed) is exact, the other is clamped next to it. Reorder: pinned columns and rows may pass each other — the picture’s strips change places.int0
StiffnessHow far a pinned cell’s push reaches into neighbouring rows and columns. 0 bends only the cell’s own two lines (a bump in the grid), 1 moves the whole column and row (the grid stays rectilinear). 0.5 is a soft cushion.float0.5
EaseSeconds every point takes to reach its place — pins appearing and leaving, a tracked point crossing into the next cell, all without a jump. 0 = instant.float0.15
Min CellThe share of its natural size a cell may never shrink below, 0–0.95. Keeps squeezed cells from vanishing into a line.float0.1
Randomize0–1: how unevenly the free cells are sized, from the Seed. Pinned cells are not touched; Shuffle draws a new layout.float0
Animate0–1: the free cells breathe — their sizes drift with smooth noise at Speed. Cells a control pins hold still while the rest keep moving.float0
SpeedHow fast the animated sizes drift, in noise cycles per second. Negative runs it backwards.float0.2
Bend0 keeps every grid line straight (all rows share one column layout; randomize and animate move whole columns), 1 gives every line its own layout so the lines wave. Pinned cells always bend their neighbours by Stiffness.float0.5
SeedThe random layout’s seed: the same number replays the same grid. Randomize (the button) or a rising edge on Shuffle picks the next one.int1
ShuffleA rising edge (or the Randomize button) moves Seed on by one: a new random layout.boolfalse
InterpolationStraight: cells are quads with straight edges. Curved: the lines pass smoothly through the points (Catmull-Rom) — an organic, liquid grid.int0
AreaWhere the grid lies. Content: over the source’s picture (a 4:3 camera in a 16:9 view gets its grid on the camera picture, not the margins). View: over the whole render view.int1
Show GridDraws the grid lines and points into the output — pinned points in orange. Part of the picture: switch it off for the show.boolfalse
Show IDsWrites every id into the picture: cell ids at the cells’ centres, point ids beside the inner points, line ids x1… along the top and y1… down the left. The map for the Control input.boolfalse
InteractiveLets you drag any inner grid point in the Render View; a dragged point is pinned (saved with the project). Double-click a pinned point to let it go.boolfalse
ResetA rising edge (or the Clear Pins button) lets every mouse-pinned point go. Pins from the Control input are not affected.boolfalse

Outputs

PortType
ImageThe picture that is cut into cells: a camera, a video, any generator or filter. Its alpha is kept.image
Widthfloat
Heightfloat
Pointsstructure
Cellsjson
Linesstructure

Open Grid Warp in the interactive catalog →

Grid Warp is one of 381 nodes in Grafit Pro.

Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.

More Filter nodes