A Camera Engine for Computer Games

In Eurographics 2001:


Many computer games treat the user in the "1st person" and bind the camera to his or her view. More sophistication in a game can be achieved by enabling the camera to leave the users’ viewpoint. This, however, requires new methods for automatic, dynamic camera control. In this paper we present methods and tools for such camera control. We emphasize guiding camera control by constraints; however, optimal constraint satisfaction tends to lead to the camera jumping around too much. Thus, we pay particular attention to a trade-off between constraint satisfaction and frame coherence. We present a new algorithm for dynamic consideration of the visibility of objects which are deemed to be important in a given game context.

Download full paper here [PDF].


Section 5 - Implementation and Evaluation

We include videos (DIVX, Intel Indeo 5.1, and QT)* captured in real-time from an Athlon 800Mhz with 128MB RAM and GeForce graphics card, and demo executables for the evaluation samples below.  DIVX provides the best size compression and visual quality, so we recommend installing the codecs if you have not already got them.  To run the executable successfully, you need to download the relevant DLLs and meet the system requirements outlined below. Note: these demos are quite demanding (50,000 - 200,000 polygons) and induce a serious "stress test" on the system.  On less performant machines, try the demos on "Effects of Predicting Camera State".

*due to server size contraints, videos are currently unavailable for download. Send me an email to get a hold of them somehow...
  • Exploration

Bee in a cluttered attic:
[avi(DIVX 7.2mbIndeo 13.6mb)][qt 16.3mb]

Figure through a medieval house:
[avi(DIVX 4.0mb, Indeo 6.5mb)][qt 25.2mb]

Helicopter scene (see below)

  • Effects of Predicting Camera State

Here we show successive results of applying camera constraint settings and features:
[avi(DIVX 12.9mb, Indeo 19.4mb)][qt 50.9mb].

Case 1: no occlusion avoidance, hard constraints
Case 2: occlusion avoidance, hard constraints
Case 3: occlusion avoidance, relaxed constraints
Case 4: occlusion avoidance, relaxed constraints, camera inertia
Case 5: occlusion avoidance, relaxed constraints, camera inertia, and predictive camera planning.

  • Level-of-Detail Occluder Geometry

Citycopter scene 
[avi(DIVX 6.0mb, Indeo 20.7mb)][qt 6.5mb]

Citycopter scene with additional levelAt constraint
[avi(DIVX 7mb, Indeo 11.2mb)]

This is a large scene comprising over 200k polygons, but uses reduced occlusion geometry (~3k polygons) to represent the detailed scene.  The frame-rate loss using the camera solver is negligible.

System Download and Requirements

*due to server size contraints, I've been unable to include the demo or videos for download. If you really want to give it a try, send me an email and I'll see how I can transfer the files to you.


© 2000-2001 Nick Halper  [nick@isg.cs.uni-magdeburg.de ]