Troubleshooting

In this page you'll find help regarding common pitfalls and known issues.

All Obi assets

My project uses URP or HDRP, and when importing Obi all sample scenes look pink and/or fluid doesn't appear. Is it broken?

All sample scenes included with all Obi assets are authored for Unity's default pipeline, which is the built-in render pipeline (BiRP). If you're using a Scriptable Render Pipeline, you will need to update the materials in these scenes to use a shader compatible with your pipeline. See the setup steps.

Despite installing package dependencies, the Burst backend isn't working / a warning appears in the ObiSolver inspector

Make sure you've installed the Jobs package. It is a preview package, so it may not appear in the package manager unless you've enabled pre-release packages in the package manager. Alternatively, you can install it by git url, the package name is com.unity.jobs. See backends for details. If the issue persists, please contact us.

After installing package dependencies, I get the following error: error CS1061: 'UnsafeList' does not contain a definition for 'length'

Some versions of the Collections package use length, others use Length with capital L. Unity's API auto-updater doesn't pick this one up, we're working on using version defines to conditionally compile the correct version. As a workaround you can manually open up Obi/Scripts/Common/Backends/Burst/DataStructures/NativeMultilevelGrid.cs and replace occurrences of length with Length.

My rope/rod/cloth/fluid/softbody passes trough other objects in the scene

In case collisions aren't working properly or at all, here's things to check:

  • Are collision constraints globally enabled in your ObiSolver component? Look under the "constraints" foldout, the checkbox next to "Collisions" should be on.
  • Have you added a ObiCollider component to the objects you want your Obi actor to collide against?
  • Did you check collision filters on both the collider and the Obi actor, making sure they allow for collisions to take place?

If all the above points are OK and collisions still don't work properly, it could be due to insufficient spatial or temporal resolution. To check whether spatial sampling is the culprit, add a ObiParticleRenderer component to your Obi actor. This will allow you to visually inspect its particle-based representation, and look at how particles behave. If there's large gaps in between the particles, other objects might slip trough. You can fix this by adding more particles or increasing their radius, this is done differently depending on the specific actor:

ObiCloth:
Particle radius is specified using the cloth blueprint editor. To add more particles, subdivide your mesh further in a modelling program.
ObiSoftbody:
Particle resolution and radius specified using the softbody blueprint editor.
ObiRope / ObiRod:
Particle resolution is specified in the blueprint inspector, and radius is specified on a per-control point basis using the path editor.
ObiFluid:
Particle resolution is specified in the emitter's blueprint.

If you don't want to increase the amount of particles or their radius, you can try using surface collisions. These will consider the gaps in between particles as solid matter, however they only work for ropes/rods and cloth.

Lastly, temporal resolution might be the issue. This is specially the case when your actors and/or objects are thin and move fast. This can cause tunneling, which is a common phenomenon suffered by all physics engines where objects pass right trough each other. The solution in this case is to either decrease Unity's fixed timestep, or increase the amount of substeps used by your Obi Updater.

ObiCloth

Some of the sample scenes look garbled/broken

Broken character cloth
Broken soccer goal mesh

If some of the cloth meshes in the included sample scenes seem broken ("spiky", or looking like a triangle soup), that means the Unity version you're using to run the scenes serializes mesh vertices in an order different than the Unity version the scenes were created with. As a result, cloth thinks vertices are in some specific order, but Unity renders the mesh using a different order which causes visual glitches.

The solution is simple, if tedious: re-generate the cloth blueprints, and setup any per-particle properties/attachments again. Note this is only necessary when opening existing sample scenes in a Unity version whose mesh serialization system uses a different vertex ordering, in recent Unity history this has only happened twice: in 2019.1 and 2021.2. It won't happen when you create your own cloth setups. Unfortunately there's nothing we can do on our end to prevent this, since we don't know when/if Unity will modify its mesh import pipeline and change vertex ordering again.

ObiSoftbody

Some of the sample scenes look garbled/broken

Broken dragon softbody

If some of the cloth meshes in the included sample scenes seem broken ("spiky", or looking like a triangle soup), that means the Unity version you're using to run the scenes serializes mesh vertices in an order different than the Unity version the scenes were created with. As a result, softbodies think vertices are in some specific order, but Unity renders the mesh using a different order which causes visual glitches.

The solution is simple: click the "Bind skin" button in the ObiSoftbodySkinner component. This will rebind the mesh vertices to the softbody particles in the correct order. Note this is only necessary when opening scenes in a Unity version whose mesh serialization system uses a different vertex ordering, in recent Unity history this has only happened twice: in 2019.1 and 2021.2. It won't happen when you create your own softbody setups. Unfortunately there's nothing we can do on our end to prevent this, since we don't know when/if Unity will modify its mesh import pipeline and change vertex ordering again.

Obi Fluid

I'm using URP 15/16, but getting errors related to RTHandle, like: 'Use RTHandle for colorAttachment'

RTHandles are a new API in URP 15, which replace manual handling of render targets. This means any ScriptableRendererFeatures written for previous URP versions are incompatible with URP 15 and up. This API is also subject to change in the future, replaced with the RenderGraph API. For this reason, we have made a temporary patch available which will allow you to run the fluid renderer in URP 15/16 in the meantime. You can download it here.

My project uses URP or HDRP, and when importing Obi Fluid all sample scenes look pink and/or fluid doesn't appear. Is it broken?

All sample scenes included with all Obi assets are authored for Unity's built-in render pipeline (BiRP). If you're using a Scriptable Render Pipeline, you will need to update the materials in these scenes to use a shader compatible with your pipeline. See the setup steps. Furthermore, ObiFluid's fluid rendering only works in the built-in render pipeline and URP's 3D renderer, there's no support for URP's 2D lighting system or for HDRP. To learn how to set up fluid rendering for URP, see fluid rendering.