racer home

Projector distortion editing


Home Bend the rules.

Dolphinity Organiser - free planning, project management and organizing software for all your action lists


Racer can be used to project onto curved surfaces. For this purpose, you need Cg support (most graphics cards will support this). You won't normally use this on stand-alone Racer installations; it is only available for licensed users.

Racer uses a distortion texture to be able to map each pixel to a new location. This distortion texture is generated using a spline-based grid of 5x5 control points. Dragging each control point will modify the pixels in its surrounding. Therefore, this method can easily handle a lot of surfaces without needing to do too much work to match up the projector signals. However, for perfectly spherical surfaces, this method may be less than perfect.

Distortion normally works in sync with edge blending; that part deals with overlapping multiple projectors and smooth transitions from one projector to the next. Light isn't linear, so it's more tricky than just a linear blend.

To begin distortion editing, setup your installation as follows:

Available distortion Cg shaders

Distortion shaders are located in data/renderer/fullscreen_shaders_hdr and are the following:

Ini settings in detail

Distortion is controlled in racer.ini.

Parameter Description
renderer.motion_blur.distorter.enable Enable distortion (generates distortion texture upon program start, which is used by the fullscreen shaders described above)
renderer.motion_blur.distorter.auto_edit Enter edit mode at startup? (v0.8.5+) (0=no, 1=yes)
renderer.motion_blur.distorter.init_testpattern Initial test pattern; 0=none, 1=colored grid, 2=crosshairs
renderer.motion_blur.distorter.points_alpha Alpha value of control points. Normally 1.0, but these may be set lower when used to drive with the crosshairs on (also set auto_edit to 1 in that case).
renderer.motion_blur.distorter.texture_size Size of the distortion texture. Normally, use 1024. This may need to change as you change resolutions.
renderer.motion_blur.distorter.control_point_<xy> 2D coordinate of the control points (5x5 grid, so 25 in total). These are normalized values, ranging from around 0..1. Some control points will be outside of the view, so can have values slightly outside the 0..1 range. Normally these values are written during distorter edit sessions (the console command 'distort edit'), and not filled in by a user.


Editing distortion

To enter distortion mode, enter the script command 'distort edit'.

Control (key) Description
[, ] Select control points. The selected point will be highlighted in white.
Left/right/up/down Move control point (it's possible and needed to move some control points offscreen, so using the mouse to point & drag will not work for the outermost grid points).
Space Toggle test patterns; none, colored grid and crosshairs. The crosshairs are useful to detect movements while enabling driving (the colored grid is too obvious so driving while it's enabled isn't possible). To enable the crosshair pattern at program start, set renderer.motion_blur.distorter.auto_edit to 1 and renderer.motion_blur.distorter.init_testpattern to 2. Furthermore, set renderer.motion_blur.distorter.points_alpha to 0 or a value near 0 (to hide the control points).
Ctrl-Up/Ctrl-Down Modifies test pattern alpha (transparency)
R Reset control points (covering the entire screen)
Ctrl-S Save settings. This saves the control point locations in racer.ini.

Stop editing

PageUp/PageDown Modify control point alpha (transparency)
Mouse wheel Edit gamma value. Normally, use a value around 2, which seems to work best.
Control key+mouse wheel Edit edge blend 'p' value. That values is used in the edge blend curve. Normally best left at 1.


Dolphinity Organiser - free planning, project management and organizing software for all your action lists

(last updated November 13, 2012 )