ThetaV + OculusRift でストリーミング & コントローラーの座標取得
↓のアップデート版
ThetaV + Unity + OculusRift でストリーミング - にゃーんになりたい。
環境 Windows10
Unity2019.2.10f1 + UnityHub
UnityHub で新規作成
Oculus で遊ぶので Asset Store から Oculus Integration を Upgrage & Import
ポップアップの Import ボタンを押す。
左上の File -> Build Settings を開いて左下の Player Settings
XR Settings の Virtual Reality Supported のチェックを入れる
Virtual Reality SDKs の一番上を Oculus に
コントローラーが手の形で VR に出したい
左下、Project タブの Assets に Oculus が増えているはずなので
Assets -> Oculus -> SampleFramework -> Usage から CustomHands をダブルクリック
左上 Hierarchy タブの Static -> Ground はいらないので削除
No hack, no work • UnityとOculusで360度パノラマ全天周動画を見る方法【無料編】
から Sphere100.fbx をダウンロード
下部の Assets のところに D & D してから Hierarchy に D & D
右側 Inspector タブから Scale を 100 x 100 x 100 に変更
Assets -> Create -> C# Script から新規スクリプトを作成、タイトルを WebCamDrawer に変更
ダブルクリックすると Visual Studio が起動
ThetaV からのストリーミング映像を球面内部に流し込むために
【THETA V】ライブストリーミングの映像をUnityで表示 - Qiita
から WebCamDrawer.cs の内容をコピー
保存したら Visual Studio を閉じて、いまつくった .cs ファイルを Hierarchy の Sphere100 にアタッチ (D & D)
Inspector タブで見ると Web Cam Drawer が増えている
さっきと同じ要領で新規スクリプトを作成、とりあえず左手をつくるのでファイル名は ControllerLeft に変更
Visual Studio を起動させて
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.VR; using System.IO; public class ControllerLeft : MonoBehaviour { private float timetext; void Start() { //timetext = 0; } public OVRInput.Controller controller; // the controller to instantiate the object at void Update() { transform.localPosition = OVRInput.GetLocalControllerPosition(controller); transform.localRotation = OVRInput.GetLocalControllerRotation(controller); //Debug.Log(transform.localPosition); StreamWriter sw = new StreamWriter("./LogDataLeft.csv", true); //true=追記 false=上書き timetext += Time.deltaTime; sw.WriteLine(string.Format("{0},{1},{2},{3}", timetext.ToString(), transform.localPosition.x, transform.localPosition.y, transform.localPosition.z)); sw.Flush(); sw.Close(); } }
で LogDataLeft.csv に時間(ms)とxyz座標を出力
同様に ControllerRight.cs を作って
public class ControllerRight : MonoBehaviour
と
StreamWriter sw = new StreamWriter("./LogDataRight.csv", true); //true=追記 false=上書き
だけ書き換え
.cs ファイルを利用するために Hierarchy タブの Create -> Create Empty から GameObject 作成、名前はてきとう
GameObject にさっきつくった ControllerLeft と ControllerRight をアタッチ
Inspector タブで見ると Controller でプルダウンがあるので、それぞれ L Touch, R Touch にする
これで Theta V のストリーミングを起動してから Unity 中央の再生ボタンを押すとストリーミングしながら動かしたコントローラーの座標が csv に出力される