質問編集履歴
4
説明の補足
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
####Scene understanding機能について
|
3
|
-
Scene UnderstandingはHoloLens2で取得した環境メッシュデータを分析し、壁や床といったオブジェクトの位置やメッシュデータを提供する機能です。
|
3
|
+
Scene UnderstandingはHoloLens2という透過型HMD(ヘッドマウントディスプレイ)で取得した環境メッシュデータを分析し、壁や床といったオブジェクトの位置やメッシュデータを提供する機能です。
|
4
4
|
現在自分はHoloLens2のScene Understandingの機能を使ったアプリケーションを、以下のサンプルプロジェクトを書き換えて作成しています。
|
5
5
|
[https://github.com/sceneunderstanding-microsoft/unitysample](https://github.com/sceneunderstanding-microsoft/unitysample)
|
6
6
|
|
3
内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
[https://qiita.com/Futo_Horio/items/2759f9ca2b892709ab66](https://qiita.com/Futo_Horio/items/2759f9ca2b892709ab66)
|
9
9
|
|
10
10
|
####Scene UnderstandingのUnityエディタ上でのデモ
|
11
|
-
HoloLens2とありますが、上記サンプルプロジェクトのサンプルシーンをunity上で開き、SceneunderstandingManagerオブジェクトにアタッチされたSceneUnderstandingDataProvider.csにおけるRun On Deviceをインスペクター上でオフにすることで、予め用意されたシーンを利用してunityエディタ上でどのようなオブジェクトが表示されるのかというデモを見ることができます。
|
11
|
+
HoloLens2とありますが、上記サンプルプロジェクトのサンプルシーンをunity上で開き、SceneunderstandingManagerオブジェクトにアタッチされたSceneUnderstandingDataProvider.csにおけるRun On Deviceをインスペクター上でオフにすることで、予め用意されたシーンを利用してunityエディタ上でどのようなオブジェクトが表示されるのかというデモを見ることができます。**今回の質問は、このUnity上の実行デモにおける動作に問題が生じていることに関してのものなので、HoloLens2とは関係なしに、Unityにお詳しい方がいましたらご回答いただけたら幸いです。**
|
12
12
|
|
13
13
|
####実現したいこと
|
14
14
|
表示される壁や床といった各オブジェクトは、SceneRootと呼ばれるオブジェクトの子オブジェクトとして設置されます(初期状態ではエディタ上のRootという名前のオブジェクトが該当する)。自分は作成するアプリケーションの関係上、ワールド座標空間におけるカメラと、SceneRootを原点とするローカル座標空間のオブジェクトの位置関係を取得する必要があったため、まずSceneRootのワールド座標の位置および傾きを取得しようと試みようとしたところ、次のような問題が生じました。
|
2
内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
####Scene understanding機能について
|
3
3
|
Scene UnderstandingはHoloLens2で取得した環境メッシュデータを分析し、壁や床といったオブジェクトの位置やメッシュデータを提供する機能です。
|
4
4
|
現在自分はHoloLens2のScene Understandingの機能を使ったアプリケーションを、以下のサンプルプロジェクトを書き換えて作成しています。
|
5
|
-
https://github.com/sceneunderstanding-microsoft/unitysample
|
5
|
+
[https://github.com/sceneunderstanding-microsoft/unitysample](https://github.com/sceneunderstanding-microsoft/unitysample)
|
6
6
|
|
7
7
|
また、Scene Understandingの概要・動作については以下のページを参考にしています。
|
8
|
-
https://qiita.com/Futo_Horio/items/2759f9ca2b892709ab66
|
8
|
+
[https://qiita.com/Futo_Horio/items/2759f9ca2b892709ab66](https://qiita.com/Futo_Horio/items/2759f9ca2b892709ab66)
|
9
9
|
|
10
10
|
####Scene UnderstandingのUnityエディタ上でのデモ
|
11
|
-
HoloLens2とありますが、上記サンプルプロジェクトのサンプルシーンを開き、SceneunderstandingManagerにアタッチされたSceneUnderstandingDataProvider.csにおけるRun On Deviceをインスペクター上でオフにすることで、予め用意されたシーンを利用してunityエディタ上でどのようなオブジェクトが表示されるのかというデモを見ることができます。
|
11
|
+
HoloLens2とありますが、上記サンプルプロジェクトのサンプルシーンをunity上で開き、SceneunderstandingManagerオブジェクトにアタッチされたSceneUnderstandingDataProvider.csにおけるRun On Deviceをインスペクター上でオフにすることで、予め用意されたシーンを利用してunityエディタ上でどのようなオブジェクトが表示されるのかというデモを見ることができます。
|
12
12
|
|
13
13
|
####実現したいこと
|
14
|
-
|
14
|
+
表示される壁や床といった各オブジェクトは、SceneRootと呼ばれるオブジェクトの子オブジェクトとして設置されます(初期状態ではエディタ上のRootという名前のオブジェクトが該当する)。自分は作成するアプリケーションの関係上、ワールド座標空間におけるカメラと、SceneRootを原点とするローカル座標空間のオブジェクトの位置関係を取得する必要があったため、まずSceneRootのワールド座標の位置および傾きを取得しようと試みようとしたところ、次のような問題が生じました。
|
15
15
|
|
16
16
|
### 発生している問題・エラーメッセージ
|
17
17
|
unityエディタ上でのデモの実行中、SceneRootのインスペクターを見ると、
|
@@ -20,26 +20,19 @@
|
|
20
20
|
Position x:0 y:0 z:0
|
21
21
|
Rotation x:-51.415 y:40:55 z:-75.0010
|
22
22
|
|
23
|
-
と表示されるので、これを基準にオブジェクトを配置しているのですが、オブジェクト設置直前(SceneUnderstandingDisplayManager.cs内の298行目DisplaySceneObjectクラス内)
|
23
|
+
と表示されるので、これを基準に子オブジェクトを配置しているのですが、オブジェクト設置直前(SceneUnderstandingDisplayManager.cs内の298行目DisplaySceneObjectクラス内)に挿入した
|
24
|
-
Debug.Log(SceneRoot.transform.position)およびDebug.Log(SceneRoot.transform.rotation)
|
24
|
+
Debug.Log(SceneRoot.transform.position)およびDebug.Log(SceneRoot.transform.rotation)によると、コンソール上では
|
25
25
|
|
26
26
|
(0.0,0.0,0.0)←position
|
27
27
|
(0.0,0.0,0.0,1.0)←rotation
|
28
28
|
|
29
|
-
と表示されて
|
29
|
+
と表示されていました。初期移動がないことはともかく、初期回転なしという、SceneRootのインスペクター上のRotationの値とは異なる値を取得していました。
|
30
30
|
|
31
31
|
### 試したこと
|
32
|
-
SceneRootを親としたCubeオブジェクトを作成したところ、実行の際はちゃんと傾いて表示されたのですが、position
|
32
|
+
SceneRootを親としたCubeオブジェクトを作成したところ、実行の際はSceneRootのインスペクターのRotationが示すように、ちゃんと傾いて表示されたのですが、positionやrotationの値はともに
|
33
|
+
(0.0,0.0,0.0)←position
|
34
|
+
(0.0,0.0,0.0,1.0)←rotation
|
35
|
+
となっていました。
|
33
36
|
|
34
|
-
また、あらかじめエディタ画面上でCube(名前 : localcube)を作成し、DisplayManagerスクリプト上で以下のようなコードを挿入したところ、なぜか実行中はCubeがヒエラルキー内から消え、デバッグ画面にはそのまま現在のワールドカメラ座標が表示されてしまいました。おそらくSceneRootの座標が先に示した通り、Position(0,0,0,0),Rotation(0,0,0,1)で表示されているため、ワールド座標とローカル座標が全く同じのままであるからだと思います。
|
35
|
-
```C#
|
36
|
-
GameObject localcube = GameObject.Find("localcube");
|
37
|
-
localcube.transform.position = Camera.main.transform.position;
|
38
|
-
localcube.transform.rotation = Quaternion.identity;
|
39
|
-
localcube.transform.parent = SceneRoot.transform;
|
40
|
-
Debug.Log(localcube.transform.localPosition);
|
41
|
-
Debug.Log(localcube.transform.localRotation);
|
42
|
-
```
|
43
|
-
|
44
37
|
### 補足情報(FW/ツールのバージョンなど)
|
45
38
|
Unity 2019.4.11f1 Personal
|
1
初心者マーク記載
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
|
-
####Scene understandingについて
|
2
|
+
####Scene understanding機能について
|
3
3
|
Scene UnderstandingはHoloLens2で取得した環境メッシュデータを分析し、壁や床といったオブジェクトの位置やメッシュデータを提供する機能です。
|
4
4
|
現在自分はHoloLens2のScene Understandingの機能を使ったアプリケーションを、以下のサンプルプロジェクトを書き換えて作成しています。
|
5
5
|
https://github.com/sceneunderstanding-microsoft/unitysample
|