Camera Planning

CamPlan: A Camera Planning Agent

Nicolas Halper and Patrick Olivier


Camera planning agents address the problem of positioning a camera within a world, such that the resulting image has some predefined set of visual properties. We are developing a graphical presentation planning system which incorporates CAMPLAN, a camera planning subsystem for polygonal graphics. The motivations for CAMPLAN are outlined and a set of shot properties has been established and implemented from which the user can select communicative goals. CAMPLAN uses a genetic algorithm to optimise the camera with respect to the specified set of image objectives. An informal evaluation of the system is presented in which we show how successfully more restrictive objectives can impose stylistic regularity in a graphical scene and demonstrate other features of declarative camera planning using CAMPLAN. We conclude with a discussion of our current work and outline future directions for graphical presentation planning.


  • Nicolas Halper and Patrick Olivier. CAMPLAN: A Camera Planning Agent. In Smart Graphics. Papers from the 2000 AAAI Spring Symposium (Stanford, March 20-22, 2000), pages 92-100, Menlo Park, 2000. AAAI Press. (PDF)
  • Patrick Olivier, Jon Pickering,Nicolas Halper and Pamela Luna, Visual composition as optimisation, AISB Symposium on AI and Creativity in Entertainment and Visual Art, Edinburgh, 9th April, pp. 22-30, 1999

  • Examples

    This section shows a few examples to give an indication as to what can be done with the CamPlan system.  Details of how the system works are described in the above papers.

    Progressive Restriction

    Each horizontal row corresponds to the output for a progressively more restrictive set of shot properties.
    1) All objects in viewport: The search space is large compared to the dimensions of the objects in the scene, thus it is predictable that the scene elements will most likely occur in the distance in the resulting output images.

    2) Additional Size Constraint: The second row shows the newly generated images with the additional fact that the table is required to be between 40% and 60% of the viewport width. 

    3) Additional Orientation Constraint: There remains significant variability both in the direction from which the scene is viewed, and in the positions of the scene elements in the viewport. We can restrict the orientation of the view by requiring one of the clowns to be closer to the camera than the two others.

    4) Additional Positional Constraint: By additionally specifying that the coordinates of the table must lie in the lower half of the viewport, the  position of scene elements are further restricted (as shown in the fourth row).  The resulting images have an added degree of compositional regularity.

    5) Additional Visibility Constraint: Observing the images shows that some objects may still be fully, or nearly fully, occluded by others.  The final objective is the removal of the possibility that any of the scene elements are more than 80% occluded.

    Solution Search Capabilities

    The following example demonstrates that our genetic algorithm is able to find a camera state in a unique solution region which satisifies a set of tightly constrained properties.
    The shot properties are set to align the grid bars such that the vertical and horizontal extents coincide exactly using the relative position properties.

    Similarly for the window ledges, their X and Y extents should coincide to start and end at the same point.

    The entire building should also be in the center of the shot and projected at least half the size of the viewport.

    Declarative Specification Examples

    CenterShot "roof"
    Unoccluded "roof" 100 tolerance 0
    SpanXorY "roof" 2 tolerance 1.2
    PositionRelativeX "pillar01" before before "roof"
    PositionRelativeX "pillar03" after after "roof" "grid" 
    OccludedInViewportBy "pillar01" 100 tolerance 99

    Another set of properties demonstrates how the user can specify a view in a natural way.  This figure shows a view where the camera was desired to be placed in a position to give an unoccluded shot of the roof of the building leading to the steps as seen between two pillars of the small tower.  The model itself has a grid fence which is discontinuous, and the user may hide this by specifying that this grid should be overlapped by the pillar which is to be placed to the left.


    CenterShot "Escher building"
    EntirelyInViewport "Escher building"
    OccludedInViewport "step high" 0 80
    OccludedInViewport "step low" 0 80 "step high" 
    NotOccludedBy "step low" "step high" 
    NotOccludedBy "step high" "step low" 

    To show the advantages of a declarative approach to shot specification, and in order to give a clearer shot of the models construction and illustrate how the illusion of the infinitely ascending and descending steps is created, a small number of properties breaking the main features of this illusion are specified.  The two steps which are disjoint in the cycle should be in some part visible, and that they should not overlap each other.


    Dynamic Examples

    These are some first test videos I did a while back in December 1999 with Patrick Olivier.  The only parameters for the first two videos were start and end positions, and to constrain that the cube under the tower be left 100% visible at all times.  Note how the two test runs vary (1st test black background, 2nd test gray background)-- The second test run  result was surprising, but correct!

    download 1st test-run (A) [AVI], 2nd test-run (B) [AVI]

    Start Position (A and B)

    mid-point in test-run B 

    mid-point in test-run A

    End Position (A and B)


    This animation was specified to start and end at the same point, whilst maintaining view direction towards the big box at the center of the building.  At regular time intervals, a cube was specified to be 100% visible in the viewport.  The algorithm we used managed to traverse the scene such that all cubes' visibility were satisfied at the specified time intervals during the animation.

    download [AVI]

    © 2000-2004 Nick Halper  [ ]