Beamer¶
A Beamer represents a real world projector inside SPARCK's 3D space.
It has a calibration mode to find the orientation and lense properties (extrinsic and intrinsic transformations) of the projector.
It uses the opencv calibrateCamera() method to calculate the tranformation and projection matrix of a projector.
For this to work the node needs a calibration model (3D object) and a set of manually set calibration vertices that correspond to points on the calibration model.
Tutorial: Beamer Calibration
The Tutorial Beamer Calibration walks you through the calibration process step-by-step.

Fun Fact
Beamer is another word for projector, mainly used in German-speaking countries - and apparently in Australia as well. The reason for this choice of name is to distinguish it from the real world projector hardware of which it is its virtual representation. And also to distinguish it from the TextureProjectory shader that also does a projection, though a purely virtual one.
Beamer vs TextureProjectory
The Beamer node represents a physical projector that outputs to real-world displays. In contrast, the TextureProjectory shader projects textures virtually onto 3D surfaces within the scene — useful for techniques like virtual projection mapping or texture baking. Both can work together in complex setups.
Reference¶
The following properties can be configured for this node:
| Property | Type | Description |
|---|---|---|
parent |
Reference | Reference to parent transformation node |
calibfile |
File | Select the transformation RIG. The file needs to be located inside the ~/_assets/_projectors folder |
calibrate |
Button | Opens the calibration editor |
dimensions |
Size | Sets the texture size of this render pass |
bgcolor |
Color | The background color |
stereo |
Boolean | Creates two renderpasses for each stereo texture |
blend |
Boolean | Enables blending |
antialias |
Boolean | Enables antialiasing |
identify |
Boolean | Use the calibration-color as background color |
gizmo |
Integer | Set the render group to draw the gizmo to |
| Inlet | Type | Description |
|---|---|---|
| properties | properties | properties | use message [set <propertyPath> <value(s)>] (without node/<nodeName> at the beginning) to set internal properties |
| background | texture | background texture for camera calibration. Instead of setting the calibration vertices on real world targets, you can set the calibration vertices on the camera feed targets. The result is the same: Beamer node evaluates the video camera's intrinsic and extrinsic parameters. |
| custom | message | custom commands. message 'createToXY' creates a new model with calibration vertices relative to the XY-plane: 'createToXY x1 y1 z1 x2 y2 z2 x3 y3 z3 ...'. | message 'addToXY' adds calibration vertices relative to the XY-plane: 'addToXY x1 y1 z1 x2 y2 z2 x3 y3 z3 ...' |
| Outlet | Type | Description |
|---|---|---|
| captured | texture | captured texture (left if stereo) |
| captured | warping | captured texture (right if stereo) |
| dump | message | dump (transform, frustum) |
Calibration¶
Calibration Settings
The calibration window provides advanced configuration options for projector calibration:
| Parameter | Type | Description |
|---|---|---|
Color |
Color | Identifies the Beamer/Calibrator in the 3DViewer |
Model |
File | Calibration model. Needs to be of type Wavefront OBJ |
use Model transformation |
Toggle | Additional transformations on the calibration model to place it correctly to the world reference |
implement parent transformation |
Toggle | You can calibrate the beamer while attached to a mocap rigidbody that is referenced by the parent transformation node |
focus editor |
Button | Opens the editor window and focuses it to this calibration |
gather 3DViewer lookat |
Button | Takes the current 3DViewer point of view and applies it as a temporary solution |
display.. |
Button | Opens the display window to select the display the projector is currently connected to |
width |
Integer [px] | Projector resolution width |
height |
Integer [px] | Projector resolution height |
enable calibration |
Toggle | Enables the calibration button. Only enable once the correct resolution is set |
show/hide |
Button | Shows / hides calibration flags |
frustum |
Display | Shows the solution's frustum |
transformation |
Matrix | Shows the solution's transformation matrix |
reset |
Button | Resets values |
save and close |
Button | Saves the solution and closes the calibration window |
Calibration with Motion Capture
If you're calibrating while the projector is attached to a motion capture rigid body, enable implement parent transformation. This automatically calculates the local transformation offset from the rigid body to the projector's lens position.
Editor Keyboard Shortcuts
The Beamer calibration editor has three main modes for setting up projector calibration:
- Model Mode - for selecting points on the 3D calibration model
- Target Mode - for positioning corresponding points in the projector's output
- Warp Mode - for creating and adjusting warp mesh vertices
- Press Tab to switch between modes
General Controls (All Modes):
| Key | Action |
|---|---|
| Tab | Switch between Model, Target, and Warp modes |
| H | Toggle help overlay |
| Shift+H | Change help overlay color |
| K | Toggle visibility of calibration results |
| L | Toggle visibility of labels |
Model Mode (No Selection):
| Key | Action |
|---|---|
| Select model vertex | |
| S | Save calibration |
| P | Purge calibration (requires confirmation) |
| J | Adjust ALL targets to warp or model vertices |
Model Mode (Vertex Selected):
| Key | Action |
|---|---|
| V | Create calibration vertex (both target and warp) |
| W | Create warp vertex linked to model vertex |
| T | Create target vertex linked to model vertex |
| X | Delete calibration vertex |
Target Mode (Vertex Selected):
| Key | Action |
|---|---|
| J | Adjust selected to warp or model vertex |
| W | Add warp vertex linked to model vertex |
| X | Remove target vertex |
| G | Grab vertex with mouse (click to confirm) |
| Up Down Left Right | Move vertex with arrow keys |
| C | Toggle crosshair mode |
| O | Toggle visibility of calibration object |
Target Mode (Adjust Vertex Submode):
| Key | Action |
|---|---|
| M | Adjust to model vertex |
| W | Adjust to warp vertex |
| Esc | Exit adjust mode |
Warp Mode (No Selection):
| Key | Action |
|---|---|
| Select warp vertex | |
| J | Adjust all to target or model vertices |
| W | Create unlinked warp vertex |
| S | Save warp object |
| F | Enter frame subdivision mode |
| D | Enter warp subdivision mode |
Warp Mode (Vertex Selected):
| Key | Action |
|---|---|
| Select second vertex (for subdivision line) | |
| J | Adjust to target or model vertex |
| T | Add target vertex linked to model vertex |
| X | Remove warp vertex |
| G | Grab and move vertex with mouse (click to confirm) |
| Up Down Left Right | Move vertex with arrow keys |
| 0 - 9 | Create subdivision line between two selected warp vertices |
Warp Mode (Adjust Vertex Submode):
| Key | Action |
|---|---|
| M | Adjust to model vertex |
| T | Adjust to target vertex |
| Esc | Exit adjust mode |
Warp Mode (Frame Subdivision Submode):
| Key | Action |
|---|---|
| 0 - 9 | Set frame subdivision value |
| Esc | Exit frame subdivision mode |
Warp Mode (Warp Subdivision Submode):
| Key | Action |
|---|---|
| 0 - 5 | Set warp subdivision (only 2 are displayed) |
| Esc | Exit warp subdivision mode |
Model Mode (Purge Confirmation):
| Key | Action |
|---|---|
| Y | Confirm purge calibration |
| Esc | Cancel purge operation |
Save Your Work
Calibration data is saved when you press S in Model mode or when you click save and close in the calibration window. Make sure to save regularly during the calibration process.
Calibration using createToXY and addToXY¶
You can create calibration targets directly from the Beamer node using the createToXY and addToXY messages using the custom inlet.
This will create calibration targets relative to the XY-plane of the Beamer node and avoids the need for a calibration model.
This apprioach is usefull when the calibration has to happen in a space that provides tracking vertices in world space, e.g. using motion capture markers as calibration targets. The OptiiTrack node provides the 3D positions of the markers in world space that can be used as calibration targets:
Example patcher to create calibration targets. The OptiTrack node provides the 3D positions of the mocap markers in world space from the 'dump' outlet, filtering for '/om' (other markers - markers not assigned to a rigidbody). This list is then prepended with the 'createToXY' message and sent to the Beamer's custom inlet.
This results in the following calibration targets:
Multi-Projector Setups¶
Soft-Edge Blending with Multiple Beamers
When using multiple Beamer nodes for overlapping projections, use the SpatialShadery shader to automatically compute per-projector pixel visibility and brightness. This produces smooth soft-edge blending across all projectors — essential for Spatial Augmented Reality installations.
Key parameters for multi-projector blending:
- spread: Controls the distribution of pixel blending between overlapping projections (0 = no spread, 1 = full spread)
- distance: Additional differentiator based on distance from projector
- power: Controls the soft-edge blending power
- luminance: Adjusts brightness balance between projectors
Identify Mode for Debugging
Enable the identify toggle on each Beamer to display a unique calibration color as the background. This helps visually identify which projector is outputting to which display — particularly useful when configuring multi-projector setups in the Window node's display settings.
Important Notes¶
Known Issues
- On Windows systems, the calibrattion is not working when max's gfxengine is set to its default setting 'glcore'. The node will respond with a warnning message and ask to switch to 'gl2'. This will require a restart of max. Save your work before switching.
Calibration Requirements
- Calibration files must be saved before the calibration button becomes active
- All calibration files are stored in
~/_assets/_projectors - Ensure the correct projector resolution is set before enabling calibration
- The calibration process requires a calibration model in OBJ format that represents the real world object against which the projector is calibrated and referenced to.
File Locations
Render Pipeline
The Beamer node operates in a dedicated Beamer Render Pass (#28 in the SPARCK render pipeline). This ensures that Beamer captures occur after main render passes but before the final preview pass. See Render Groups & Passes for details on render ordering.
-
Quick Start
Get started with Beamer in minutes
-
Complementing Beamer
-
Tutorials
-
Community
Need help or want to suggest improvements?
Last updated: 2024-12-01 | Edit this page on GitHub