9. Computational Geometry and Collision Detection - 3D Graphics and Game Development Course

Post on 09-Dec-2014

1.771 views 1 download

Tags:

description

Main topics:In this presentation, part of the 3D graphics and game develpment course, we discuss vectors, the vector dot product, the vector cross product and collision detection.http://academy.telerik.com/.../3d-game-development-openglTelerik Software Academy: http://www.academy.telerik.comThe website and all video materials are in Bulgarian

Transcript of 9. Computational Geometry and Collision Detection - 3D Graphics and Game Development Course

Computational Geometry &

Collision detectionVectors, Dot Product, Cross Product,

Basic Collision Detection

George Georgiev

http://academy.telerik.com

Technical Trainer

academy.telerik.com

/.../3d-game-developm

ent-opengl

George AtanasovFront-End Developer

Table of Contents

Vectors Extended revision

The vector dot product The vector cross product Collision detection

In Game programming

Sphere collision

Bounding volumes

AABBs 2

VectorsRevision, Normals, Projections

Vectors – revision

4

Ordered sequences of numbers OA (6, 10, 18) – 3-dimensional

OA (6, 10) – 2-dimensional

OA (6, 10, 18, -5) – 4-dimensional

Have magnitude and direction

A

Vectors – revision

5

No location Wherever you need them

Can represent points in space Points are vectors with a beginning

at the coordinate system center Example:

Point A(5, 10) describes the location (5, 10)

Vector U(5, 10), beginning at (0, 0), describes ‘the path’ to the location (5, 10)

Vectors – revision

6

All vectors on the same line are called collinear Can be derived by scaling any

vector on the line E.g.: A(2, 1), B(3, 1.5), C(-1, -0.5) are

collinear

Two vectors, which are not collinear, lie on a plane and are called coplanar => Two non-collinear vectors define

a plane

Three vectors, which are not coplanar, define a space

Vectors – revision Collinear vectors:

Coplanar vectors:

7

Vectors – revision Vectors defining a 3D vector space

8

Vectors – revision Perpendicular vectors

Constitute a right angle

Deriving a vector, perpendicular to a given one: Swap two of the coordinates of the

given vector (one of the swapped coordinates can’t be zero)

Multiply ONE of the swapped coordinates by -1

Example:

A (5, 10) given => A’(-10, 5) is perpendicular to A

V (3, 4, -1) given => V’(3, 1, 4) is perpendicular to V

9

Vectors – revision

Normal vectors to a surface Constitute a right angle with flat

surfaces Perpendicular to at least two non-

collinear vectors on the plane

Constitute a right angle with the tangent to curved surfaces

10

Vectors – revision Projection of a vector on another vector

11

Vector Dot ProductDefinition, Application, Importance

Vector dot product Dot Product (a.k.a. scalar product)

Take two equal-length sequences e.g. sequence A (5, 6) and sequence

B (-3, 2)

Multiply each element of A with each element of B A [i] * B [i]

Add the products Dot Product(A, B) =

A[0] * B[0] + A[1] * B[1] + … + A[i] * B[i] + … + A[n-1] * B[n-1] 13

Vector dot product Dot Product (2)

Example: A (5, 6) B (-3, 2) = 5 * (-3) + 6 * 2

= -15 + 12 = -3

Result A scalar number

14

Vector dot product Dot product of coordinate vectors

Take two vectors of equal dimensions

Apply the dot product to their coordinates 2D Example:

A(1, 2) . B(-1, 1) = 1*(-1) + 2*1 = 1

3D Example:

A(1, 2, -1) . B(-1, 1, 5) = 1*(-1) + 2*1 + (-1) * 5 = -4

Simple as that15

Vector dot product Meaning in Euclidean geometry

If A(x1, y1, …), B(x2, y2, …) are vectors

theta is the angle, in radians, between A and B

Dot Product (A, B) = A . B = = |A|*|B|*cos(theta)

Applies to all dimensions (1D, 2D, 3D, 4D, … nD)

16

Vector dot product Meaning in Euclidean geometry (2)

If U and V are unit vectors, then U . V = cosine of the angle between U and V

the oriented length of the projection of U on V

If U and V are non-unit vectors ( U . V ) divided by |U|*|V| = cosine of

the angle between U and V

( U . V ) divided by |V| = the oriented length of the projection of U on V 17

Vector dot product Consequences

If A . B > 0, A and B are in the same half-space

If A . B = 0, A and B are perpendicular

If A . B < 0, A and B are in different half-spaces

Applications Calculating angles

Calculating projections

Calculating lights

Etc…

18

Dot Product ComputationLive Demo

Vector Cross ProductDefinition, Features, Application

Vector cross product Cross product

Operates on vectors with up to 3 dimensions

Forms a determinant of a matrix of the vectors

Result – depends on the dimension In 2D – a scalar number (1D)

In 3D – a vector (3D)

Not defined for 1D and dimensions higher than 3

21

2D Vector cross product 2D Cross product

Take the vectors U(x1, y1) and V(x2, y2)

Multiply their coordinates across and subtract:

U(x1, y1) x V(x2, y2) = (x1 * y2) – (x2 * y1)

Result A scalar number

22

