Game Physics Engine Development

Game Physics Engine Development

4.21 (56 ratings by Goodreads)
By (author) 

List price: US$56.95

Currently unavailable

Add to wishlist

AbeBooks may have this title (opens in new window).

Try AbeBooks

Description

Simulating physics helps cutting-edge games distinguish themselves by making virtual objects behave as we expect them to in the real world. Physics engines are the software programs that run these simulations. Building an engine is difficult, however. There are a large number of new developers (and hobbyists) coming into this market who need help through this complex process. Current introductory books are inadequate; they don't bring enough real-world programming experience to the task. There is a need for an introductory book on game physics with solid coding guidance but which limits the math content. Ian Millington brings his extensive professional programming experience to this problem. He has developed games since 1987, has studied AI and mathematics at the PhD level, and founded Mindlathe Ltd., a company that designed and built commercial physics engines. Physics Engine Development carefully describes each step in the creation of a robust, usable physics engine. It introduces the mathematical concepts in a clear and simple manner, keeping to high school level topics and building a physics code library as it goes. Each new concept is explained in diagrams and code to make sure that even the most novice of game programmers understands. The companion CD-ROM includes the source code for a complete physics engine of commercial quality. This book will serve as a introduction to more mathematically advanced books on game physics, such as Dave Eberly's Game Physics.
show more

Product details

  • Hardback | 480 pages
  • 190.5 x 236.2 x 30.5mm | 657.72g
  • Focal Press US
  • Burlington, United States
  • English
  • 012369471X
  • 9780123694713
  • 680,399

Table of contents

Preface


About the Author


About the CD-ROM


1 Introduction


1.1 What is Game Physics


1.2 What is a Physics Engine


1.2.1 Advantages of a Physics Engine


1.2.2 Weaknessess of a Physics Engine




1.3 Approaches to Physics Engines


1.3.1 Types of Object


1.3.2 Contact Resolution


1.3.3 Impulses and Forces


1.3.4 What We're Building




1.4 The Mathematics of Physics Engines


1.4.1 The Math You Need to Know


1.4.2 The Math We'll Review


1.4.3 The Mathematics We'll Introduce




1.5 The Source Code in the Book


1.6 How the Book is Structured






I Particle Physics


2 The Mathematics of Particles


2.1 Vectors


2.1.1 The Handedness of Space


2.1.2 Vectors and Directions


2.1.3 Scalar and Vector Multiplication


2.1.4 Vector Addition and Subtraction


2.1.5 Multiplying Vectors


2.1.6 The Component Product


2.1.7 The Scalar Product


2.1.8 The Vector Product


2.1.9 The Orthonormal Basis




2.2 Calculus


2.2.1 Differential Calculus


2.2.2 Integral Calculus








3 The Laws of Motion


3.1 A Particle


3.2 The First Two Laws


3.2.1 The Force Equations


3.2.2 Adding Mass to Particles


3.2.3 Momentum and Velocity


3.2.4 The Force of Gravity




3.3 The Integrator


3.3.1 The Update Equations


3.3.2 The Complete Integrator








4 The Particle Physics Engine


4.1 Ballistics


4.1.1 Setting Projectile Properties


4.1.2 Implementation




4.2 Fireworks


4.2.1 The Firework Data


4.2.2 Firework Rules


4.2.3 The Implementation








II Mass Aggregate Physics


5 Adding General Forces


5.1 D'Alembert's Principle


5.2 Force Generators


5.2.1 Interfaces and Polymorphism


5.2.2 Implementation


5.2.3 A Gravity Force Generator


5.2.4 A Drag Force Generator




5.3 Built-In Gravity and Damping






6 Springs and Spring-like Things


6.1 Hook's Law


6.2 Spring-Like Force Generators


6.2.1 A Basic Spring Generator


6.2.2 An Anchored Spring Generator


6.2.3 An Elastic Bungee Generator


6.2.4 A Buoyancy Force Generator




6.3 Stiff Springs


6.3.1 The Problem of Stiff Springs


6.3.2 Faking Stiff Springs








7 Hard Constraints


7.1 Simple Collision Resolution


7.1.1 The Closing Velocity


7.1.2 The Coefficient of Restitution


7.1.3 The Collision Direction and the Contact Normal


7.1.4 Impulses




7.2 Collision Processing


7.2.1 Collision Detection


7.2.2 Resolving Interpenetration


7.2.3 Resting Contacts




7.3 The Contact Resolver Algorithm


7.3.1 Resolution Order


7.3.2 Time-Division Engines




7.4 Collision-Like Things


7.4.1 Cables


7.4.2 Rods








8 The Mass Aggregate Physics Engine


8.1 Overview of the Engine


8.2 Using the Physics Engine


8.2.1 Rope Bridges and Cables


8.2.2 Friction








III Rigid Body Physics



9 The Mathematics of Rotations


9.1 Rotating Objects in 2D


9.1.1 The Mathematics of Angles


9.1.2 Angular Speed


9.1.3 The Origin and the Centre of Mass




9.2 Orientation in 3D


9.2.1 Euler Angles


9.2.2 Axis-Angle


9.2.3 Rotation Matrices


9.2.4 Quaternions




9.3 Angular Velocity and Acceleration


9.3.1 Velocity of a Point


9.3.2 Angular Acceleration




9.4 Implementing the Mathematics


9.4.1 The Matrix Classes


9.4.2 Matrix Multiplication


9.4.3 Matrix Inverse and Transpose


