【Unity】M1 Mac + UnityでRealSenseを動かすのに苦労したので備忘録
タキです。
Intel Mac時にはcmakeが通らずに苦戦したけどなんとか動いたlibrealsenseですが、Apple Siliconで開発&運用したい欲が抑えられなくなって環境を整えました。
(RealSenseはもう開発終了したので本当はZEDとかに乗り換えなければ)
ご覧の通り、HDRPでも動作しています。Editor Ver.は2020.3.30と2021.2.13で動作確認済みです。
結果としてはUnityでT265のSLAMでリアルタイムにカメラやオブジェクトを動かせるようになりましたが、超苦戦しました…。
1ヶ月も経てば自分も忘れると思うのでここに残しておきます。
インストール
おさらいです。
以下からインストールします。
ターミナルで、
brew install libusb pkg-config
brew install homebrew/core/glfw3
brew install cmake
mkdir build && cd build
sudo xcode-select --reset
cmake .. -DBUILD_EXAMPLES=true -DBUILD_WITH_OPENMP=false -DHWM_OVER_XU=false -G Xcode
と進め
/Users/xxxxx/librealsense/build/librealsense2.xcodeproj
を起動し、realsense-viewerをビルドするとアプリケーションが立ち上がります。
Unityパッケージの導入
以下からUnitypackageをダウンロードし、
UnityでImport Package > Custom PackageでプロジェクトにAssetを読み込みます。注意点として、.unitypackageは【Intel.RealSense.unitypackage】という名前になっているものをダウンロードしてください。realsense.unitypackageという名前のパッケージからは以下の何を試しても、ARBackgroundRendererがみつからないエラーが発生して動きませんでした。
ここまできたらIntel Mac時には、
① Prefabs > RsDeviceをシーンに配置
② RsDeviceのElementをしかるべきデバイスに設定
→ T265の場合はPose, 6DoF, パラメータは全て0
→ パラメータをデフォルトの30FPSとかにしてるとエラーが出ます
③ オブジェクトにAdd Component > Rs Pose Stream Transformerを追加し、RsDeviceを選択
でT265のPose情報が渡せたのですが、M1だと、
DllNotFoundException、との長い戦いの始まりでした。
M1(Apple Silicon)で座礁したらやること
① librealsense2.dylibのディレクトリで以下のコードをたたく
https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_osx.md#packaging-your-application
install_name_tool -change /usr/local/opt/libusb/lib/libusb-1.0.0.dylib @rpath/libusb-1.0.0.dylib librealsense2.dylib
② librealsense2.dylibとlibusb-1.0.0.dylibを
プロジェクト名/Assets/RealSenseSDK2.0/Plugins
にコピーする
多分これで動きます。
まとめ
この方のtweetで勇気づけられました。
ARBackgroundRenderer
DllNotFoundException
Rethrow as Exception: Couldn't resolve requests
この3つのエラーが出たら上記のように対処してみてください。