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.

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, cloth and surface softbodies.

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 Solver.

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: in case you're not using a custom skinmap, re-generate the cloth blueprint, or if you're using a custom skinmap, simply click the "Bind" button in your ObiClothRenderer. 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

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 rendering requires specific steps to set it up in URP/HDRP. To learn how to set up fluid rendering see fluid rendering.

I'm getting a ShaderGraph error similar to: Shader error in 'Shader Graphs/IndirectTransparent': invalid subscript 'shadowCoord'

There seems to be an issue in ShaderGraph that causes compilation errors when an unused render pipeline is included in the list of active targets. Open up the offending shader in ShaderGraph, and remove the unused render pipeline from the list of active targets:


I'm using the Vulkan rendering API, however fluid meshes are invisible.

As of writing this, ShaderGraph has no official support for indirect or procedural drawing (drawing meshes built directly on the GPU, such as the fluid's surface). Unity has stated this is a planned feature and it is on their roadmap. Since hand-writting shaders for either URP or HDRP is a fool's errand due to the lack of tools or documentation and there's no proper support for surface shaders either (albeit they've also been on the roadmap for a long, long time), in practice this means there's simply no official support for indirect/procedural drawing in SRPs - which is crippling to say the least.

This said, currently there's unofficial ways to twist ShaderGraph's arm and force it to render indirect meshes. Sadly, there's situations where ShaderGraph rebels and Vulkan is one example of this. Specifically, reflection probes seem to return NaN in Vulkan when attempting to use indirect drawing in ShaderGraph. This means that the you will need to disconnect the reflection probe node in the fluid shader (IndirectTransparent) and replace it with a constant color for fluid meshes to show up. Contact us if you need help with this.

If these lines seem to seep out frustration, well, it's because Unity can be frustrating sometimes. So if you want to see proper support for indirect/procedural drawing in ShaderGraph working across all platforms/APIs as much as we do, vote for it the roadmap!.