How Do I Do Object Collision Detection?

Started by
3 comments, last by NeoPnoy 24 years ago
Lets say we have objects around the world. Like a Cube, Pyramid, and a Sphere and i wanna move around these objects which is easy. Ok but now "HOW" do i do collision detection so if any of these objects should hit i could make it bounce backwards the opposite directions. Basically, how do i do 3D Object Collision Detection? *hint* Hope Nehe makes a tutorial for this ..leTs PuT oUr ImAgInAtiOn iN wOrK aNd sHoW iT tHrOuGh pRoGrAmMinG...
..leTs PuT oUr ImAgInAtiOn iN wOrK aNd sHoW iT tHrOuGh pRoGrAmMinG...
Advertisement
http://www.flipcode.com/tutorials/tut_collision.shtml

That is a decent tut on Collision detection.

Axehandler
There''s an article at gamedev.net

Visit our homepage: www.rarebyte.de.st

GA
Visit our homepage: www.rarebyte.de.stGA
i haven''t looked at these links so i''m hoping they will answer your question in more depth with code examples.

the simplest form of collision detection in 3-space is to use a spherical bounding *box*.

take 2 objects, draw an imaginary circle around them. obviously if the difference between the two spheres is larger than their cumulative circumference then the objects have not collided.

there are numerous gotchas here. first the obvious one is that all objects are not round and thus you can''t do true collision detection with just a simple sphere. imagine this in a 3d shooter where someone snipes next to your head but you still die because you had big ears!

so to improve on the first idea you can recursively partition an object into smaller elements and bound each piece with a sphere of it''s own. this still does not offer true detection but it is a major improvement over just one bounding sphere because each individual piece (like those big ears) are now surrounded by their own sphere.

you pay in processing here where you have to look at each piece of the object and see if it has collided with anything. If you think about it though, only certain parts of an object really need be tested to see if they have collided with anything. this is where structures like a bsp tree come in, and in my mind this is currently the most effective means of doing collision detection, but it is not trivial for the average programmer to undertake.

easier methods like drawing imaginary lines along a plane and checking for intersections will suffice for simple applications. they will also be used for things like imaginary bullets that have no real size, shoot straight as an arrow and do not decay in the air. (and you wondered why you could shoot a shotgun 800m in half life?)

i do not know of any really great links on this topic, i''ll definetly check out the ones mentioned here, but they do exist.

as a hint, make sure that you plan collision detection along with the development of your application. it is not always simple to go back and add it in, instead it is an integral part of your 3d world that all of your objects need to interact with.


The above is a very good explanation of bounding sphere collision detection. I want to point out that the author should have mentioned the bounding sphere collision is designed to tell whether two objects are close enough to each other to do more complex collision detection. Having smaller spheres around more important parts of an object is a very good idea, but you should still collision detect for the big sphere first so that you know whether to bother with checking the smaller spheres or not.

Morgan

This topic is closed to new replies.

Advertisement