Title: Game Physics
1Game Physics
2Introduction to Game Physics
- Traditional game physics
- Particle system
- Rigid body dynamics
- Flexible body dynamics
- Some state-of-art topics
- Car physics
- Fluid dynamics
- Rag-doll physics
- Physics
- Rigid body kinematics
- Newtons Laws
- Forces
- Momenta
- Energy
3Basic Concepts from Physics (1/2)
- Newtons Laws
- 1st Law
- ????,?????????
- 2nd Law
- F ma mdv/dt
- 3rd Law
- ????????
- Forces
- Gravity / Spring forces / Friction / Viscosity
- Torque
- ? r X F
- Equilibrium
4Basic Concepts from Physics (2/2)
- Momenta
- Linear momentum
- Angular momentum
- Moment of inertia
5Particle Dynamics
- Particles are objects with
- Mass
- Position
- Velocity
- Respond to forces
- But no spatial extent (no size!)
- Point mass
- Based on Newton Laws
- f ma
- x f / m
- v f / m, x v
..
.
.
6Basic Particle System
typedef struct float m / mass /
float x / position / float v /
velocity / float f / force accumulator
/ Particle typedef struct Particle p
/ array of pointers to particles / int n
/ number of particles / float t /
simulation clock / ParticleSystem
states
Particle n time
7/ gather states from the particles / void
ParticleGetState(ParticleSystem p, float dst)
int i for (i 0 i lt p-gtn i)
(dst) p-gtpI-gtx0 (dst)
p-gtpI-gtx1 (dst) p-gtpI-gtx2
(dst) p-gtpI-gtv0 (dst)
p-gtpI-gtv1 (dst) p-gtpI-gtv2
8/ scatter states into the particles / void
ParticleSetState(ParticleSystem p, float src)
int i for (i 0 i lt p-gtn i)
p-gtpi-gtx0 (src) p-gtpi-gtx1
(src) p-gtpi-gtx2 (src)
p-gtpi-gtv0 (src) p-gtpi-gtv1
(src) p-gtpi-gtv2 (src)
9/ calculate derivative, place in dst / void
ParticleDerivative(ParticleSystem p, float
dst) int i ClearForce(p)
ComputeForce(p) for (i 0 i lt p-gtn i)
(dst) p-gtpi-gtv0 (dst)
p-gtpi-gtv1 (dst) p-gtpi-gtv2
(dst) p-gtpi-gtf0/p-gtpi-gtm
(dst) p-gtpi-gtf1/p-gtpi-gtm
(dst) p-gtpi-gtf2/p-gtpi-gtm
10/ Euler Solver / void EulerStep(ParticleSystem
p, float DeltaT) ParticleDeriv(p, temp1)
ScaleVector(temp1, DeltaT) ParticleGetState(p,
temp2) AddVector(temp1, temp2, temp2)
ParticleSetState(p, temp2) p-gtt DeltaT
11Rigid Body Dynamics
- Mass of a Body
- Mass center
- Force
- Linear momentum
- P(t) M v(t)
- Velocity (v)
- Torque
- Angular momentum
- L(t) I w(t)
- Local rotation (w)
- Inertia Tensor
- Reference
- www-2.cs.cmu.edu/afs/cs/user/baraff/www/pbm
12Flexible Body Dynamics (1/2)
- Spring-mass model
- F k x
- Not a stress-strain model
- Lack of Elasticity, Plasticity,
Viscous-Elasticity - Can be unstable
13Flexible Body Dynamics (2/2)
- Finite element method
- (?????)
- Solver for ODE/PDE
- Boundary conditions
- Energy equation
- Stress-strain model
- Very complicated computing process
- Conservation of energy
14Advanced Topics in Game Physics
- Fracture Mechanics (??????)
- Fluid Dynamics (????)
- Car Dynamics (?????)
- Rag-doll Physics (??????)
15Game FX
16Introduction to Game FX
- Improve the Visual Sound Game Effects
- Includes
- Combat FX
- Environment FX
- Character FX
- Scene FX
- Sound FX
- FX Editor Needed
- General 3D animation tools can not do it
- Key-frame system is not working
- FX animation is always
- Procedurally
- Related to the previous frame
- Small Work But Large Effect
17FX Editing Tool
18Game Particle Effects
Conquer Online
19Combat FX
- During the Combat
- Weapon motion blur
- Weapon effect
- Skill effect
- After the Combat
- Damage effect
- FX Editor
20Combat FX Example
20
21Motion Blur Image Solution
- Computer Animation
- Image solution
- Blending rendered image sequence
- Render too many frames
- Divide the frames
- Average
- Done!
22Motion Blur Geometry Solution
- In Games, Use Transparent Objects to Simulate the
Motion Blur - False Motion Blur
- Tracking the motion path of the object
- Connecting them as a triangular mesh
- Use time-dependent semi-transparency to simulate
the blur - The path can be smoothed using Catmull-Rom spline
- Local stability of the curve
23FX Uses Texture Animation
- Almost All Game FXs Use this Trick
- Geometry Object on which the Texture Animation
Playing - Billboard
- 3D Plate
- Cylinder
- Sphere
- Revolving a cross section curve
- Texture Sequence with Color-key
- Semi-transparent Textures
- Alpha blending
- Source color added to background
- Demo!!!!
24Particle System for FXs in Combat
- The FXs
- Fire / exposure / smoke / dust
- Initial Value Time dependency
- Combined with Billboard FX
- Billboard to play the texture animation
- Particle system to calculate the motion path
- Gravity is the major force used
- Emitter pattern
- Single emitter
- Area emitter
- Emitter on vertices
- Demo !!!
25Environment FX
- Weather
- Use particle system
- Rain
- Snow
- Wind
- Fog
- Traditional fog
- From near to far
- Hardware standard feature
- Volume fog
- Layered fog
- Use vertex shader
- Day Night
26Character FX
- Fatality
- Case by case and need creative solutions
- Rendering Effects on Skins
- Environment mapping
- Bump map
- Normal map
- Multiple texture map
- Flexible body
- Flexible body dynamics
- Fur
- Real-time fur rendering
27Scene FX Sky Box
- Use a very large box or dome-like model to
surround the whole game scene - Use textures on the box or dome as the backdrop
- Use multiple textures and texture coordinates
animation to simulate the moving of the clouds
28Scene FX Lens Flare
- Runtime calculate the position and orientation of
the camera with the sun - Put textures to simulate the lens flare
29Scene FX Light Scattering
- Atmospheric light scattering
- Caused by dust, molecules, or water vapor
- These can cause light to be
- Scattered into the line of sight (in-scattering)
- Scattered out of the line of sight
(out-scattering) - Absorbed altogether (absorption)
- Skylight and sun light
- Can be Implemented by vertex shader
30Scene FX Light Scattering Examples
With scattering
Without scattering
31OGRE Particle System
OGRE Particle System Attributes http//www.ogre3d.
org/docs/manual/manual_32.html OGRE Particle
Editor http//www.game-cat.com/ogre/pe/ParticleEdi
tor_Beta.zip OGRE Particle Editor
Tutorial http//www.game-cat.com/ogre/pe/docs/PETu
torial.htm
32Particle System Definition Attributes (Partial)
Attribute Name Value Format Description
quota ltmax_particlesgt Maximum number of particles at one time in the system (default 10).
material ltnamegt Name of material used by all particles in the system (default none).
particle_width ltwidthgt Width of particles in world coordinates (default 100).
particle_height ltheightgt Height of particles in world coordinates (default 100).
cull_each lttruegt ltfalsegt Cull particles individually (default false).
sorted lttruegt ltfalsegt Sort particles by depth from camera (default false).
billboard_type ltpointgt ltoriented_commongt ltoriented_selfgt Billboard-renderer-specific attribute (default point).