Download presentation
Presentation is loading. Please wait.
Published byTamsin Little Modified over 6 years ago
1
BATTLECAM™: A Dynamic Camera System for Real-Time Strategy Games
Yangli Hector Yee Graphics Programmer, Petroglyph Elie Arabian Lead Artist, Petroglyph
2
Overview Background Theory Implementation Hacks Cinematic Shots
Question & Answers
3
Background – History RTS Bird’s Eye (Dune 2)
First Person (Dungeon Keeper) Scripted Actor & Camera (Warcraft 3) Unscripted Actor, Unscripted Camera (Star Wars – Empire at War)
4
Background - Problem Make a ‘movie’ from an RTS battle
Actors can move during shot Actors can die during shot Players can move actors Objects can move into camera
5
Background - Solution Pick most interesting object Construct shot
Play shot Fallback on death Pick next object Hijack existing camera scripting
6
Theory – Visual Attention
How to pick ‘interesting object’ Bottom Up: Stimulus Intensity (black on white) Motion (moving stuff) Color (red on green) Orientation (circle in stripes) Top Down: Goals Game Objectives Current User Selection
7
Theory – Bottom Up Attn. Image Orientation Color Spatial Frequency
Intensity Motion Feature Maps Conspicuity Maps Saliency Map Reference : Itti L, Koch C. “A Saliency-Based Search Mechanism for Overt and Covert Shifts of Visual Attention.” Vision Research, pp. 263, Vol 40( ), 2000
8
Center Surround Mechanism Intensity Feature Maps Lateral Inhibition Intensity Conspicuity Maps
9
Lateral Inhibition One signal vs similar signals
10
Lateral Inhibition Purpose : Promote areas with significantly conspicuous features while suppressing those that are non-conspicuous. (Before Inhibition) (After Inhibition)
11
Implementation Game Logic Driven Images too expensive
No screen space stuff Access to game logic info
12
Implementation – Data Game logic data (stimulus)
Size Attack power Location Health Game logic data (goal driven) Current selection Visibility
13
Computing Saliency E.g. Saliency_Speed for object(i)
Saliency_speed(i) = (speed(i) – min_speed)/ (max_speed – min_speed) Normalized 0 to 1 Three Normalization modes Large is important Small is imporant Closeness to mean is important
14
Normalization Modes Large is important Small is important
Saliency_val(i) = (val(i) – min_val) / (max_val – min_val) Small is important Saliency_val(i) = 1 – (val(i) – min_val) / (max_val – min_val) Close to mean is important Saliency_val(i) = 1 – (val(i) – avg_val) / (max_val – min_val)
15
Normalization settings
Large is important Size Attack power Targets Speed Small is important Health Close to mean is important X, Y coordinate
16
Lateral Inhibition Conspicuity value = saliency_val * (max_saliency_val – min_saliency_val) Signals with great difference between max and min get boosted
17
Importance Importance (i) = Sum of conspicuity_vals * weights
Weight values Size 1.0 Power 1.0 X 0.5 Y 0.5 Health 1.0 Targets 1.5 Speed 1.0 Sort list by importance
18
Summary Compute normalized saliency Perform lateral inhibition
Weighted sum Sort by importance
19
Picking interesting object
Pick current selected Pick current object’s target 50% of the time Make interesting object list From list pick top 5 randomly. Reject if it was same type as the previous object looked at.
20
Constructing Cinematics
Local Space Transform object space cinematic into world Local Space without rotation frame Use translation only World space using reference objects For artist driven cinematic constructed in world space Transform to local space
21
Local Space Cameras
22
Flyby camera shot
23
Circle camera shot
24
Chase camera shot
25
Hardpoint camera shot
26
Frigate/Target camera shot
27
Demo & Q&A Thanks to Jim Richmond for camera system Kevin Prangley for illustrations Petroglyph staff for support Contact Info Hector at petroglyphgames dot com
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.