Frequently asked questions

General

Why are there several Obi assets in the store?

All the assets share the same core physics solver, and the same philosophy: everything (cloth, fluids, ropes...) is made out of particles, which are small lumps of matter that relate to each other trough the use of constraints. However, most often there's no use for a unified physics engine in games. So instead of having a single, very expensive asset that can simulate all of the above, we split Obi in multiple smaller assets. This way you only pay for what you need, and it is still possible to use all assets together if you own them all.

Upon importing Obi into my project, I see a bunch of "DllNotFoundException: libOni" errors. How can I fix them?

Simply restart Unity. Sometimes, Unity fails to load new native libraries upon importing them. The only way to force a reload is to restart Unity.

How do I install several Obi assets (eg. ObiCloth and ObiRope) together in the same project?

First make sure both assets are the same version (for instance, you can't install 5.1 and 6.2 together in the same project). Then, simply import both packages into the project.

How do I know which Obi version I have installed?

There should be a CHANGELOG_<assetname>.txt file in the Obi/ installation folder. It contains a register of all notable changes to Obi over time in reverse chronological order (latest changes first). The version you have installed appears at the top of the file.

Is Obi easy to use for a complete beginner?

It depends on what your goals are. If you want to make something more complex than a simple flag or a water faucet, most likely the answer is no. Obi is a powerful, large and complex system. If it makes sense for a particular parameter to be exposed to the user, Obi does expose it. No compromises were made in its design to trade flexibility for ease of use. A considerable amount of effort was put into making it 'as simple as possible, but not simpler'.

Throughout the manual, API documentation and engine design, basic 3D math/simulation concepts (like vector spaces, inertial forces, mass or fixed timestepping) aren't explained in detail. It's a good idea to familiarize yourself with these before attempting to use Obi in a real-world project.

The good news is that if you devote enough time to it, it will pay off. Also it will help you grasp a lot of essential simulation concepts that can be easily transferred to other physics simulators. You'll wonder why these other simulators impose so many artificial limits on what you can do with them.

Is scripting / coding required to use Obi?

For anything except the bare basics, yes. Obi is written in HPCS (high performance C#) and C++11, and it exposes a C# API. Obi deals with hundreds of particles and thousands of constraints every frame. These are exposed to you, the user, so learning how to write performant code is a prerequisite.

Does Obi run in the GPU?

No. The core physics solver runs 100% in the CPU. Only rendering is done using the GPU.

Can Obi be regarded as a fast simulator, for CPU standards?

Yes. It is extremely well optimized. A task-based multithreading scheme is used to split workload into evenly sized chunks. All the math-heavy routines are SIMD accelerated.

What platforms are currently supported?

Depends on the simulation backend used (see backends).
If using Burst, you can build for all platforms supported by Unity's Burst compiler, including consoles.
If using Oni, you can build for Windows, Linux, OSX, iOS, and Android.

Does it support VR (Virtual Reality)?

Cloth, Rope and Softbodies support VR. For Obi Fluid, you will have to use separate cameras for each eye since the renderer does not support single-pass stereo rendering.

Does it support SRP (Scriptable Render Pipeline)?

Cloth, Rope and Softbodies support all SRPs out of the box, since they do not perform any custom rendering. Obi Fluid does include a custom rendering pipeline based on screen-space ellipsoid splatting, that currently supports the built-in pipeline and the URP (no HDRP support yet).

Does it support Configurable Enter Play Mode?

Obi 6.4 and above do. Older versions do not support configurable enter play mode, since disabling domain reloading requires special handling of static data which wasn't available back then.

Is the core physics library source code included?

The full C# source code for the Burst backend is included. The source code for the Oni backend is not. Oni is written in highly portable C++14. We do license it on a per-case basis, so contact us if you're interested.
Sources for everything else (C# MonoBehaviours, classes, shaders, etc.) are included.

Backends

The Burst backend runs very slow compared to the default one (Oni). Is this a bug?

Having the jobs debugger/leak detection/Burst timings enabled in-editor will degrade performance of any Burst-compiled jobs considerably. Our of these three, the one that impacts performance the most is the jobs debugger. Make sure you disable it for normal performance while running inside the editor. See the manual page regarding backends.

Obi Rope

I can't see the path editor when clicking the Edit Path button in the rope inspector. Is this a bug?

The rope inspector is a sceneview window, and Unity won't draw sceneview windows if any inspector is in debug mode. Close all inspectors in debug mode (easiest, quickest way is to revert the window layout to the default) and it will become visible again.

Collisions

I set up colliders as explained in the manual, but I canĀ“t get Obi objects to collide with them. Is this a bug?

Most likely the cause is that collisions are being filtered out. In 6.1 and older versions, only particles and colliders in separate phases will generate contacts. In 6.2 and up, particles and colliders use categories and masks to determine if they should collide with each other. Also, keep in mind that PolygonCollider2D is not currently supported. See the collisions manual page for detailed info.

I have two actors (ropes, cloth, softbodies) and they don't collide with each other. Is this a bug?

Most likely the cause is that collisions are being filtered out. In 6.1 and older versions, only particles in separate phases will generate contacts. You can set the phase value on a per-particle basis in the blueprint editor for cloth and softbodies. For ropes, you can define it per-control point in the path editor. In 6.2 and up, particles use categories and masks to determine if they should collide with each other. See the collisions manual page for detailed info.

I've upgraded my project to Obi 6.2, and collisions are no longer working. Is this a bug?

Most likely the cause is that collisions are being filtered out. Obi 6.2 replaced the phase system with categories and masks, which are more flexible and easier to use. You will need to update your collision filtering setup. Easiest fix is to set your actor's and collider's "Collide with" masks to "Everything". See the collisions manual page for detailed info.