1 / 15

(Interactive) Cinematography

(Interactive) Cinematography. Ref: Chap. 16 (Core Techniques and Algorithms in Game Programming). Introduction. Placing the camera is extremely important from a narrative standpoint Helps to convey the story [interesting games spoiled by bad camera angles]. FPS.

nanette
Télécharger la présentation

(Interactive) Cinematography

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. (Interactive) Cinematography Ref: Chap. 16 (Core Techniques and Algorithms in Game Programming)

  2. Introduction • Placing the camera is extremely important from a narrative standpoint • Helps to convey the story • [interesting games spoiled by bad camera angles]

  3. FPS • Camera movement: 4 DOF (x,y,z,yaw) • Pitch (sometimes); strafing (moving sideways) • E.g., keyboard (playerpos) + mouse (orientation) • Adding inertia to camera for increased realism • implement control on acceleration (not velocity) • [opengl implementation]

  4. forward back strafe FPS Control Use mouse to change direction

  5. -Z Right: x+=rcosq z-= rsinq Left: x-=rcosq z+= rsinq Up: x -= rsinq z-=rcosq Down:x+= rsinq z+=rcosq q playerpos X Implementing FPS

  6. Keyboard: still position control Mouse drag: Speed proportional to torque Each jerk represent an impulsive torque Need friction to stop Time-based motion by Euler integration Inertia Camera

  7. Mouse Movement • Use glutPassiveMotionFunc • Detect moving direction • Detect moving speed • Related API calls: • glutPassiveMotionFunc, glutSetCursor, glutWarpPointer • Ref: Ref:http://www.gamedev.net/community/forums/topic.asp?topic_id=202516 • Issues: • Hide mouse cursor • Lock mouse focus

  8. Flight Simulation • Placing virtual camera inside a cockpit • Complexity: • 6 DOF • Careful for upside-down motion (flying a loop) • Euler angles: gimbal lock problem • Use quaternion [how? Code]

  9. Not to occlude the enemy Problem: rotating will cause the camera to define large arcs (motion sickness) Solution: inertia camera Interpolate orientation: quaternion Problem: camera colliding with level geometry Solution: transparent wall between Change camera location: move up (lower roof), sideways (corner), in front of the player Third-person Camera

  10. Camera position Camera lookat Fwd distance Player position Third Person Camera

  11. Cinematic Cameras

  12. Camera Styles • Fixed camera • Dolly cameras • Crane cameras • Steadycams • Implement a real-time algorithm that selects the best camera according to heuristics (e.g., the one closest to player)

  13. Placement Algorithms • Basic rules: • show everything relevant to the scene • Should be placed so obstruction between relevant information does not occur • Aimed at a point of interest • Main character, other character in the vicinity, pickable items closer than a threshold, objects relevant to game play (e.g., obstacle)

  14. Ex: Camera Placement Dolly Pan Fixed Dolly Pan

  15. Agent-based Approach • AI techniques (rule-based system) to model the decision process used by our virtual cinematographer in order to call the best possible shot

More Related