This tutorial is designed to be a no-frills beginner’s guide to building and using a 5 camera hemi-cubic rig in Maya for creating fulldome content.
There are two main flavors of playback systems for fulldome presentation, “real time” and “pre-rendered.” Real time systems can be compared to web pages, in that they require a script (like HTML code) which tells the system when, where and how to display images. A real time fulldome system can then take a still image, a .x file, or a small .avi file and display it with instructions to move, rotate or resize on the fly. The other flavor of fulldome projection is often called “pre-rendered playback” and can be compared to movie or video playback. This second type of playback requires a 30 frames per second sequence of large format images called “dome masters” (see our tutorial “What is a Dome Master”.)
There are a variety of ways to create “dome masters.” They can be made in 2D or 3D depending on the content and desired effect. There are several other methods of using 3D software to create dome content, some involving domed reflections, fisheye shaders, and fisheye refraction devices. This tutorial will cover the creation and use of a 3D “hemi-cubic” camera in Maya, but the principles will apply to any 3D animation package.
The image on the right is a “dome master” from my fulldome piece, “Wings of Memory,” which won a Domie in DomeFest 2004. Note that it is a circular image within a black square. It is a true 180 degree fisheye projection made using a hemi-cubic camera in both Maya and After Effects.
Note the “stretching” of the image out around the edge of the circle. The camera you will learn to make in this tutorial will create 5 panels which must then be “stitched” together to create the dome master. This requires special stitching software that knows how to take the five panels and create a properly distorted dome master. There is a free download at Spitz for the “Glom Stitcher” and most planetariums will have that software or a similar product from Sky-Skan. Glom is natively run on Microsoft Windows, but can be run on Linux/OSX using Wine. For instructions, see post here.
The following is a step-by-step guide to creating and using a 5 camera hemi-cubic rig in Maya.
to make a new camera. Be sure you create the simple one node camera as shown.
The option box settings should look like this.
This is how the new camera will look. It is sitting at the center of the grid, facing forward. The part of the camera icon touching the center of the grid is the exact view point of the camera (this will be important to know later). Note the settings in the channel box, in particular the three settings shown in the Shapes section.
If you forgot to open the option box in step 2, you can set the three settings now in the channel box.
Horizontal Film Aperture = 1
Vertical Film Aperture = 1
Focal Length = 12.7
Press ctrl-A to open the attribute editor for the camera. You should see a 90 degree Angle of view. This is very important. The dome master process will not work unless all of these settings are exactly as shown. In the top grey box of the Channel box, name the camera Fcam. This will be your FRONT camera.
There are special cases in which you may want to overscan in order to use the overscan features in the stitcher, and this will require different settings. But for a simple hemi-cubic camera, these are the correct settings. (And if you know what I meant by that, you probably don’t need this tutorial anyway…;-) )
Go to HotBox>Recent Commands>performCameraOnly0
(you get to the HotBox by holding down the space bar.) This will create another camera. You can also do this by hitting the “g” key (repeat last command).
Name this camera Rcam for RIGHT camera and set the Rotate Y to -90 in the channel box as shown. Notice that the Rcam sits on the left of the rig but it FACES RIGHT.
Repeat step 5 two more times making Lcam (LEFT camera) with rotate Y set to 90 and Bcam (BACK camera) with rotate Y set to 180.
You will now have 4 cameras, FRONT, LEFT, RIGHT, and BACK, sitting at the very center of the scene, with their viewpoints (mentioned in step 3) exactly on the same spot.
It is very important not to move or rotate any parts of the rig (other than the correct rotations for the different cameras.) Check to make sure the translate x,y,z and rotate x,z are all zero, and that the rotate y are as instructed above.
Repeat the camera command one more time, making the Tcam (TOP). This one needs to be rotated 90 degrees on the X (rather than Y as all the others).
Very Important… the top camera must be positioned with the bottom of the camera pointed to the front. When you look through the cameras, the view will be upright in all four F,L,R B, and the view in the Top camera will be bottom of image touching top of front image. The stitcher will not perform properly if any camera is turned any other way. (see step 21 on page 5.)
If you have correctly followed the steps so far your top camera will be correctly positioned.
If you now open
you will see 5 separate camera nodes.
Drag select all 5 nodes in the hypergraph window and hit ctrl-g to group them. Name this group node camRig in the channel box.
Go to Create>NURBS Primitives>Cube
and create a 1x1x1 cube at the origin.
Move the cube down on the Y axis to -0.505. This will position the cube a tiny bit below the center viewpoint of the F,L,R,B cameras.
Go to the hypergraph window. There you will see that a NURBS cube is actually six planes under a group node. Select and delete the top and bottom planes, leaving a sort of “fence” around the group camera viewpoint.
The purpose of this “fence” is to mask the bottom half of the F,L,R,B camera views so as to save render time. If for any reason you need the bottom half of your image, leave this feature out. This would be if you plan to make an environment cube, or if you plan to make use of a “tilt” feature in a stitching program.
In the hypergraph view, middle mouse drag on the cube’s group node and drag it onto the camRig node to group it with the cameras.
This view shows the properly arranged nodes in the hypergraph view, with the cube renamed “CamMask”.
In this view, I have also scaled the cube a bit on the X and Z axes. Be careful not to scale it on the Y as this can raise it up and make it block the camera view.
Here you can see how the camMask fills the bottom half of each of the views shown (F,L,R.) Steps 16 and 17 show how to make it flat black, to cut down on render time.
(Note: only use this mask if you will not need to change the tilt of the dome master, as mentioned in the “What is a Dome Master?“ tutorial. If you will be using stitching software which allows you to change the tilt, so as to accomodate both horizontal domes like the Hayden and tilted domes like LodeStar, then you will need to render the whole frame. This only applies if your image needs to appear horizontal, such as an ocean horizon. It doesn’t really make much difference for roller coaster rides or kaleidoscopes!)
In order to create a flat black mask, we need to create a special shader for the mask.
Go to Window>Rendering Editors>HyperShade
Open”Create Materials” in the left hand column, and select”Lambert.” This will create Lambert2. Do NOT use Lambert1 for this purpose!!!
Select Lambert2 and hit ctrl-a to open it in the attribute editor. Set the sliders as shown, paying special attention to Color, Ambient Color and Diffuse. This creates a pure black surface which disregards any light in the scene. When applied to the camMask cube, it causes the bottom half of the F,L,R and B views to quickly render a flat black area. This can literally save you weeks of rendering on a dome piece!!
To prevent the camera rig from becoming misaligned, it is a good idea to lock the transforms on the cameras and the parts of the cube. To do this, select a camera. Then, in the channel box, select all of the translate, rotate and scale attributes as shown. Be sure you select the title words(not the values), they will appear white on black as in the image. Right click and select”Lock Selected.” All transforms will go grey.
Do the same steps for each of the cameras, each side of the mask cube (and the group node of the mask as well.) All nodes should be locked except for the top”camRig” node.
Check to make sure all settings except the proper camera rotates are still set to zero. If a camera is accidentally moved out of alignment, the stitcher will leave seams in your dome master!
Note: the rig shown in this image is rotated -20 degrees on the x axis using the camRig node to create a level horizon in a 20 degree tilted dome. See the next step.
Now if you want to move or rotate your camera rig, just go to the hypergraph and select the camRig node. You can use this node to fly your rig around, to move it along a motion path, to give it the proper tilt for your dome, or anything else which requires moving your camera.
Here I have arranged a collection of various objects around the camera rig. You can see how they look to the Fcam, Lcam and Rcam cameras in the other view panels. Note the tilted appearance of the Lcam view (Rcam is tilted as well, but the torus shape is deceptive… notice the tilt of the grey grid line.) Also note the distortion of objects as they move away from the center of the view. This is due to the wide angle of the lens, and is a part of the distortion required to produce a dome master.
These are the five views rendered from the view shown in step 20.
This is a dome master made from the 5 panels in step 21 using the free Glom stitcher mentioned at the beginning of this tutorial. Note the relative shapes and distortions among the objects compared to the panels.