Jump to content

Virtual camera system

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Currentlybiscuit (talk | contribs) at 10:42, 3 July 2009 (added ISBNs and fixed references). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Virtual camera system demo showing parameters of the camera that can be adjusted.

A virtual camera system aims at controlling a camera or a set of cameras to display a view of a 3D virtual world. Camera systems are used in videogames where their purpose is to show the action at the best possible angle; more generally, they are used in 3D virtual worlds when a third person view is required.

As opposed to film makers, virtual camera system creators have to deal with a world that is interactive and unpredictable. It is not possible to know where the player's character is going to be in the next few seconds; therefore it is not possible to plan the shots as a film maker would do. To solve this issue, the system relies on certain rules or artificial intelligence to select the most appropriate shots.

There are mainly three types of camera systems. In fixed camera systems, the camera does not move at all and the system displays the player's character in a succession of still shots. Tracking cameras, on the other hand, follow the character's movements. Finally, interactive camera systems are only partially automated and allow the player to directly change the view. To implement camera systems, video game developers use techniques such as constraint solvers, artificial intelligence scripts, or autonomous agents.

Third-person view

In video games, "third person" refers to a graphical perspective rendered from a fixed distance behind and slightly above the player character. This viewpoint allows players to see a more strongly characterized avatar, and is most common in action games and action adventure games. Games with this perspective often make use of positional audio, which the volume of ambient sounds varies depending on the position of the avatar.[1]

There are primarily three types of third-person camera systems: the "fixed camera systems" in which the camera positions are set during the game creation; the "tracking camera systems" in which the camera simply follows the player's character; and the "interactive camera systems" that are under the player's control.

Fixed

Selection of shots in Resident Evil 2 that aim at creating tension

In this kind of system, the developers set the properties of the camera, such as its position, orientation or field of view, during the game creation. The camera views will not change dynamically, so the same place will always be shown under the same set of views. An early example of this kind of camera system can be seen in Alone in the Dark. While the characters are in 3D, the background on which they evolve has been pre-rendered. The early Resident Evil are notable examples of games that use fixed cameras.

One advantage of this camera system is that it allows the game designers to use the language of film. Indeed, like filmmakers, they have the possibility to create a mood through camerawork and careful selection of shots. Games that use this kind of techniques are often praised for their cinematic qualities.[2] For example, Capcom uses this technique in Resident Evil 2 in which the encounter between a monster and Leon is introduced by a careful selection of views that aim at creating tension.

Tracking

As the name says, a tracking camera follows the characters from behind. The player does not control the camera in any way - he/she cannot for example rotate it or move it to a different position. This type of camera system was very common in early 3D games such as Crash Bandicoot or Tomb Raider since it is very simple to implement. However, there are a number of issues with it. In particular, if the current view is not suitable (either because it is occluded by an object, or because it is not showing what the player is interested in), it cannot be changed since the player does not control the camera.[3][4][5] Sometimes this viewpoint causes difficulty when a character turns or stands face out against a wall. The camera may jerk or end up in awkward positions.[1]

Interactive

Instead of staying behind Mario, the camera intelligently rotates to show the path (Super Mario 64).

This type of camera system is an improvement over the tracking camera system. While the camera is still tracking the character, some of its parameters, such as its orientation or distance to the character, can be changed. On videogame consoles, the camera is often controlled by an analog stick to provide a good accuracy; whereas on PC games it is usually controlled by the mouse. This is the case in games such as Super Mario Sunshine or The Legend of Zelda: The Wind Waker. Fully interactive camera systems are often difficult to implement in the right way. Thus Gamespot argues that much of the Super Mario Sunshine' difficulty comes from having to control the camera.[6] The Legend of Zelda: The Wind Waker was more successful at it - IGN called the camera system "so smart that it rarely needs manual correction".[7]

One of the first games to offer an interactive camera system was Super Mario 64. The game had two types of camera systems between which the player could switch at any time. The first one was a standard tracking camera system except that it was partly driven by artificial intelligence. Indeed, the system was "aware" of the structure of the level and therefore could anticipate certain shots. For example, in the first level, when the path to the hill is about to turn left, the camera automatically starts looking towards the left too, thus anticipating the player's movements. The second type allows the player to control the camera relatively to Mario's position. By pressing on the left or right buttons, the camera rotates around Mario, while pressing up or down moves the camera closer or away from Mario.[8][9]

