Are low poly collision meshes necessary?

Level design, models, animations, physics, etc.
2 posts Page 1 of 1
Duion
Posts: 833
Joined: Sun Feb 08, 2015 1:51 am
 
  by Duion » Mon Jul 24, 2017 2:08 pm
When modeling my stuff I always wonder if it is really necessary to model low poly collisionmeshes. It is said you should for performance reasons, but usually you can just use the visible mesh and it works fine, there is no performance problem with that. Organic high poly shapes like player models of course should have low poly collisions, but in case of the player a whole other system is used with the bounding box.

So when does it make sense to use low poly collision meshes?

I made some tests and only really high poly objects give performance hit if you use visible mesh for collision, for example I made a metal grid that the player walks on, all out of meshes and with visible mesh collision and there was a noticeable performance drop when walking over it.
For regular scenery objects visible mesh works fine in most cases, also I could imagine physical objects that are rigid and/or destructible and fly around a lot profit a lot from as low as possible collision polygons.
JeffR
Steering Committee
Steering Committee
Posts: 757
Joined: Tue Feb 03, 2015 9:49 pm
 
by JeffR » Mon Jul 24, 2017 3:46 pm
The lowpoly/convex collision meshes will always be cheaper to process, and it's not too hard to understand why when you look at how collisions are actually processed.

When you test a collision mesh, the Convex object is created, which containts the vertex/tri info of that convex collision mesh, and it's all stored in a singular package. When we go to test collisions against this, we can quickly iterate the entire mesh because we know the data inside it is stored as a convex, which lets us make several - efficient - assumptions about the math we need to successfully test for a collision. The math to test convex intersections is far simpler - and therefore faster - than concave.

When setting up a collision for a visible mesh, aka polysoup, we have no way of knowing how the tris are set up, so the smart assumption is that if they're doing a visible mesh collision, it's not going to be convex shaped. So what we end up doing is iterating over each triangle, which gets it's own Convex entry, where we can use the efficient math. This keeps it simple and standard, but does mean that the denser your mesh is, the more Convex are created, and the more time it takes to process a collision. So it ramps linearly.
2 posts Page 1 of 1

Who is online

Users browsing this forum: No registered users and 1 guest