Obi 3.5: What’s new
Obi 3.5 focuses on local-space simulation and collision performance. It includes inertial forces, makes colliders faster and more flexible, and adds Linux support.
Prior to 3.5 having multiple local-space solvers meant that you had to duplicate colliders used by all of them, and set up layers so that each solver picked up their own copy of the collider. This was a cumbersome workflow -specially when it comes to character clothing- and also not very efficient.
In 3.5, all colliders are shared among all solvers. This is great for two reasons: colliders are only sent to Obi once no matter how many solvers use them (this means much better performance), and you don’t need to specify which layers are considered by each solver (simpler workflow). Note that you can still use phases to control which colliders affect which particles.
Performance comparison of the CharacterCloth test scene between 3.4 and 3.5, running in a Core i7:
- Obi 3.4: 4 trenchcoat characters: 37 fps.
- Obi 3.5: 4 trenchcoat characters: 65 fps.
You can now also use multiple colliders per GameObject. Each ObiCollider component has a reference to the Collider being wrapped (by default the first one in the object), so you can give different material/phase/thickness to each one.
Thanks to these changes, the collider system is now simpler, faster, more flexible and easier to use. What’s not to like about that?
Up to now, when simulating in local space you could control how much of the world-space solver velocity was transferred to each actor in the solver.
3.5 lets you inject linear and angular velocities separately, and more importantly, it introduces inertia. We model inertial forces (coriolis, centrifugal and euler) which results in physically accurate behavior in local space. So now you have 4 controls for solvers in local-space mode:
- Linear velocity scale
- Angular velocity scale
- Linear inertia scale
- Angular inerte scale
Note that you should either use velocity scale or inertia scale, not both at once. Scaling velocity does not yield physically meaningful results, but can be useful for artistic purposes. You should use inertia scaling most of the time.
Instead of explaining how these forces work, we will show you what they do:
This point is pretty self-explanatory. You can now use Obi in 32, 64 bit and Universal Linux standalone builds. Let’s rejoice! 🙂
The profiler now uses a pyramid-graph to show the call hierarchy for each individual thread, and uses more human-readable names:
Hope you enjoy it!
The VM Team