Camera Planning |
CamPlan: A Camera Planning Agent
Nicolas Halper and Patrick Olivier
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
![]() |
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. |
![]() |
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.
|
![]() |
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. |
download 1st test-run (A) [AVI], 2nd test-run (B) [AVI]
Start Position (A and B) |
mid-point in test-run B
|
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]
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
|