Warp Geometry
Warp geometry corrects the shape of a projector's output so the projected image fits the physical surface. A projector emits light through a lens onto a notional projection plane, a flat rectangle at the projector's working distance. If the real surface is curved, angled, or otherwise different from that plane, the projected image hits it unevenly and looks distorted. Warp pre-distorts the rendered pixels to compensate, so straight lines stay straight and content fits the surface as intended.
Warp applies to projection only. LED walls and panels emit light directly from each pixel, so there is no projection-plane mismatch to compensate for. Warp is not useful on LED outputs.
Every display in WATCHOUT — GPU, SDI, ST 2110, NDI®, or Virtual — has its own geometry field that holds an independent warp mesh.
When Warp Geometry Is Needed
Warp geometry is used whenever the real projection surface or projector alignment is not a perfect rectangle. Common scenarios:
- Curved projection screens. Surfaces that follow an arc or compound curve need pixel repositioning so that straight lines in the content stay visually straight on the surface.
- Imperfect projector mounting. When a projector cannot be aimed perpendicular to the screen, the projected image is trapezoidal or skewed. Warp corrects this without physical re-mounting.
- Non-rectangular targets. Scenic facades, architectural surfaces, and stage set pieces that do not have standard rectangular proportions.
- Multi-projector blends. In edge-blended setups, warp aligns adjacent projectors at their overlap boundaries so the combined image looks seamless.
- Domes and immersive surfaces. Environments where content must wrap around the viewer need significant pixel remapping to maintain correct geometry.
- Transport and re-rigging. After a show moves between venues or projectors are re-positioned, warp corrections can be updated to match the new physical alignment without re-authoring content.
The normal workflow is to do as much mechanical alignment as possible first, then use warp geometry to correct what remains.
How Warp Geometry Works
The warp mesh is a grid of junction points that defines how pixels are repositioned across the display output. A junction is a Bézier control point where a mesh row and a mesh column cross. Because two curves meet there, it carries four handles — one toward each neighboring junction — that shape the curve on every side. Each junction has a source position (where the pixel comes from in the rendered content) and a destination position (where it should appear on the display surface). Between junctions, the mesh interpolates smoothly along Bézier curves, producing continuous distortion without visible seams.
In its default state, every junction sits at its neutral position and no correction is applied. When you move a junction away from its neutral position, the mesh stretches, compresses, or curves the image in that region to match the physical surface.
The density of the mesh — how many rows and columns of junctions it contains — controls how much local detail you can correct. A coarse mesh (2×2, four corners) handles global keystoning. A finer mesh corrects curved or irregular surfaces locally.
Opening the Warp Editor
Select one or more displays in the Devices window, right-click and choose Edit Display Warp. The warp editor opens in its own window.
Warp is also enabled and disabled per display from Device Properties → Warp → General:
- Enabled — turns warp on or off for the display.
- Show Warp Points on Display — overlays the warp mesh grid on the actual projected output. Useful when working with a test pattern to align the mesh against the physical surface.
Setting the Mesh Density
The Warp → Split section of Device Properties controls how the mesh is set up:
| Control | Action |
|---|---|
| Preset dropdown | Picks one of the four named presets, or Custom when rows and columns don't match a preset. |
| Rows / Columns number inputs | Type a row or column count directly. Range is 2 to 17 for each axis. |
| Add Splits button | Doubles the cell count by inserting new rows and columns into the existing mesh, preserving existing junction positions and curves. Click again to double again. |
| Initialize button | Applies the chosen rows × columns and resets the mesh to a uniform grid. Existing edits are lost. |
Add Splits is the non-destructive way to refine a mesh once you have started editing it. Initialize is the destructive reset.
Built-in Presets
| Preset | Grid | Typical Use |
|---|---|---|
| 2x2 | 2 × 2 (4 corner points) | Basic keystoning, flat surfaces with minor alignment errors. |
| Horizontal 3x2 | 3 columns × 2 rows | Wide-format screens with horizontal curvature. |
| Vertical 2x3 | 2 columns × 3 rows | Tall screens or projectors with vertical offset. |
| 3x3 | 3 × 3 (9 points) | General-purpose mesh for curved surfaces. |
| Custom | Any rows × columns | Shown automatically when the row/column counts don't match a named preset. |
Editing Junction Points
When a junction is selected, Device Properties → Point exposes its full set of editable fields.
- Initial Position (X / Y) — the source location of the junction in the un-warped output, in pixels. Changing these moves the junction's source point: what was at (X, Y) in the rendered content is now mapped to the destination position.
- Offset (X / Y) — the warped displacement of the junction from its initial position, in pixels. This is what you typically drag in the editor.
A 4-way direction selector (Right / Up / Left / Down radio buttons arranged in a cross) picks which Bézier handle of the junction you are editing. Once a direction is selected, three controls become available:
- Length — distance from the junction to the Bézier control point, in pixels.
- Angle — direction of the handle, in degrees.
- Distribution — slider from 0 to 1000. Controls how the source texture maps along the curve between this junction and its neighbor. The middle of the slider gives a linear mapping; pulling either way stretches or compresses the texture along the curve.
- Smooth junction — when on, dragging one Bézier handle automatically rotates the opposite handle to keep the curve through the junction kink-free. Corner junctions (the four mesh corners) don't expose this toggle.
Advanced Settings
Device Properties → Warp → Advanced has two checkboxes:
- Enable Perspective Correction — applies perspective-correct interpolation across the mesh instead of plain bilinear. Reduces texture swimming on steep projector angles.
- Use Corner Shapes — gives the four corner junctions short Bézier handles so you can shape the corners as curves. When off, corner handles have length zero and can't be dragged.
Adding and Removing Junctions
Ctrl + Click anywhere on the mesh inserts a new junction at that position. The adjacent curves are split to keep the overall shape.
Select a junction (or several) and press Delete to remove them. Junctions at the four mesh corners cannot be removed.
Multi-selection, Move, and Transform
Drag a rubber band across multiple junctions to select them. With a multi-selection you can:
- Move every selected junction by the same offset by dragging.
- Rotate or scale the selection around its center via a transform gizmo. Useful for nudging a whole row, column, or block of the mesh as a unit before refining individual junctions.
Copy and Paste
A complete warp mesh can be copied from one display and pasted into another using Ctrl + C and Ctrl + V. The pasted mesh replaces the target display's geometry, including all junction positions, handles, and distributions. Useful when several projectors point at similar surfaces and one is calibrated first.
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
| Arrow keys | Nudge the selected junction by 1 pixel in the arrow direction. When a specific Bézier handle is the active control point, the arrow keys nudge that handle's offset instead. |
| Shift + Arrow keys | Nudge by 10 pixels. |
| + / − | Increase or decrease the active handle's distribution. |
| Ctrl + Click on mesh | Insert a new junction at the click position. |
| Delete | Remove the selected junction(s). |
| Ctrl + C / Ctrl + V | Copy a warp mesh between displays. |
Defaults for New Warp Points
Edit → Preferences → Warp has two settings that affect new warp points as they are created:
- New Warp Handles Should Have Fixed Length — when on, newly inserted junctions get Bézier handles of a specific pixel length (the Handle Length value field below). When off, handles start at length zero.
- New Warp Points Should be Smooth — when on, newly inserted junctions have their Smooth junction toggle enabled by default.
These defaults only affect newly created points; existing junctions keep whatever they had.
Relationship to Edge Blending and Masks
Warp geometry works alongside Edge Blending and Display Masks to produce the final output:
- Warp corrects surface geometry, making the image fit the physical shape.
- Masks shape the visible boundary, hiding spill, defining blend zones, and cutting output to scenic limits.
- Edge blending (automatic soft edges) feathers brightness in overlap regions between adjacent displays.
As a general rule: get the warp geometry correct first, then apply masks and edge blending. Masks live in the display's screen space and stay locked to the rendered content through the warp. Adjusting the warp later does not shift the mask relative to the content.
For a complete guide to mask editing, built-in mask types, mask images, gamma correction, and automatic soft edges, see Display Masks.
Recommended Workflow
- Complete physical alignment first. Mount and aim projectors as accurately as possible mechanically. The less correction warp has to do, the better the image quality.
- Choose a starting density. Load a 2x2 mesh for simple keystoning, or 3x3 for curved surfaces. Use Custom or the Rows/Columns inputs for non-standard densities.
- Apply coarse corrections. Move corner and edge junctions to roughly align the projected image with the physical surface. Work from large corrections to small.
- Densify where needed. Click Add Splits to double the mesh resolution in regions that need finer control, or Ctrl + Click on a single edge to add one junction.
- Refine with Bézier handles. Adjust handle Length, Angle, and Distribution to smooth out curves between junctions. Enable Perspective Correction if the projector angle is steep, and Use Corner Shapes if the surface has rounded corners.
- Check edge continuity. For multi-projector setups, verify that adjacent warp meshes produce continuous straight lines across the boundary.
- Re-check with representative content. Play back actual show media at final brightness to confirm the corrections hold under real conditions.
Quality Control
Validate warp geometry using:
- Grid test patterns — reveal mesh distortion by showing evenly spaced lines across the entire display. Misalignment appears as bent or unevenly spaced grid lines.
- Straight-line graphics — horizontal and vertical lines that span the full output are especially sensitive to warp errors, particularly at mesh boundaries and junction transitions.
- Real show media at final brightness — small geometry errors that are invisible with test patterns can become obvious once high-contrast or motion content plays back.
Use the display's Test Pattern mode to switch between Pattern (full pipeline including warp and mask), Masked (warp and mask, white field), and White (raw output, bypassing warp and mask). See Test Patterns.
Keep warp and geometry edits versioned like any other critical show state. After transport, re-rigging, or lamp and lens changes, revisit the warp mesh and fine-tune rather than starting from scratch.
NDI® is a registered trademark of Vizrt NDI AB.