Basically my physics engine design is that I have a 3D grid of bounding cubes the size of the scene.Each entity also has it's bounding volume.The grid is in an octree, so it very quickly tests with which of the smallest levels of boxes the bounding volume of each entity intersects.So basically for each entity I get a list of the indexes of all cubes it intersects.For each cube I get a list of indexes for all entities that intersect it.So then in the narrow phase each entity goes trough it's list of intersected cubes and for each of them it loops trough the list of the entities that intersect that cube and tests it against the entity.Is this a decent design or am I going in the wrong direction?I get a decent performance so far, so I was thinking I'd stick to it and start adding optimizations and having the entities have rest/active states, but I guess I wanted a consultation before I carry on.One thing that might give me trouble is integrating terrain collision into it, not sure how that'll work out.
Members - Reputation: 1158
Posted 26 February 2013 - 12:13 PM
For terrain you simple project your AABB into the plane and detect the quads it overlaps. If your terrain is a triangle mesh you could e.g. use an AABB tree. There are some other options for the broadphase as well. Instead of the octree your could use Sweep and Prune or a dynamic tree. But the octree is totally fine.
Edited by Dirk Gregorius, 26 February 2013 - 12:14 PM.
Members - Reputation: 356
Posted 26 February 2013 - 10:20 PM
Thanks for the input, If understand properly the sweep and prune method is faster, but the octree method is generally better for when you have really fast moving, really varying in size objects?After the narrow phase I have a third phase where I check against a composite shape between the two objects where the composite shape is made of boxes that match some of the bone matrices for the bigger bones, so they're basically hitboxes for the body/limbs of the characters.