SuperCollider + Unity3d

はじめに

Unityというゲーム開発環境があります。UbuntuのUIじゃないですよ。機能制限はありますが、フリーです。iOSのゲーム開発にも使用されているようで、日本語の情報も結構あります。UnityではC#スクリプト書けるとのことでしたので誰かOSC使えるようにしてるだろ、とググったら引っかかりましたので、ちょっといじってみました。

プロジェクトサンプルをゲット

http://forum.unity3d.com/threads/16882-MIDI-or-OSC-for-Unity-Indie-users
でプロジェクトサンプルをUPしてくれている方がいるので、使わさせてもらいましょう。MacOSX、Unity3.3.04fの環境では、UDPPacketIO.csを

using System.IO.Ports;
using System.IO;

に変更しないとダメです。

試してみる

Unity側

HiearchyのOSCEmptyオブジェクトをクリック。
右枠にInspectorが開くので、OSCReciverのRemote IP,portを自分の環境に。
Unity側の再生ボタンを押します。

SC側

"/1/toggle1"に適当に数値送ります。

確認する
  • オブジェクトが動く
  • Unityのコンソールにメッセージ名と値が流れる

いじる

詳しく調べる気はないので、handler.SetAddressHandler("メッセージ名", 関数名);でOSCメッセージ名、関数を指定、OSCメッセージ値を関数内で変数に代入、Update関数でGameObjectのパラメータを更新させる。
という処理を丸パクリして、追加したゲームオブジェクトをいじってみる。うーむ、楽です。

いじょう

3D映像をSCから制御したい場合、oF、P5でコーディングするよりも、blender、Unity使うと圧倒的に楽かと。相変わらずSCはよく分かりませんが、Unity側をもうちょっといじってみようかと思います。
OSCなので、SCからだけじゃなくてMax/PDからも制御できますよ。