1 / 32

# Game Physics

Game Physics. Introduction 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 Newton’s Laws Forces Momenta Energy. Download Presentation ## Game Physics

E N D

### Presentation Transcript

1. Game Physics

2. Introduction 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 • Newton’s Laws • Forces • Momenta • Energy

3. Basic Concepts from Physics (1/2) • Newton’s Laws • 1st Law • “靜者恆靜，動者恆成等速度運動” • 2nd Law • F = ma = mdv/dt • 3rd Law • 作用力與反作用力 • Forces • Gravity / Spring forces / Friction / Viscosity • Torque •  = r X F • Equilibrium

4. Basic Concepts from Physics (2/2) • Momenta • Linear momentum • Angular momentum • Moment of inertia

5. Particle 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 .. . .

6. Basic Particle System x v f m x v f m x v f m x v f m x v f m x v f m 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 < p->n; i++) { *(dst++) = p->p[I]->x; *(dst++) = p->p[I]->x; *(dst++) = p->p[I]->x; *(dst++) = p->p[I]->v; *(dst++) = p->p[I]->v; *(dst++) = p->p[I]->v; }}

8. /* scatter states into the particles */ void ParticleSetState(ParticleSystem p, float *src) { int i; for (i = 0; i < p->n; i++) { p->p[i]->x = *(src++); p->p[i]->x = *(src++); p->p[i]->x = *(src++); p->p[i]->v = *(src++); p->p[i]->v = *(src++); p->p[i]->v = *(src++); }}

9. /* calculate derivative, place in dst */ void ParticleDerivative(ParticleSystem p, float *dst) { int i; ClearForce(p); ComputeForce(p); for (i = 0; i < p->n; i++) { *(dst++) = p->p[i]->v; *(dst++) = p->p[i]->v; *(dst++) = p->p[i]->v; *(dst++) = p->p[i]->f/p->p[i]->m; *(dst++) = p->p[i]->f/p->p[i]->m; *(dst++) = p->p[i]->f/p->p[i]->m; }}

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->t += DeltaT; }

11. Rigid 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

12. Flexible Body Dynamics (1/2) • Spring-mass model • F = k x • Not a stress-strain model • Lack of Elasticity, Plasticity, & Viscous-Elasticity • Can be unstable

13. Flexible 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

14. Advanced Topics in Game Physics • Fracture Mechanics (破壞力學模擬) • Fluid Dynamics (流體力學) • Car Dynamics (車輛動力學) • Rag-doll Physics (人體物理模擬)

15. Game FX

16. Introduction 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

17. FX Editing Tool

18. Game Particle Effects Conquer Online

19. Combat FX • During the Combat • Weapon motion blur • Weapon effect • Skill effect • After the Combat • Damage effect • FX Editor

20. Motion Blur – Image Solution • Computer Animation : • Image solution • Blending rendered image sequence • Render too many frames • Divide the frames • Average • Done!

21. Motion 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

22. FX 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!!!!

23. Particle 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 !!!

24. Environment 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

25. Character 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 • …

26. Scene 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

27. Scene FX – Len’s Flare Runtime calculate the position and orientation of the camera with the sun Put textures to simulate the len’s flare

28. Scene FX – Light Scattering • Skylight and sun light • Can be Implemented by vertex shader • 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)

29. Scene FX – Light Scattering Examples Without scattering With scattering

30. OGRE 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/ParticleEditor_Beta.zip OGRE Particle Editor Tutorial http://www.game-cat.com/ogre/pe/docs/PETutorial.htm

31. Particle System Definition Attributes (Partial)

More Related