Camera control

Note: this is joint work with Karan Singh of the University of Toronto.

Camera control is a surprisingly difficult task, in part because the user must solve an inverse problem - how to position and orient the camera so that it projects the scene the way they want. Games take advantage of the fact that the viewer is typically a character navigating the scene to constrain the problem; the user has control over the viewing direction, which in turn constrains the direction of camera motion. Traditional 3D systems, such as Maya, employ over-loaded mouse buttons to move the camera in specific ways, such as translating the camera along the view vector. The user can also visualize the camera as another element in the 3D scene.

The IBar is a screen-space widget that performs all of the standard camera operators, plus provides intuitive control over the internal camera parameters, i.e., the perspective distortion. The IBar is a projection of the edge of a cube. By changing the IBar's projection in the screen, the user indicates how they would like the camera to change. One beneficial side effect of this interaction mode is that it requires only one mouse button, and the user can still "click through" the IBar to edit the scene.

The IBar is very useful for visualizing the camera projection, but it is a bit overwhelming for novice users. The Cube widget is an alternative approach that splits the functionality into three views of the cube. Additional cues, such as ghosting and pie menus, help the novice user learn how the cube widget works. It also supports much better control of the rotation point, and the zoom-dolly fixed point.

See also camera interpolation and non-linear projection.

Talks

Papers

Movies

Source code

IBar C++ implementation, complete with Windows executable.

IBar Maya implementation.

Students