Cambot

Overview

Cambot is virtual move director for 3D worlds. Given a movie script as input and a virtual world, Cambot "shoots" the move for you. Cambot is more than camera control; it performs scene location scouting, blocking of characters (configuration of characters relative to each other on a stage), puppeting of character avatars, placement of the virtual camera, and edits the movie together. In addition to the script, one can provide a directorial heuristic to achieve different stylistic effects. Cambot can be used to rapidly develop and shoot 3D animated movies for entertainment, education, and military and industry training.

Given a script, Cambot first searches through the virtual set for the best place to shoot a scene. Next, Cambot solves the problem of choosing the best combination of blockings (configuration of characters on a virtual stage) and shots. The selection of blockings and shots is guided by the use of cinematic knowledge, represented by diagrammatic templates indicating placement relative to the centerpoint of the scene and vectors for movement. The script provides a set of constraints -- dialogue and action must be captured and annotations (e.g., "night time, middle of the street") capturing directorial and dramatic preferences. The constraints are solved using a dynamic programming algorithm, resulting in a specification for how to direct the movie.

A sample of Cambot diagrammatic knowledge structures. Stages, blockings, and shots are associated through additional constraints to ensure legal combinations.

The result of Cambot processing is a schedule of instructions to a 3D virtual game engine specifying when and how to move character avatars, display dialogue (subtitles), play avatar animations, and move the camera. Currently, Cambot is configured to work with UnrealTournament 2004, but it can work with any visualization tool that can accept character and camera placement commands, as well as animations and dialogue commands.

The following movies were generated by the same script with different directorial heuristics.

Cambot was instructed to prefer still shots and quick cuts:

Cambot was instructed to prefer to keep the camera in motion and to avoid cuts:

Cambot was instructed to prefer still shots and quick cuts:

Cambot was instructed to prefer to keep the camera in motion and to avoid cuts: