Node-REDとUnityのVisual Scripting(以降VS)を、OSC(Open Sound Control)で連携させる話の後半です。
前半はこちら。
前回データをOSCで送信するところまで作ったので、今回はそれを受信して、Unity上でオブジェクトを動かすところを作ります。
ペース配分を間違えたので、今回はかなり軽めの内容です。
OSC → Unity VS
OSCプラグインのインストール方法は、前回記事を参照してください。
Cubeなど適当な3Dオブジェクトを用意して、コンポーネントにScript Machineを追加して、フローをつくります。
「OSC Input(Vector3)」を使うことで、3要素の数値型リストをVector3として受け取ることができます。
タイミングをNode-RED側でコントロールしているので、こっちはデータを受信するなりそのままTransformのPositionに流すだけでOKです。
前回/data/Obj1と/data/Obj2という、2組の座標データを送るようにしていたので、とりあえずObj1の数値をPositionに入れて動かしてみます。
動いた
動いた様子を撮り忘れましたが、ちゃんと動きました...!
応用篇 Perfumeのモーキャプデータを動かす
ちょっと内容が軽すぎたので、もう少しやります。
以前公開されていた、Perfumeのモーションキャプチャーデータを再生してみようと思います。
モーションキャプチャーデータは.bvhというファイル形式で、実態はリグの階層を記したオブジェクトと、スペースで区切られた座標と回転を羅列したテキストファイルです。
最初の3列がルートになる腰の座標、次の3列が腰の回転、残りは各関節の回転です。
腰のトランスフォームだけなら手軽に動かせそうなので、のっちのモーションデータをCSVに切り出しました。
そして、VSのノードは、スケールを変更できるように少し変更しておきました。
あと、OSCアドレスはぱっと見でわかるように、「/Position」と「/Rotation」にしました、Node-REDのテンプレートも、これに合わせて修正しておきます。
動いた!
動いたー! ただのキューブ1個なのに、そこにのっちが見える...! pic.twitter.com/nlevS40Knh
— アツユキ (@aaa_tu) 2022年3月8日
一見意味不明な数字の羅列が、意思ある動きに変換されるのって、なんだかテンションが上がりますね!
ついでにあーちゃんとかしゆかも入れてみました。
せっかくなので、かしゆかとあーちゃんも入れてみた
— アツユキ (@aaa_tu) 2022年3月9日
この動きのキレは間違いなくPerfumeだな#nodered #unity3d pic.twitter.com/iTAViuaHnR
Node-REDと連携させられるとなると、データをやりとりする大抵のものは繋ぐことができるようになるはず。これは唆るぜ!