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からも制御できますよ。