ななさいの備忘録

備忘録がわりです

Virtual Motion Trackerを使ってみよう!

この記事はクラスタアドベントカレンダー2023 一枚目 18日目の記事です。 前日はsmithさんの黒い画面を触らずにサーバーを(できればタダで)作ろう! でした。 皆さんも是非チャレンジしてみてください!

qiita.com

改めまして皆様ごきげんよう! サーバーサイドでエンジニアをやっている二酸化カメレオンと言います。

去年は働くリアアリス - ななさいの備忘録 という記事を投稿していました!

今回はVirtual Motion Tracker、通称VMTを使ってみる話を簡単にします!

gpsnmeajp.github.io

VMTとは

VMTはOSCで値を送ってあげるだけで簡単に操作できる仮想トラッカードライバです。

導入は非常に簡単で、私も昔 Androidスマホをトラッカーにする際に使用しました。

nanasai.hatenablog.jp

実際に動かしてみる。

導入

まず、公式からインストーラをダウンロードし、インストールします。 導入については公式Documentに沿って行った方が良いので下記のリンクを参照してください。

gpsnmeajp.github.io

API 曰く、初期値ではport 39570に対してOCSプロトコルで値を送ってあげればよいらしいです。

gpsnmeajp.github.io

OSCプロトコルとは?

OSCプロトコルVRの関係でデファクトスタンダードになりつつあるプログラム間でデータをやり取りするための決まり事みたいなものです。 本来は音楽の情報をやり取りするために使うものです。*1

実際に送ってみる

値の送り方はいくつかありますが、そのうちの一つはこのように書かれています。

/VMT/Room/Unity (int)index, (int)enable, (float)timeoffset, (float)x, (float)y, (float)z, (float)qx, (float)qy, (float)qz, (float)qw Unity lik Left-handed space, Quaternion, and Room space. (Recommended) Unityと同じ左手系かつ、クォータニオンかつ、ルーム空間(推奨)

つまり、だいたいこんな感じに値を送ってやればよいということです。

/VMT/Room/Unity ,iiffffffff 0 1 0 0.99663454 -0.081972964 0 0 0 0 0

iiffffffff というのはOSCで送る値の型を表しています。それ以上の情報は含まれていないので順番を間違えないようにしましょう。

OSCでこいつをlocalhostの39570に対して送ってあげると・・・

でた!

Goで実装してみる

いい感じに実装してあげると・・・

ぐるぐる動いた!(なんでAdminで動かしてるんやろ・・・)

とりあえず実装ですが、実際のコードは下記Github上で公開しています。

github.com

今後はせっかくなのでgoでVMTを扱うためのパッケージを書こうかなと思っています。

以上、VMTのお話でした!

明日はSixeightさんのフィーチャフラグを扱うときのささやかなTIPSです!開発するときに意識しているささやかなTIPSがためになると思います!

blog.nishimu.land

*1:Open Sound Control