TouchDesigner Intermediate Article 6

Multi-Output & Projection Mapping in TouchDesigner

Configure multiple display outputs, edge-blend overlapping projectors with the Stoner TOP, and perform projection mapping using Camschnappr and the Warp TOP.

⏱ 24 min projection-mapping multi-output stoner display

Projection mapping and multi-display output are two of the most common reasons people choose TouchDesigner for live production. Whether you are soft-edge blending two projectors for a panoramic canvas, corner-pinning content onto architectural surfaces, or managing four simultaneous outputs from a single machine, the signal flow follows a consistent pattern once you understand the core operators.

Multiple Window COMPs

A Window COMP represents one physical display output. Add as many as you have connected displays (monitors or projectors). Each Window COMP has:

  • Monitor — the display index (0, 1, 2, …) from the OS’s display arrangement
  • Borders — disable for full-screen presentation
  • Pixel Format — match to the projector’s native format

Connect a different TOP to each Window COMP’s input. The operator itself is not renderable — it is a display output, not a composition target. The typical flow is:

render1 (Render TOP, 3840x1080)
  └─→ crop_left  (Crop TOP, 0–1920px) → window1 (Window COMP, Monitor 1)
  └─→ crop_right (Crop TOP, 1920–3840px) → window2 (Window COMP, Monitor 2)

Use Select TOP instead of Crop when you want to reference a named region rather than pixel coordinates.

Canvas COMP

The Canvas COMP provides a virtual canvas that maps multiple outputs spatially. You define each output’s position and size on the canvas, then connect displays. This is useful when you want to think in “total canvas” coordinates (e.g. a 10,000 × 2,000 pixel virtual space) and have TD handle the cropping per output. Add a Canvas COMP from the Op Palette, set Canvas Size, and add output blocks for each projector or display.

Stoner TOP: Soft-Edge Blending

Soft-edge blending compensates for the overlap region where two projectors share the same physical surface. The Stoner TOP (available in the Palette under Tools > Stoner) handles this automatically.

Add a Stoner TOP from the Palette (it is a Container COMP internally). Configure:

  • Number of Projectors — set to 2 for a two-projector setup
  • Total Resolution — the combined canvas resolution (e.g. 3840×1080 for two 1920×1080 projectors with no overlap; 3640×1080 for 300-pixel overlap on each side)
  • Overlap — the pixel width of the shared region on each edge

The Stoner TOP applies a gamma-correct falloff curve across the blend region so the brightness matches in the overlap. Wire your rendered content into its input, and take its two output channels to two Window COMPs.

Gamma correction matters: projectors are non-linear devices. The Stoner TOP’s blend curve is designed around a gamma of 2.2. If your projectors have different gamma settings, calibrate them to match before blending, or adjust the Stoner’s blend curve parameter.

Camschnappr: Free Projection Mapping Component

Camschnappr is a freely available TouchDesigner component by Derivative for basic projection mapping. Download it from the TouchDesigner Forum. It uses a camera-based calibration workflow:

  1. Point a calibration camera at the projection surface.
  2. Display Camschnappr’s calibration grid on the projector.
  3. In Camschnappr’s UI, match the grid corners between the camera view and the projected view.
  4. Camschnappr computes a homography and bakes the warp.

For simpler setups without a calibration camera, use corner-pinning directly.

Warp TOP: Corner-Pin and Mesh Warp

The Warp TOP applies geometric distortion to a TOP. Under its parameters:

Corner Pin mode:

  • Drag the four corner handles in the Warp TOP viewer to match the projection corners on your physical surface.
  • The output is the input TOP, warped so it fills the irregular quadrilateral.
render1 → warp1 (Warp TOP, Corner Pin) → window1 (Window COMP)

Mesh Warp mode:

  • Define a grid resolution (e.g. 10×10 control points).
  • Drag individual grid points to compensate for surface irregularities (curved screens, architectural protrusions).
  • Export the mesh warp data to a file for recall.

For complex irregular surfaces — a building facade, a sculpture — build a 3D mesh in a SOP that matches the surface shape, then use a 3D Projection Render setup where the geometry IS the surface.

Screen Geometry for Irregular Surfaces

When projecting onto a non-flat surface, the most accurate approach is to model the surface in SOPs and render your content projected onto it:

  1. Build the surface mesh in a Poly SOP or import from an OBJ.
  2. UV-unwrap the mesh so UV coordinates correspond to your content layout.
  3. Assign a Phong MAT (or custom GLSL MAT) with your content TOP as the diffuse texture.
  4. Render with an orthographic or perspective Camera COMP positioned at the projector’s physical location.
  5. The rendered image is pre-warped to compensate for the surface, and displays correctly when projected.

Calibrating Brightness Across Projectors

Even identical projector models vary in lumen output. Measure each projector’s brightness in the overlap region with a light meter, then apply a Level TOP (or Brightness/Contrast in a Math COMP) per channel to normalize them. Reduce the brighter projector rather than boosting the darker one — boosting crushes the blend curve.

Full Example: Two-Projector Panoramic Setup

Goal: Two 1920×1080 projectors, 300-pixel horizontal overlap, single rendered scene.

Signal flow:

render1 (Render TOP, 3540×1080)
  └─→ stoner1 (Stoner COMP)
        ├─→ out0 → level_left (Level TOP, brightness trim) → warp_left (Warp TOP) → window1
        └─→ out1 → level_right (Level TOP, brightness trim) → warp_right (Warp TOP) → window2

Stoner1 settings:

  • Number of Projectors: 2
  • Input Resolution: 3540×1080
  • Left Projector Output: 1920×1080 (with 300px overlap region)
  • Right Projector Output: 1920×1080 (with 300px overlap region)
  • Blend Curve: Gamma 2.2, Smooth

Warp LEFT and RIGHT settings:

  • Mode: Corner Pin
  • Adjust corners to match the physical surface edges of each projector’s throw

Testing: Before the event, project the Stoner’s built-in test pattern (a checkerboard with numbered regions). Check that the overlap region appears seamless and the centre brightness matches the edges. Fine-tune the Level TOPs if needed.

Python for Output Management

You can programmatically switch which scene is shown on which display using Python:

def switch_scene(scene_name):
    scenes = ['scene_intro', 'scene_main', 'scene_outro']
    
    for name in scenes:
        op(name).par.display = 1 if name == scene_name else 0
    
    # Redirect window COMP to active scene
    op('window1').par.top = scene_name + '_out'

# Called from a keyboard shortcut or OSC
switch_scene('scene_main')

Combine with a Blend TOP and a Lag CHOP-driven mix parameter for crossfade transitions between scenes without a frame cut.