1 / 29

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

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. 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[0]; *(dst++) = p->p[I]->x[1]; *(dst++) = p->p[I]->x[2]; *(dst++) = p->p[I]->v[0]; *(dst++) = p->p[I]->v[1]; *(dst++) = p->p[I]->v[2]; }}

  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[0] = *(src++); p->p[i]->x[1] = *(src++); p->p[i]->x[2] = *(src++); p->p[i]->v[0] = *(src++); p->p[i]->v[1] = *(src++); p->p[i]->v[2] = *(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[0]; *(dst++) = p->p[i]->v[1]; *(dst++) = p->p[i]->v[2]; *(dst++) = p->p[i]->f[0]/p->p[i]->m; *(dst++) = p->p[i]->f[1]/p->p[i]->m; *(dst++) = p->p[i]->f[2]/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) • Particle-Spring 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 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

  17. FX Editing Tool

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

  19. Combat FX Example

  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 • 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

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

More Related