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)
- Particle-Spring 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 can not do it
- Key-frame system is nor working
- FX animation is always
- Procedurally
- Related to the previous frame
- Small Work But Large Effect
17FX Editing Tool
18Combat FX
- During the Combat
- Weapon motion blur
- Weapon effect
- Skill effect
- After the Combat
- Damage effect
- FX Editor
19Combat FX Example
20Motion Blur Image Solution
- Computer Animation
- Image solution
- Blending rendered image sequence
- Render too many frames
- Divide the frames
- Average
- Done!
21Motion 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
22FX 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!!!!
23Particle 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 !!!
24Environment 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
25Character 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
26Scene 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
27Scene FX Lens Flare
- Runtime calculate the position and orientation of
the camera with the sun - Put textures to simulate the lens flare
28Scene 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
29Scene FX Light Scattering Examples
With scattering
Without scattering