うみの河童

OSCでUnity・Android間をつなぐ

OSCでUnity・Android間をつなぐ

最近、クスールさんのUnity講座に通ってます。
Unityはゲーム!というイメージが強いですが、
自分はゲーム以外の使い方を探って行きたいです。

Unityのインターフェースにも慣れつつあるので、
UnityとAndroidで通信できないかな?ということで調べてみました。
AndroidをコントローラーにUnityを操作するという感じですかね。

会社の方にOSCという手軽に扱えるプロトコルを教えてもらったので、
そっちの実験もかねて

参考サイト
UnityでOSC(OpenSound Control)を使う方法 
サンプルの入手先やパラメーターの設定方法などすごく分かりやすかったです。
ありがとうございました!
自分の場合は、TouchOSCというアプリではなく、
Processingを使ってAndroidの方位センサの値を渡すようにしました。

今回使ったソフトウェア
・Unity
・Processing(Androidアプリをつくるため)

自分が作ったサンプルはこちらです。
Unity・Processing初心者なのでまだまだ全て理解できていません。
一応動いたということで。。。
※windows7 64bitのみ動作確認

サンプルを動かす前に少々ライブラリのインストールを
oscP5
Processingへのライブラリ追加はGoogle先生に聞いてもらえると。。。

Processingのバージョンは2.0a6にしました。
Processingにもともと入っている
Android Examples >  Sensors > Compass
のサンプルを元に、値をOSCで送るところだけ変更しました。

肝なのはここですね

[sourcecode language="css"]
//Android側のポート番号の設定
oscP5 = new OscP5(this, 12000);

//PCの情報
//同じネットワーク内のIPとPC側のポート番号
myRemoteLocation = new NetAddress("192.168.0.1",8000);
[/sourcecode]

ポートの設定は
Android側
Unity側に必要になります。
同じネットワークにつないでそれぞれのIPもメモしていてください。

続いてはUnityです。
肝なのは、 Test > Assets > Scripts > OSCReceiver.js
Androidとの通信部分の設定、
受け取った値をつかったり。

見ていただければなんとなく分かるかと思います。
アラートとか出ててもちょっと無視していてください。
まだ勉強不足でよくわからなかったです。。。

アプリのインストール
OSCでの通信
Unityの実行
がうまく言っていれば、
ふってくるバナナ中をAndroid端末を向けた方向を見ることができると思います。
端末の方位センサのノイズでカクカクしていますが、
別途ノイズフィルタをかければ気にならなくなるかと。
(すみません。そこまでわかりませんでしが。。。)

いつも中途半端な状態で情報出していいのかと思うんですが、
何かのヒントになってくれれば。。。

すみません!
もうちょっといじってみます!

あと、
OSCもいいけど
WebSocketがいいかんじらしい。
そっちもテストしてみようかなー
そもそも、WebSocketってなんなんだろ。。。
いつもそこからのスタートですw