2D Vector cross product Scalar meaning in Euclidean geometry

If U(x1, y1) and V(x2, y2) are 2D vectors

theta is the angle between U and V

Cross Product (U, V) = U x V = = |U| * |V| * sin(theta)

|U| and |V| denote the length of U and V

Applies to 2D and 3D23

2D Vector cross product Scalar meaning in Euclidean geometry (2) For every two 2D vectors U and V

U x V = the oriented face of the parallelogram, defined by U and V

For every three 2D points A, B and C If U x V = 0, then A, B and C are

collinear

If U x V > 0, then A, B and C constitute a ‘left turn’

If U x V < 0, then A, B and C constitute a ‘rightturn’

24

2D Vector cross product Applications

Graham scan (2D convex hull)

Easy polygon area computation Cross product divided by two equals

oriented (signed) triangle area

2D orientation ‘left’ and ‘right’ turns

25

2D Cross Product Computation

Live Demo

3D Vector cross product 3D Cross product

Take two 3D vectors U(x1, y1, z1) and V(x2, y2, z2)

Calculate the following 3 coordinates

x3 = y1*z2 – y2*z1

y3 = z1*x2 – z2*x1

z3 = x1*y2 – x2*y1

Result

A 3D vector with coordinates (x3, y3, z3)

27

3D Vector cross product Meaning in Euclidean geometry

The magnitude Always positive (length of the vector)

Has the unsigned properties of the 2D dot product

The vector Perpendicular to the initial vectors U

and V

Normal to the plane defined by U and V

Direction determined by the right-hand rule

28

3D Vector cross product The right-hand rule

Index finger points in direction of first vector (a)

Middle finger points in direction of second vector (b)

Thumb points up in direction of the result of a x b

29

3D Vector cross product

30

Unpredictable results occur with Cross product of two collinear

vectors

Cross product with a zero-vector

Applications Calculating normals to surfaces

Calculating torque (physics)

3D Cross Product ComputationLive Demo

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

Computational geometry

http://academy.telerik.com/

Collision detectionBasics, Methods, Problems,

Optimization

Collision detection

34

Collisions in Game programming Any intersection of two objects’

geometry

Raise events in some form

Usually the main part in games

Collision response – deals with collision events

Collision detection

35

Collision objects Can raise collision events

Types Spheres

Cylinders

Boxes

Cones

Height fields

Triangle meshes

Collision detection

36

Sphere-sphere collision Easiest to detect

Used in particle systems

low-accuracy collision detection

Collision occurrence: Center-center distance less than sum

of radiuses

Optimization Avoid computation of square root

Sphere-sphere collision detection

Live Demo

Collision detection

38

Triangle meshes collision Very accurate

Programmatically heavy

Computation heavy (n2)

Rarely needed

Collision detection

39

Collision detection in Game programming Combines several collision models

Uses bounding volumes

Uses optimizations Axis-sweep

Lower accuracy in favor of speed

Collision detection Bounding volumes

Easy to check for collisions Spheres

Boxes

Cylinders, etc.

Contain high-triangle-count meshes

Tested for collision before the contained objects If the bounding volume doesn’t

collide, then the mesh doesn’t collide40

Collision detection Bounding sphere

Orientation-independent

Center – mesh’s center

Radius distance from mesh center to

farthest vertex

Effective for convex, oval bodies

mesh center equally distant from surface vertices

rotating bodies41

Bounding sphere generationLive Demo

Collision detection Minimum bounding sphere

Center – the center of the segment, connecting the two farthest mesh vertices

Radius – the half-length of the segment, connecting the two farthest mesh vertices

Efficient with convex, oval bodies

rotating bodies

Sphere center rotated with the other mesh vertices

43

Minimum bounding sphere generation

Live Demo

Collision detection Axis-aligned bounding box (AABB)

Very fast to check for collisions

Usually smaller volume than bounding spheres

Edges parallel to coordinate axes

Minimum corner coordinates – lowest coordinate ends

of mesh

Maximum corner coordinates – highest coordinate

ends of mesh45

Collision detection Axis-aligned bounding box (2)

Efficient with non-rotating bodies

convex bodies

oblong bodies

If the body rotates, the AABB needs to be recomputed

46

Axis-aligned bounding box generation

Live Demo

Collision detection Checking AABBs for collision

Treat the minimum and maximum corners’ coordinates as interval edges

3D case If the x intervals overlap

And the y intervals overlap

And the z intervals overlap

Then the AABBs intersect / collide

48

Axis-aligned bounding box collision detection

Live Demo

Collision detection Oriented bounding box (OBB)

Generated as AABB

Rotates along with the object’s geometry

Advantage: Rotating it is much faster than

creating an new AABB

Usually less volume than AABB

Disadvantage: Much slower collision check 50

Oriented bounding box updating

Live Demo

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

Computational geometry & Collision

detection

http://academy.telerik.com/

Free Trainings @ Telerik Academy

3D Graphics and Game Development academy.telerik.com/.../3d-game-de

velopment-opengl

Telerik Software Academy academy.telerik.com

Telerik Academy @ Facebook facebook.com/TelerikAcademy

Telerik Software Academy Forums forums.academy.telerik.com