Unityと外部ツールをノーコードで連携させたい話 —Node-RED & OSC & Unity Visual Scripting(受信編)—

Node-REDとUnityのVisual Scripting(以降VS)を、OSC(Open Sound Control)で連携させる話の後半です。

前半はこちら。

www.creativity-ape.com

前回データをOSCで送信するところまで作ったので、今回はそれを受信して、Unity上でオブジェクトを動かすところを作ります。

ペース配分を間違えたので、今回はかなり軽めの内容です。

OSC → Unity VS

OSCプラグインのインストール方法は、前回記事を参照してください。

Cubeなど適当な3Dオブジェクトを用意して、コンポーネントにScript Machineを追加して、フローをつくります。

f:id:at_you_key:20220308071958j:plain

「OSC Input(Vector3)」を使うことで、3要素の数値型リストをVector3として受け取ることができます。

タイミングをNode-RED側でコントロールしているので、こっちはデータを受信するなりそのままTransformのPositionに流すだけでOKです。

前回/data/Obj1と/data/Obj2という、2組の座標データを送るようにしていたので、とりあえずObj1の数値をPositionに入れて動かしてみます。

動いた

動いた様子を撮り忘れましたが、ちゃんと動きました...!

応用篇 Perfumeのモーキャプデータを動かす

ちょっと内容が軽すぎたので、もう少しやります。

以前公開されていた、Perfumeのモーションキャプチャーデータを再生してみようと思います。

モーションキャプチャーデータは.bvhというファイル形式で、実態はリグの階層を記したオブジェクトと、スペースで区切られた座標と回転を羅列したテキストファイルです。

research.cs.wisc.edu

最初の3列がルートになる腰の座標、次の3列が腰の回転、残りは各関節の回転です。

腰のトランスフォームだけなら手軽に動かせそうなので、のっちのモーションデータをCSVに切り出しました。

f:id:at_you_key:20220315223710j:plain

そして、VSのノードは、スケールを変更できるように少し変更しておきました。

f:id:at_you_key:20220315223725j:plain

あと、OSCアドレスはぱっと見でわかるように、「/Position」と「/Rotation」にしました、Node-REDのテンプレートも、これに合わせて修正しておきます。

動いた!

一見意味不明な数字の羅列が、意思ある動きに変換されるのって、なんだかテンションが上がりますね!

ついでにあーちゃんとかしゆかも入れてみました。

Node-REDと連携させられるとなると、データをやりとりする大抵のものは繋ぐことができるようになるはず。これは唆るぜ!