前提・実現したいこと
Unityで作成した3Dの環境上で、Oculus Questを使用し6FoD情報を毎フレームごとに取得して書き出したいです。Unityのtransformを取得する方法は何となくわかり、もう一つはQuestから直接6FoD情報を取得する方法もあるようで、どちらが良いのか、またその方法もなかなか調べても見つけられず困っております。
発生している問題・エラーメッセージ
該当のソースコード
c#
1using System.Collections; 2using System.Collections.Generic; 3using System.Security.Policy; 4using UnityEngine; 5using UnityEngine.XR; 6 7public class DebugLog : MonoBehaviour 8{ 9 // Start is called before the first frame update 10 void Start() 11 { 12 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 Vector3 position = InputTracking.GetLocalPosition(XRNode.CenterEye); 19 Debug.Log(position); 20 Quaternion rotation = InputTracking.GetLocalRotation(XRNode.CenterEye); 21 Debug.Log(rotation); 22 23 } 24} 25
試したこと
まず6FoD情報を毎フレームごとに取得する方法ですが、
using UnityEngine.XR;
Vector3 position = InputTracking.GetLocalPosition(XRNode.CenterEye);
Quaternion rotation = InputTracking.GetLocalRotation(XRNode.CenterEye);
これを使用してUnityのtransformを得ることができるらしいのですが、プログラミング初心者なので、基本もあまりできていないのかとても難しく感じております。一応上記のコードを自力で作成したのですが、
・書き出されるデータがカンマを挟んで3つの時と4つの時がある→がなぜそうなるのか理解できない
・書き出したデータがが一つ前のフレームのものと同じだった場合、書き出されない→同じだった書き出しデータがいくつあるのかは書いてある
・6FoDすべての情報を取得しているわけではない様子
これらの点が不満点で改善したいです。
理想としては取得したデータを
(X,Y,Z,ピッチ,ヨー,ロール)
というように6つのデータをカンマで区切ってそれぞれ書き出したいです。書き出し方はまだ決まっておりませんが、初めに私が作成したコードではログとして書き出せたようです。
もう一つ
https://developer.oculus.com/documentation/native/pc/dg-sensor/?locale=ja_JP
こちらではPC SDKというものを利用して対応するHMDに関する情報をリクエストするとのことですが、まったく手順が分かたず困っております。おそらくこちらはQuestから直接6FoF情報を取得することができる。っぽいのです。
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.7f1 を利用
回答1件
あなたの回答
tips
プレビュー