Implementation

There is a large body of research on how to implement a camera system:

Constraint solvers

The role of a constraint solver software is to generate the best possible shot given a set of visual constraints. In other words, the constraint solver is given a requested shot composition such as "show this character and ensure that he covers at least 30 percent of the screen space". The solver will then use various methods to try creating a shot that would satisfy this request. Once a suitable shot is found, the solver outputs the coordinates and rotation of the camera, which can then be used by the graphic engine renderer to display the view.[10]

In some camera systems, if no solution can be found, constraints are relaxed. For example, if the solver cannot generate a shot where the character occupies 30 percent of the screen space, it might ignore the screen space constraint and simply ensures that the character is visible at all.[11] Such methods include zooming out.

Script based approaches

Some camera systems use predefined scripts to decide how to select the current shot. Typically, the script is going to be triggered as a result of an action. For instance, when the player's character initiates a conversation with another character, the "conversation" script is going to be triggered. This script will contain instructions on how to "shoot" a two-character conversation. Thus the shots will be a combination of, for instance, over the shoulder shots and close-up shots. Such script-based approaches usually rely on a constraint solver to generate the camera coordinates.[12]

Autonomous agents

Bill Tomlinson used a more original approach to the problem. He devised a system in which the camera is an autonomous agent with its own personality. The style of the shots and their rhythm will be affected by its mood. Thus a happy camera will "cut more frequently, spend more time in close-up shots, move with a bouncy, swooping motion, and brightly illuminate the scene".[13]

References

  1. ^ a b Rollings, Andrew (2006). Fundamentals of Game Design. Prentice Hall. ISBN 0131687476, 9780131687479. {{cite book}}: Check |isbn= value: invalid character (help); Unknown parameter |coauthors= ignored (|author= suggested) (help)
  2. ^ Casamassina, Matt. "Resident Evil Review". IGN. Retrieved 2009-03-22.
  3. ^ "Sonic Adventure Review". IGN. Retrieved 2009-03-22.
  4. ^ "Tomb Raider: The Last Revelation Review". IGN. Retrieved 2009-03-22.
  5. ^ Carle, Chris. "Enter the Matrix Review". IGN. Retrieved 2009-03-22.
  6. ^ Gerstmann, Jeff (2002-10-04). "Super Mario Sunshine Review for GameCube". GameSpot. Retrieved 2009-03-22.
  7. ^ Casamassina, Matt (2003-03-25). "The Legend of Zelda: The Wind Waker Review". IGN. Retrieved 2009-03-22.
  8. ^ "15 Most Influential Video Games of All Time: Super Mario 64". GameSpot. Retrieved 2009-03-22.
  9. ^ "The Essential 50 Part 36: Super Mario 64 from". 1UP.com. Retrieved 2009-03-22.
  10. ^ Bares, William (2000). "Virtual 3D camera composition from frame constraints" (PDF). International Multimedia Conference. California, United States: Marina del Rey: 177–186. Retrieved 2009-03-22. {{cite journal}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  11. ^ Drucker, Steven M. (1995). "CamDroid: A System for Implementing Intelligent Camera Control" (PDF). Symposium on Interactive 3D Graphics. ISBN 0-89791-736-7. Retrieved 2009-03-22. {{cite journal}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  12. ^ He, Li-wei (1996). "The Virtual Cinematographer: A Paradigm for Automatic Real-Time Camera Control and Directing" (PDF). International Conference on Computer Graphics and Interactive Techniques. 23rd. New York: 217–224. Retrieved 2009-03-22. {{cite journal}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)
  13. ^ Tomlinson, Bill (2000). "Expressive Autonomous Cinematography for Interactive Virtual Environments" (PDF). Proceedings of the fourth international conference on Autonomous agents. 4th. Barcelona, Spain. ISBN 1-58113-230-1. Retrieved 2009-03-22. {{cite journal}}: Unknown parameter |coauthors= ignored (|author= suggested) (help)