An Overview of Collision Detection in OGRE 3D

OGRE3D provides some methods for collision detection. We, Japanese developers call collision detection “hit”. Before I explain collision detection, I list factors of collision detection to share our recognization:

  • It’s useful that many primitive form classes are defined for detect collisions. OGRE 3D provides ray, bounding sphere and Axis Aligned Bounding Box (AABB).
  • It’s possible to handle triangle and planes at Collision Detection.
  • OGRE3D doesn’t provide ellipse, cylinder and other high-order calculations.
  • It’s possible to detect a collision between Ray and a triangle of a mesh.
  • We often use low level of detail meshes to detect collision quickly. Does OGRE 3D provide the method to do it?

I want to append a little explanation to the last item “low level of detail meshes to detect collision quickly”. Japanese developers call such meshes “Hit Model”. I don’t know what to call it in English, so I describe it as Hit Model in this entry.

OGRE 3D provides all basic collision detections. Bounding Volume instances are generated automatically. For example, Mesh class generates Bounding Sphere and Bounding Box automatically and keep those. This thought is very happy and quick for programers, because they don’t think about tools that generate collision data. But, it may be issue for video game development.

In the beginning, you may want to know how to detect collision between Ray and World Geometry. If the world geometry of your game is not height map but a static mesh (rigid model), it’s easy to detect the collision. You need to check a collision between Ray and triangle of the world geometry. To do it, we use RaySceneQuery class instead of combination of primitive classes. This is very powerful thought.

A summary of RaySceneQuery is just Ray. But this class exists to handle collision detection. If you use Ray class, you have to write long code to detect collision between Ray and data of geometries in the scene that have possibility to collision with Ray. Plus, your program has to implement gradual detections from BoundingSphere to Triangle of the geometry with using Octree or Quadtree.

RaySceneQuery encapsulates such a standard collision detection process. RaySceneQuery returns the distance from the collision point, so it’s easy to do Y-undulation. Some kinds of SceneQuery sub-classes are defined for other classes that work for Collision Detection.

Now, what do you think you need for the standard collision detection process? The scene has many meshes. And a mesh has many triangles. Features that we request to the engine are the following:

  • 1) Removes the geometries that don’t have the possibility of collision with the ray from the candidates.
  • 2) Masks the geometries specified by us.
  • 3) Uses bounding volume for the first collision check.
  • 4) Keeps the gradation of 1) and re-uses at the next check.

Does RaySceneQuery provide these features? At the beginning, we want to understand all functions about collision detection of OGRE 3D.

Advertisements
This entry was posted in OGRE 3D and tagged . Bookmark the permalink.

One Response to An Overview of Collision Detection in OGRE 3D

  1. Eric says:

    Hi, we have released MOC, its a simple and lightweight opensource collision detection toolkit for Ogre3D. < HREF="http://www.artifexterra3d.com/moc-minimal-ogre-collision.php" REL="nofollow">Collision Detection Toolkit<>

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s