9.4.4 Converting a Quaternion to a Matrix


9.4.5 Transforming Vectors


9.4.6 Changing the Basis of a Matrix


9.4.7 The Quaternion Class


9.4.8 Normalising Quaternions


9.4.9 Combining Quaternions


9.4.10 Rotating


9.4.11 Updating by The Angular Velocity








10 Laws of Motion for Rigid Bodies


10.1 The Rigid Body


10.2 Newton 2 for Rotation


10.2.1 Torque


10.2.2 The Moment of Inertia


10.2.3 Inertia Tensor in World-Coordinates




10.3 D'Alembert for Rotation


10.3.1 Force Generators




10.4 The Rigid Body Integration






11 The Rigid Body Physics Engine


11.1 Overview of the Engine


11.2 Using the Physics Engine


11.2.1 A Flight Simulator


11.2.2 A Sailing Simulator








IV Collision Detection


12 Collision Detection


12.1 Collision Detection Pipeline


12.2 Coarse Collision Detection


12.3 Bounding Volumes


12.3.1 Hierarchies


12.3.2 Building the Hierarchy


12.3.3 Sub-object Hierarchies




12.4 Spatial Data Structures


12.4.1 Binary Space Partitioning (BSP)


12.4.2 Oct-Trees and Quad-Trees


12.4.3 Grids


12.4.4 Multi-Resolution Maps




12.5 Summary






13 Generating Contacts


13.1 Collision Geometry


13.1.1 Primitive Assemblies


13.1.2 Generating Collision Geometry




13.2 Contact Generation


13.2.1 Contact Data


13.2.2 Point-Face Contacts


13.2.3 Edge-Edge Contacts


13.2.4 Edge-Face Contacts


13.2.5 Face-Face Contacts


13.2.6 Early Outs




13.3 Primitive Collision Algorithms


13.3.1 Colliding two Spheres


13.3.2 Colliding a Sphere and a Plane


13.3.3 Colliding a Box and a Plane


13.3.4 Colliding a Sphere and a Box


13.3.5 Colliding two Boxes








V Contact Physics


14 Collision Resolution


14.1 Impulses and Implusive Torques


14.1.1 Impulsive Torque


14.1.2 Rotating Collisions


14.1.3 Handling Rotating Collisions




14.2 Collision Impluses


14.2.1 Change to Contact-coordinates


14.2.2 Velocity change by Impulse


14.2.3 Impulse change by Velocity


14.2.4 Calculating the Desired Velocity Change


14.2.5 Calculating the Impulse


14.2.6 Applying the Impulse




14.3 Resolving Interpenetration


14.3.1 Choosing a Resolution Method


14.3.2 Implementing Non-linear Projection


14.3.3 Avoiding Over-Rotation




14.4 The Collision Resolution Process


14.4.1 The Collision Resolution Pipeline


14.4.2 Preparing Contact Data


14.4.3 Resolving Penetration


14.4.4 Resolving Velocity


14.4.5 Alternative Update Algorithms


14.4.6 Summary








15 Resting Contacts and Friction


15.1 Resting Forces


15.1.1 Force Calculations




15.2 Micro-Collisions


15.2.1 Removing Accelerated Velocity


15.2.2 Lowering the Restitution


15.2.3 The New Velocity Calculation




15.3 Types of Friction


15.3.1 Static and Dynamic Friction


15.3.2 Isotropic and Anisotropic Friction




15.4 Implementing Friction


15.4.1 Friction as Impulses


15.4.2 Modifying the Velocity Resolution Algorithm


15.4.3 Putting it All Together




15.5 Friction and Sequential Contact Resolution






16 Stability and Optimization


16.1 Stability


16.1.1 Quaternion Drift


16.1.2 Interpenetration on Slopes


16.1.3 Integration Stability


16.1.4 The Benefit of Pessimistic Collision Detection


16.1.5 Changing Mathematical Accuracy




16.2 Optimizations


16.2.1 Sleep


16.2.2 Margins of Error for Penetration and Velocity


16.2.3 Contact Grouping


16.2.4 Code Optimisations


16.2.5 Optimisation Summary








17 Putting It All Together


17.1 Overview of the Engine


17.2 Using the Physics Engine


17.2.1 Ragdolls


17.2.2 Fracture Physics


17.2.3 Explosive Physics




17.3 Limitations of the Engine


17.3.1 Stacks


17.3.2 Reaction Force Friction


17.3.3 Joint Assemblies


17.3.4 Stiff Springs








VI Horizons


18 Other Types of Physics


18.1 Simultaneous Contact Resolution


18.1.1 The Jacobian


18.1.2 The Linear Complimentary Problem




18.2 Reduced Coordinate Approaches


18.3 Where to Look for More Information






Index
show more

About Ian Millington

Ian Millington is a partner of IPR Ventures, a consulting company developing next-generation AI technologies for entertainment, modeling, and simulation. Previously he founded Mindlathe Ltd, the largest specialist AI middleware company in computer games, working with on a huge range of game genres and technologies. He has a long background in AI, including PhD research in complexity theory and natural computing. He has published academic and professional papers and articles on topics ranging from paleontology to hypertext.
show more

Rating details

56 ratings
4.21 out of 5 stars
5 38% (21)
4 48% (27)
3 12% (7)
2 2% (1)
1 0% (0)
Book ratings by Goodreads
Goodreads is the world's largest site for readers with over 50 million reviews. We're featuring millions of their reader ratings on our book pages to help you find your new favourite book. Close X