Transforming and Projecting

C_SphericalTransform converts images between different projections, similar to the vanilla Nuke SphericalTransform node, but designed for 360 work and including Blink GPU acceleration. These view projections can be divided into two broad categories:

full frame, such as Latlong, encompassing the entire 360 world around a single point, and

partial frame, such as the Rectilinear view that Nuke was designed to work in.

CaraVR ships with a number of ToolSets that employ the C_SphericalTransform node for common Nuke operations on 360 material, such a rotoing, comping, and tracking. C_SphericalTransform allows you to configure the input and output projections for the desired conversion. For partial frame projections, additional projection space parameters are enabled on the Input and Output tab for the specific camera parameters, such as focal length, sensor size, and so on.

Use the Rotation controls to adjust the Input and Output from a single point governing Look position, two points going From/To, Pan/Tilt/Roll, or Full Rotation angles with control over rotation order.

The Output rotation is also controllable using an in-viewer control system. Hold down Ctrl/Cmd+Alt and left-click and drag to move the image around, setting the pan and tilt setting. Add Shift to lock into a single dimension for the movement. In a partial frame projection, use the right mouse button to set the focal length, in essence zooming in and out.

C_SphericalTransform can convert between the following projection modes:

Projection Name

Example

Description

Latlong

Latlong, or equirectangular, projections are the most common full 360 frame projection. Many VR pipelines use them for both ingest and export due to their simplicity and wide use.

Working in latlong space can be problematic due to its unfamiliar mapping, that many compression techniques were not designed to handle, and inefficiencies towards the poles, where many pixels represent a single pixel in the output.

Cubemap

Cubemap projections are another full 360 projection. Each of the six faces is essentially rectilinear, so the data can be more familiar to work in. Faces can be packed in a number of ways:

Image - all faces are placed in a single image and packed according to the Packing control. The default is LL-Cross as shown in the example.

Views - each face creates a view in the stream. The view is named using the following convention:

cubemap_<direction><axis>

Where <direction> can be pos or neg, for positive and negative, and <axis> can be x, y, or z.

Faces - each face is a placed in a separate image stream, but due to Nuke’s limitations, there can only be a single face output in this mode. You can choose the face to output using the Face control.

When in input mode, you get six separate inputs, labeled according to the face they represent.

Rectilinear

Rectilinear projection is a partial frame, standard projection you're most likely familiar with.

Tip:  Remember when you’re going to or from rectilinear, you’re only able to cover part of the frame (up to virtually 180 degrees).

As a partial frame projection this enables extra parameters on the Input and Output tabs (depending on if you’ve picked it as an input or output projection). These govern the camera parameters, such as focal length, sensor size, and so on that are not applicable in full frame projections.

Fisheye

Fisheye covers a number of projections, all of which emulate common optical models used in fisheye lenses. These are all partial frame projections, so enable specific camera parameters similar to the Rectilinear projection type. Additionally, you can select the particular model to use:

Stereographic is not widely used in optics, Samyang Optics being one of the few to employ it. The Stereographic model forms the basis of the little planet projection, where the center of the projection is the nadir.

C_SphericalTransform ships with a LittlePlanet properties preset, which applies such a look to a latlong with a horizon line centered vertically.

Equidistant is the default setting and matches the zeroed model employed in the fisheye distortion estimation employed by C_CameraSolver.

Equidistant is often considered the ideal model, as its response is a balance between the curves of various models. Other tools without this level of control most likely employ this model.

Equisolid is the most frequently found model in practical optics.

Orthographic is a classical ‘perfect’ response model that sees little use in practical optics. It does, however, match the fisheye model from Nuke’s own SphericalTransform node.