急ぎで書いたので校閲できてない。汚いのであとで書き直す。
VMTは凄いよって話
Segmentation Faultさん(@Seg_Fauil)がVirtualMotionTrackerという素晴らしいソフトウェアを公開してくださいました。
これによって気軽に自作デバイスをトラッカーにすることが出来るようになりました。 折角なので私も何か作ろうということで 全然手に入らないViveトラッカーの代わりを自作しようと踏み切ったわけです。
幸い手元にあるAndroid端末(Xperia XZ3)がARCoreに対応してましたので適当に実装してみることにしました。 (手探りで実装したため公開するのが恥ずかしい実装になりました。)
やったこと
VMTとARCoreを組み合わせて Androidスマホを腰トラにすることが出来ました!
— 二酸化カメレオン@肝障害(?) (@ChameleonO2) 2020年7月10日
コードを少し綺麗にしたらGitHubで公開しますね。#ARCore#バーチャルモーショントラッカー#VRChat pic.twitter.com/y7iSjwGnGY
AndroidVRTracker
使い方
VMTの環境を整える。
腰にスマホを張り付ける準備をする←重要
タイトル画面
1 上にPCのIPアドレスを入れる。
2 下にVMTのトラッカIDを入れる。
3 SteamVR上の原点に立つ(やや後ろ)
4トラッキングスタート ボタンを押してすぐに腰の位置にスマホを掲げる
↑ これをしないと原点がズレる(まぁあとから一応補正できますが・・・)
トラッキング中
リセットボタンを押すとトラッカーが原点に戻る。←回転もリセットされる。
Leftボタンを押すとトラッカーが1cm左に動く。Rightボタンを押すと右に動く Backは後ろに、Frontは前に動く。 プラスボタンは腰の位置が下がる。マイナスボタンは上がる(これは要修正
技術的な話
実装はめちゃくちゃ簡単です。(数行しか書いていないレベル)
ARCore Unity SDK
ARプログラミング自体、大昔に少し触った程度なので正直初見もいいいところですが、本当に簡単に基本機能をつかうことができました。
最初のシーンにあるカメラを削除し、 ARCoreDeviseをシーン放り込むだけです。
ARCoreのカメラの座標はこれだけでいいらしい。
Frame.Pose.position.x Frame.Pose.position.y Frame.Pose.position.z Frame.Pose.rotation.x Frame.Pose.rotation.y Frame.Pose.rotation.z Frame.Pose.rotation.w
あとはこれを腰の位置に補正してやって OSCプロトコルでPCに送信してあげる。
uOSCで送信
ARCore Unity SDKが素直にビルドできるなら1時間かからずできると思う。
私はUnity上でプログラミングしたことがなかったのでそこらへんも四苦八苦したので時間かかりましたが・・・。