We’re pleased to anounce the release of our Concave Collider component.
The Concave Collider is a component for Unity that enables complex and accurate collisions.
In Unity mesh to mesh collisions only work if at least one of the meshes is convex. The Concave Collider helps overcoming this limitation by providing a way to automatically compute a set of colliders that can fit any shape; convex or not. And with just one click!
The Concave Collider also includes 5 sample scenes with 3D models and different use case scenarios:
Scene 1: A spaceship comparing the standard collider vs the concave collider
Scene 2: An axe model comparing the standard collider vs the concave collider
Scene 3: Various gun models comparing the standard collider vs the concave collider
Scene 4: A physics scene where spheres fall into two buckets, one using the concave collider and the other one using the standard collider.
Scene 5: A physics scene with interconnected rings, also comparing colliders.
Requirements:
Unity3D Pro 3.5 or higher and Windows or Mac. Products shipped will work on any platform.
Scenes have been created using Unity 3.5.5f3.
Here’s the component in action. All scenes are included in the package:
And here are some screenshots. All content is included in the package:
New default algorithm that works way faster than before. Now there are 3 algorithms available that hopefully can suit any object.
Dynamic prefab instancing support. Now you can make prefabs out of objects having the concave collider and instance them using the editor or at runtime through scripting.
A couple of new parameters for even better adjustment.
It needs the pro version only to generate the hulls, because it relies on an external dll to work and plugin support is a pro-only feature. The products you ship though can run on any platform, it’s just for the editor
The Concave Collider is useful for dynamic objects. For static objects like walls, floors etc. you can rely on the standard Unity collider.
Usually you set up the scenario (static elements) with the standard collider and the convex option unchecked, and use the concave collider on the dynamic objects that requiere precise collisions. Sometimes you can just approximate them with the built in primitive colliders (box, spheres, cylinders) but many times like the video shows you can’t. This is where our Concave Collider comes in handy
This looks really neat. What sort of performance impact does this have (if any)? For example, with your axe demonstration you run through several hull-levels. Would you reduce the number purely for performance concerns, or is that not the issue?
For a single object, performance wouldn’t be an issue. The axe demonstration is just to show different outputs playing with the settings.
But if you use it on a large number of dynamic objects that will interact with each other, it is important to be able to limit the number of generated hulls and also the number of vertices. Especially on mobile platforms, physics can be the bottleneck if you use too many objects with a large number of colliders.
Yes, we noticed it shortly after sending the package. It has been updated, thanks
It actually works internally as a compound collider, but instead of primitives we generate a compound collider using convex meshes.
Performance-wise, primitives like cubes, spheres etc will always be faster than arbitrary convex meshes, as collisions against a primitive are internally computed using a single formula. But there are many cases where you can’t approximate an object with primitive colliders unless you create a lot of them or you just sacrifice precision (and it it time consuming!).
No, usually characters use a simple capsule or cylinder collider for collisions against walls. In that case I’d recommend using continuous collision detection (see the “Collision Detection” parameter on the RigidBody component) and/or increasing the RigidBody’s solver iteration count through scripting (see http://docs.unity3d.com/Documentation/ScriptReference/Rigidbody.html)
The basic rule is, if you are creating a lot of dynamic objects with concave colliders attached, you should play with the settings to use the lowest possible number of hulls and vertices that still generate an acceptable result.
If you instance dozens of objects with a hundred hulls each, you’ll easily have performance issues. In that case maybe just limiting it to say, 5-8-16 each you may still have the same results and have no performance issues at all.
Here is another example of the Concave Collider with a spaceship.
From left to right: The spaceship, the same mesh using the standard Unity3D collider and the same mesh using the Concave Collider component.
In this case we’ve limited the amount of hulls to 16, enough to cope with all the pointy parts, engines and tail. It took us 10 seconds to set this up. Imagine doing this by hand!
If you need accurate collision detection with the scenario, enemies and laser/missile hits, you can’t just rely on a single hull. Concave Collider FTW!
Any chance of Mac editor support with the native dll? Would love to not have to switch over to Windows to make some colliders. I’d be happy to test this if you’d like.
It seems between tomorrow and the day after tomorrow we’ll have a chance to compile a native mac plugin. The code is very platform independent, hopefully we can have some good news!