最近Unity はゲーム以外でも使用され始め、株式会社プレースホルダでも子供向けテーマパークをUnity で開発しています。プロジェクタと様々なセンサを使って楽しいインタラクティブコンテンツを企画・開発中です。今回は、初投稿として、Asus のXtion2 というデプスカメラのデプス情報をUnity から読み込みプラグインについてまとめました。
対象
- Unity、C# にある程度経験がある方(中級者以上?)
- 「あればなお良い」C++ の経験
必要な開発環境
- Windows 10
- Visual Studio 2017
- OpenNI2 For Xtion2 SDK
事前確認
- アーキテクチャはすべて合わせる必要があります。Windows とUnity がx64である場合、SDK もx64版を使います。
手順
- OpenNI2 をインストールします。SDK のパッケージをここからダウンロードできます。
- この記事では、OpenNI2 SDKのインストール先を {OPENNI_INSTALL_PATH} とします。
- {OPENNI_INSTALL_PATH}/Lib 内に OpenNI2.lib ができていること、{OPENNI_INSTALL_PATH}/Samples/Bin 内にサンプルのバイナリがビルドされ、実行できていることを確認します。
- ネーティブプラグインのコードはこちらからダウンロードできます。
- Cmakelist.txt にあるライブラリのパス設定を適宜編集して、Cmakeでビルドします。
- CMake が問題なく通ったら、buildフォルダにVisual Studio のソリューションファイルができます。
- この sln ファイルを開いて、プロジェクトをビルドします。
- ビルドが成功したらDebugかReleaseフォルダにXtionCapture.dll が生成されます。
- このDLL をUnity のPluginsフォルダにコピーします。
- OpenNIの再配布DLL も一緒にコピーします。OpenNIのDLL は{OPENNI_INSTALL_PATH}/Redist にあります。
- 今後少しまとめて使い方について記載しますが、とりあえずこちらのUnityプロジェクトを参考にお使いください。Scene 内にあるXtionInterface.cs がコアのスクリプトです。
構造の概要
1.DLL のネーティブインタフェース使って、デバイスと通信するキャプチャオブジェクトを生成します。xtion_capture オブジェクトのメンバーとしてデバイスのメモリアドレスを登録します。また、このxtion_capture オブジェクトのポインタをUnity に返します。
2.xtion_capture へのポインタを取得したあと、xtion_capture が用意しているメソッドをUnity から呼び出すことができます。現在はデプス情報の取得、デバイスの終了まで実装してあります。
今後の展開
今回はデプス情報のみ実装しましたが、カラー映像の取得もやってみたいと思います。Unity にカラー映像を取得するメリットはあまりなさそうですが。
この記事の手順に従ってやってもうまくいかない場合は気軽にコメント残していただければと思います。