Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Using Obi Cloth On M1 Mac
#1
We have recently upgraded our developer machines to Macbook Pro with the M1 (Apple Silicon) processor and want to upgrade to a newer version of Unity that runs natively on it (2021.2.3f1 Apple Silicon version). But when I tried to run the game on that version, I get the error:

DllNotFoundException: libOni assembly:<unknown assembly> type:<unknown type> memberTristenull)

I've tried upgrading to most recent version of Obi Cloth but still couldn't find a dll in it that supported Apple Silicon. Am I missing something or have you not released a version for M1 yet?
Reply
#2
(02-12-2021, 11:03 AM)oayhan Wrote: We have recently upgraded our developer machines to Macbook Pro with the M1 (Apple Silicon) processor and want to upgrade to a newer version of Unity that runs natively on it (2021.2.3f1 Apple Silicon version). But when I tried to run the game on that version, I get the error:

DllNotFoundException: libOni assembly:<unknown assembly> type:<unknown type> memberTristenull)

I've tried upgrading to most recent version of Obi Cloth but still couldn't find a dll in it that supported Apple Silicon. Am I missing something or have you not released a version for M1 yet?

Hi!

The fallback backend uses a native library (dll) to run in absence of the required package dependencies. This library is not yet compiled for M1, will be in future updates.

You should not be using the fallback backend anyway, it's only used if you explicitly force a solver to or if you haven't installed the required packages (in that case, the ObiSolver component will show a warning and fall back to it).

Use the default backend (Burst) instead: it runs on M1, has wider platform compatibility, performs better, and lets you use Unity's built-in profiler, among other benefits. Install the required Burst backend dependencies as explained in the setup:
http://obi.virtualmethodstudio.com/manua...setup.html
http://obi.virtualmethodstudio.com/manua...kends.html

kind regards,
Reply
#3
(02-12-2021, 11:54 AM)josemendez Wrote: Use the default backend (Burst) instead: it runs on M1
I'm not sure what I'm doing wrong but I'm getting the same dll exception on M1. I have burst and the other dependencies (math, jobs and collections). The obi solver does not show any warning below the backend menu with "burst" selected. I'm probably missing something basic here?

This is my exact exception:

Code:
DllNotFoundException: libOni assembly:<unknown assembly> type:<unknown type> member:(null)
Obi.ObiProfiler.DisableProfiler () (at Assets/Obi/Scripts/Common/Utils/ObiProfiler.cs:84)
Obi.ObiFixedUpdater.FixedUpdate () (at Assets/Obi/Scripts/Common/Updaters/ObiFixedUpdater.cs:56)
Reply
#4
(05-01-2022, 11:30 PM)plufz Wrote: I'm not sure what I'm doing wrong but I'm getting the same dll exception on M1. I have burst and the other dependencies (math, jobs and collections). The obi solver does not show any warning below the backend menu with "burst" selected. I'm probably missing something basic here?

This is my exact exception:

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

Hi!

Looks like you’re using a ObiProfiler component, which only works with the Oni backend as explained in the backends manual page. This component calls into the Oni dll, causing the exception regardless of the backend used.

Simply remove the ObiProfiler component in your scene.(If you’re using Burst it won’t give any useful profiling info anyway). That should make the exception go away.
Reply
#5
(09-01-2022, 09:13 PM)josemendez Wrote: Hi!

Looks like you’re using a ObiProfiler component, which only works with the Oni backend as explained in the backends manual page. This component calls into the Oni dll, causing the exception regardless of the backend used.

Simply remove the ObiProfiler component in your scene.(If you’re using Burst it won’t give any useful profiling info anyway). That should make the exception go away.

Thank you. That solved my issue. Just FYI, if you want to make a ticket: The error is in your demo scenes (and I have not made any changes) and the checkbox for "obi profiler" is unticked but I still get the error. Removing the component from the demo scenes fixed the error though.
Reply
#6
Hey,

Sorry to to dig up this old threads but I have a similar issue here on my M1 Max.

Here's the full stack trace :

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)



If I'm tracking down the issue, it seems the `#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS)` condition is not meet in `ObiSolver.cs`. But when i check my package manager, I do have Burst, Mathematics and Collections package installed.

Any idea on how to fix this?

Thanks!
Reply
#7
(03-01-2024, 10:09 AM)hugohil Wrote: Hey,

Sorry to to dig up this old threads but I have a similar issue here on my M1 Max.

Here's the full stack trace :

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)



If I'm tracking down the issue, it seems the `#if (OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS)` condition is not meet in `ObiSolver.cs`. But when i check my package manager, I do have Burst, Mathematics and Collections package installed.

Any idea on how to fix this?

Thanks!

The Jobs package is also necessary. See:
http://obi.virtualmethodstudio.com/manua...kends.html
Reply
#8
(03-01-2024, 02:02 PM)josemendez Wrote: The Jobs package is also necessary. See:
http://obi.virtualmethodstudio.com/manua...kends.html


My bad! I checked all the other ones but not Jobs. Since it's experimental I couldn't see it in the package manager but added it via git URL.
Thanks!
Reply
#9
(03-01-2024, 04:31 PM)hugohil Wrote: My bad! I checked all the other ones but not Jobs. Since it's experimental I couldn't see it in the package manager but added it via git URL.
Thanks!

The Jobs package should no longer be necessary, since its functionality has been rolled into the Collections package: https://docs.unity3d.com/Packages/com.un...GELOG.html

FWIW, I'm using Obi with the Burst backend on an M1 Mac, and I don't have the Jobs package installed. (I'm using Burst 1.8.11, Collections 2.1.4, and Mathematics 1.2.6)
Reply