前提・実現したいこと
####Scene understanding機能について
Scene UnderstandingはHoloLens2という透過型HMD(ヘッドマウントディスプレイ)で取得した環境メッシュデータを分析し、壁や床といったオブジェクトの位置やメッシュデータを提供する機能です。
現在自分はHoloLens2のScene Understandingの機能を使ったアプリケーションを、以下のサンプルプロジェクトを書き換えて作成しています。
https://github.com/sceneunderstanding-microsoft/unitysample
また、Scene Understandingの概要・動作については以下のページを参考にしています。
https://qiita.com/Futo_Horio/items/2759f9ca2b892709ab66
####Scene UnderstandingのUnityエディタ上でのデモ
HoloLens2とありますが、上記サンプルプロジェクトのサンプルシーンをunity上で開き、SceneunderstandingManagerオブジェクトにアタッチされたSceneUnderstandingDataProvider.csにおけるRun On Deviceをインスペクター上でオフにすることで、予め用意されたシーンを利用してunityエディタ上でどのようなオブジェクトが表示されるのかというデモを見ることができます。今回の質問は、このUnity上の実行デモにおける動作に問題が生じていることに関してのものなので、HoloLens2とは関係なしに、Unityにお詳しい方がいましたらご回答いただけたら幸いです。
####実現したいこと
表示される壁や床といった各オブジェクトは、SceneRootと呼ばれるオブジェクトの子オブジェクトとして設置されます(初期状態ではエディタ上のRootという名前のオブジェクトが該当する)。自分は作成するアプリケーションの関係上、ワールド座標空間におけるカメラと、SceneRootを原点とするローカル座標空間のオブジェクトの位置関係を取得する必要があったため、まずSceneRootのワールド座標の位置および傾きを取得しようと試みようとしたところ、次のような問題が生じました。
発生している問題・エラーメッセージ
unityエディタ上でのデモの実行中、SceneRootのインスペクターを見ると、
Transform
Position x:0 y:0 z:0
Rotation x:-51.415 y:40:55 z:-75.0010
と表示されるので、これを基準に子オブジェクトを配置しているのですが、オブジェクト設置直前(SceneUnderstandingDisplayManager.cs内の298行目DisplaySceneObjectクラス内)に挿入した
Debug.Log(SceneRoot.transform.position)およびDebug.Log(SceneRoot.transform.rotation)によると、コンソール上では
(0.0,0.0,0.0)←position
(0.0,0.0,0.0,1.0)←rotation
と表示されていました。初期移動がないことはともかく、初期回転なしという、SceneRootのインスペクター上のRotationの値とは異なる値を取得していました。
試したこと
SceneRootを親としたCubeオブジェクトを作成したところ、実行の際はSceneRootのインスペクターのRotationが示すように、ちゃんと傾いて表示されたのですが、positionやrotationの値はともに
(0.0,0.0,0.0)←position
(0.0,0.0,0.0,1.0)←rotation
となっていました。
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.11f1 Personal
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/02 12:30
2021/02/05 11:48