Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  DIINotFoundException when attempting to import ObiRope
#1
Hello,

I was trying to use ObiRope in Unity 2022.3.18f1 URP. When importing the package via Package Manager, I encountered the following errors
[Image: AccJccH]
Code:
DllNotFoundException: libOni assembly:<unknown assembly> type:<unknown type> member:(null)
Obi.OniBackend.CreateSolver (Obi.ObiSolver solver, System.Int32 capacity) (at Assets/Obi/Scripts/Common/Backends/Oni/OniBackend.cs:17)
Obi.ObiSolver.Initialize () (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:883)
Obi.ObiSolver.AddActor (Obi.ObiActor actor) (at Assets/Obi/Scripts/Common/Solver/ObiSolver.cs:1148)
Obi.ObiActor.AddToSolver () (at Assets/Obi/Scripts/Common/Actors/ObiActor.cs:348)
Obi.ObiActor.OnEnable () (at Assets/Obi/Scripts/Common/Actors/ObiActor.cs:323)

DllNotFoundException: libOni assembly:<unknown assembly> type:<unknown type> member:(null)
Obi.ObiProfiler.DisableProfiler () (at Assets/Obi/Scripts/Common/Utils/ObiProfiler.cs:84)
Obi.ObiFixedUpdater.Update () (at Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs:67)


Not sure how to resolve, as the example scenes don't seem to work (I don't see any rope appearing). Some of the materials are also failing to convert to URP (namely the VertexColor one). Would appreciate any help in resolving this!

EDIT: Reading thru the documentation, I made sure Burst, Jobs, Mathematics, and Collections packages are imported as well. However, when I'm trying to open my project again, I get the following compile error

Assets/Obi/Scripts/Common/Backends/Burst/DataStructures/NativeMultilevelGrid.cs(74,46): error CS1061: 'UnsafeList<K>' does not contain a definition for 'length' and no accessible extension method 'length' accepting a first argument of type 'UnsafeList<K>' could be found (are you missing a using directive or an assembly reference?)

I was able to quickly change the code from contents.length to contents.Length to fix this. Afterwards project was able to open, but I still get the above DIINotFoundException when attempting to play the example scenes.
Reply
#2
Hi there!

As stated in the store description and the manual, Obi requires Burst, Jobs, Mathematics, and Collections to work. If it doesn't find them installed it will attempt to fall back to a native-library based backend, which only has support for Windows, Linux and Intel Macs. In particular, it doesn't support the Apple Silicon architecture so if you're using it you'll encounter the libOni.dll not found exception.

Make sure your ObiSolver components do not have the following warning in them:
[Image: burst_warning.png]

If they do, that means some package is missing or uses an older version than supported. Please refer to the manual for a list of minimum versions for each package.

(11-06-2024, 05:21 AM)orangefire Wrote: I was able to quickly change the code from contents.length to contents.Length to fix this.

Some versions of Collections use length and some use Length with a capital L, Unity's auto API updater should take care of this. Changing it manually is also possible.

(11-06-2024, 05:21 AM)orangefire Wrote: Afterwards project was able to open, but I still get the above DIINotFoundException when attempting to play the example scenes.

Some of the sample scenes contain a ObiProfiler component, that will only work when using the fallback system. In your case you should remove this component since the fallback isn't supported at all in your architecture.

(11-06-2024, 05:21 AM)orangefire Wrote: Some of the materials are also failing to convert to URP (namely the VertexColor one).

Not all of the included sample materials have URP equivalents, so Unity may fail to automatically convert them:

http://obi.virtualmethodstudio.com/manua...setup.html
Quote:Unity may fail to convert all materials in a scene, in that case you can just select the remaining pink objects and change their material/shader to an URP/HDRP compatible one.

The VertexColor one is just the built-in's pipeline Standard shader with added vertex color support. Any URP material with vertex color support can be used instead of it. Note this is not necessary for the asset to work, since rendering and simulation are completely orthogonal to each other.

kind regards,
Reply
#3
Thanks for your detailed reply! Was able to get it working Sonrisa
Reply
#4
Thank you for this asset .. I was able to get the sample scene working perfectly, although with the same error trace from the obi-profiler mentioned here (and in several other places).

I have verified that all of the pre-requisites installed .. AGAIN, aside from error trace coming out of the console, the scene works perfectly ..

It looks like the preprocessor is defining OBI_ONI_SUPPORTED even though I am on a silicon Mac, which should not support ONI (so it should never actually reach this code) .. Am I understanding correctly?  The error message is coming out because some part of this code thinks my silicon-mac supports ONI?  I tried removing 

>> for .. the 'disable smiles' checkbox is hilarious ..
Reply
#5
(23-07-2024, 02:45 AM)mhannum72 Wrote: Thank you for this asset .. I was able to get the sample scene working perfectly, although with the same error trace from the obi-profiler mentioned here (and in several other places).

I have verified that all of the pre-requisites installed .. AGAIN, aside from error trace coming out of the console, the scene works perfectly ..

It looks like the preprocessor is defining OBI_ONI_SUPPORTED even though I am on a silicon Mac, which should not support ONI (so it should never actually reach this code) .. Am I understanding correctly?  The error message is coming out because some part of this code thinks my silicon-mac supports ONI?  I tried removing 

Hi!

Make sure you're not using a ObiProfiler component in your scene. This component is used to profile the Oni backend (since it's a native library and doesn't show up in Unity's built-in profiler). If this component exists in your scene and your architecture doesn't support Oni, the simulation will work but you'll still get the error message as the ObiProfiler tries to access the dll.

let me know if I can be of further help,

(23-07-2024, 02:45 AM)mhannum72 Wrote: >> for .. the 'disable smiles' checkbox is hilarious ..

That's because smiles are enabled by default around here! Gran sonrisa. So are good vibes Sonrisa
Reply