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
| Port | Type | Default |
|---|---|---|
| EnableOff passes nothing through: the output is cleared. The eased grid is kept, so switching on again continues where it was. | bool | true |
| 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. | int | 5 |
| RowsCells down, 1–64. Horizontal lines are y0 (top border) … y Rows; points are “x2y1”. | int | 3 |
| Mix0 = the plain grid (no warp at all), 1 = the solved layout. A fader for the whole effect. | float | 1 |
| 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. | int | 0 |
| 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. | float | 0.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. | float | 0.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. | float | 0.1 |
| Randomize0–1: how unevenly the free cells are sized, from the Seed. Pinned cells are not touched; Shuffle draws a new layout. | float | 0 |
| 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. | float | 0 |
| SpeedHow fast the animated sizes drift, in noise cycles per second. Negative runs it backwards. | float | 0.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. | float | 0.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. | int | 1 |
| ShuffleA rising edge (or the Randomize button) moves Seed on by one: a new random layout. | bool | false |
| InterpolationStraight: cells are quads with straight edges. Curved: the lines pass smoothly through the points (Catmull-Rom) — an organic, liquid grid. | int | 0 |
| 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. | int | 1 |
| Show GridDraws the grid lines and points into the output — pinned points in orange. Part of the picture: switch it off for the show. | bool | false |
| 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. | bool | false |
| 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. | bool | false |
| ResetA rising edge (or the Clear Pins button) lets every mouse-pinned point go. Pins from the Control input are not affected. | bool | false |
Outputs
| Port | Type |
|---|---|
| ImageThe picture that is cut into cells: a camera, a video, any generator or filter. Its alpha is kept. | image |
| Width | float |
| Height | float |
| Points | structure |
| Cells | json |
| Lines | structure |
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.