Warping Using STMaps

The C_STMap node allows you to warp the src input according to the stitch or ppass attached to the map input. C_STMap accepts stitch_map and ppass_map channels in specified layers. The stitch_map UV channels represent the absolute pixel positions of an image normalized between 0 and 1, whereas the ppass_map XYZ channels represent the normalized 3D coordinates of a latlong image ranging between -1 and 1.

Note:  When you export from C_Stitcher, the UV or XYZ values are stored in the stitch_map or ppass_map layer, but you can use a Copy node to merge the channels into any layer. The selected layer must contain at least two channels (stmap) or three channels (ppass), but only the required channels are used if there are more channels in the layer.

The advantage of using a ppass_map over a standard stitch_map is that latlong continuity is naturally preserved, reducing or even eliminating hard-edge artifacts along latlong discontinuities.

Artifacts using stitch_map

Reduced artifacts using ppass_map

C_STMap can produce three modes of output for both stitch_map and ppass_map inputs:

Warped src - warps the src input using the map input. This option is similar to Nuke's STMap node's output.

The warp from the map input

Output set to Warped src

Warped src (inverse) - internally calculates the inverse of the map input and warps the src input using the result.

Inverting warps typically produces output with missing values, as shown, so CaraVR provides an interpolate control to fill the missing areas.

The warp from the map input

Output set to Warped src (inverted)

Output set to Warped src (inverted),
but with Interpolate enabled.

The interpolation is a simple smoothing operation to produce consistent results in relation to existing neighbouring pixels.

Map inverse - writes the inverse of the input map to the channels selected in the Map control.

This option doesn't require a src input.

See Re-applying Corrections to a Warp for workflow examples.