UnityでOpenCVのネイティブプラグインを利用してみる

凹みTipsさん(http://tips.hecomi.com/entry/2014/01/16/011727)がOpenCVを使って書いたネイティブプラグインをUnityから使っていたので僕も真似してみることにしてみました。
(基本的には凹みTipsさんと同じなので差分のところだけ)

参考程度ですが、私の開発環境はMacでUnityは4.3を利用しています。

1.OpenCVをビルドする。
MacでOpenCVを利用する場合、homebrew等でインストールするのが楽で良いです。
でも、Unityのネイティブプラグインを使う場合32bitで作らねばならず、homebrewでは32bitビルドしてもうまくいかないため、CMakeを利用してOpenCVのソースからビルドする必要があります。

CMAKE_OSX_ARCHITECTURESにi386;x86_64と値を設定してやれば32bitでも使えるようになります。
また、BUILD_SHARED_LIBSのチェックも外して、スタティックライブラリとしてビルドされるようにしました。
(凹みTipsさんはdylibでやってたのですが何故かうまく行かなかった…)

2.Bundleを作る
WindowsではDLLですが、MacではBundleを作ります。
Xcodeで新しいプロジェクトを作る時にBundleを設定すればいけると思います。

凹みTipsさんからソースをそのまま利用させてもらいました。

3.Unityに読み込む
ここは特に引っかかることなく成功。

1.のあたりで結構引っかかってうまく行かなかったのですが、じっくり差分のところを文字に起こしてみると意外とシンプルな感じになりました。

iOSでVVOSCを使ってOSC通信する。

やり方のメモです。

VVOSCはLGPLなので注意です。

 

1. Gitからソースコードを落とす
本家のVVOSCから落とすのもいいんですが、vvosc-iosなるものを公開している人がいらっしゃるので利用させてもらいます。
https://github.com/markcerqueira/vvosc-ios

 

2. ライブラリを最近iOS端末向けにビルドする

Gitからダウンロードすると既にlibVVOSC.aの静的ライブラリがありますが、このままでは使えないのでビルドし直します。
一応ダウンロードしたファイルの中にReadmeファイルがあるのでソレを参考にしてやっていきます。
(ざっくりと日本語で書いてあるだけで、内容はReadmeと同じです)
・VVOSC.xcodeprojを開く
・Product→Scheme→Edit Schemeから左側Run→info→Build ConfigurationをReleaseにする。
・iOS deviceとiOS Simulator向けにビルド
・ターミナルにて
cd ~/Library/Developer/Xcode/DerivedData
(xcodeのビルド先の設定変えてる方は対応する場所へ)
cd ./VVOSC-(なんか凄い文字列)/Build/Products
lipo -create Release-iphoneos/libVVOSC.a Release-iphonesimulator/libVVOSC.a -output libVVOSC.a
上記の流れからopen . ってするとライブラリのあるフォルダが確認出来るはず。

 

3.プロジェクトにライブラリとヘッダーファイルを追加してビルドする

VVOSC簡単にiosで使えるので簡単なアプリを作るのには便利そうですね。
ただLGPLなライブラリなので商用などには使えないとは思いますが…

 

 

とりあえず加速度センサ値を送ったり、何か値を受信したりするコードを書いてみた

https://github.com/momonja/VVOSC_ios_sample

加速度センサー云々のあたりとかを弾けば多分OSC送受信の簡単なサンプルになると思われ。