質問編集履歴

4

説明の補足

2020/12/27 13:43

投稿

inkyaman
inkyaman

スコア1

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ####Scene understanding機能について
4
4
 
5
- Scene UnderstandingはHoloLens2で取得した環境メッシュデータを分析し、壁や床といったオブジェクトの位置やメッシュデータを提供する機能です。
5
+ Scene UnderstandingはHoloLens2という透過型HMD(ヘッドマウントディスプレイ)で取得した環境メッシュデータを分析し、壁や床といったオブジェクトの位置やメッシュデータを提供する機能です。
6
6
 
7
7
  現在自分はHoloLens2のScene Understandingの機能を使ったアプリケーションを、以下のサンプルプロジェクトを書き換えて作成しています。
8
8
 

3

内容の修正

2020/12/27 13:43

投稿

inkyaman
inkyaman

スコア1

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  ####Scene UnderstandingのUnityエディタ上でのデモ
20
20
 
21
- HoloLens2とありますが、上記サンプルプロジェクトのサンプルシーンをunity上で開き、SceneunderstandingManagerオブジェクトにアタッチされたSceneUnderstandingDataProvider.csにおけるRun On Deviceをインスペクター上でオフにすることで、予め用意されたシーンを利用してunityエディタ上でどのようなオブジェクトが表示されるのかというデモを見ることができます。
21
+ HoloLens2とありますが、上記サンプルプロジェクトのサンプルシーンをunity上で開き、SceneunderstandingManagerオブジェクトにアタッチされたSceneUnderstandingDataProvider.csにおけるRun On Deviceをインスペクター上でオフにすることで、予め用意されたシーンを利用してunityエディタ上でどのようなオブジェクトが表示されるのかというデモを見ることができます。**今回の質問は、このUnity上の実行デモにおける動作に問題が生じていることに関してのものなので、HoloLens2とは関係なしに、Unityにお詳しい方がいましたらご回答いただけたら幸いです。**
22
22
 
23
23
 
24
24
 

2

内容の修正

2020/12/27 13:41

投稿

inkyaman
inkyaman

スコア1

test CHANGED
File without changes
test CHANGED
@@ -6,25 +6,25 @@
6
6
 
7
7
  現在自分はHoloLens2のScene Understandingの機能を使ったアプリケーションを、以下のサンプルプロジェクトを書き換えて作成しています。
8
8
 
9
- https://github.com/sceneunderstanding-microsoft/unitysample
9
+ [https://github.com/sceneunderstanding-microsoft/unitysample](https://github.com/sceneunderstanding-microsoft/unitysample)
10
10
 
11
11
 
12
12
 
13
13
  また、Scene Understandingの概要・動作については以下のページを参考にしています。
14
14
 
15
- https://qiita.com/Futo_Horio/items/2759f9ca2b892709ab66
15
+ [https://qiita.com/Futo_Horio/items/2759f9ca2b892709ab66](https://qiita.com/Futo_Horio/items/2759f9ca2b892709ab66)
16
16
 
17
17
 
18
18
 
19
19
  ####Scene UnderstandingのUnityエディタ上でのデモ
20
20
 
21
- HoloLens2とありますが、上記サンプルプロジェクトのサンプルシーンを開き、SceneunderstandingManagerにアタッチされたSceneUnderstandingDataProvider.csにおけるRun On Deviceをインスペクター上でオフにすることで、予め用意されたシーンを利用してunityエディタ上でどのようなオブジェクトが表示されるのかというデモを見ることができます。
21
+ HoloLens2とありますが、上記サンプルプロジェクトのサンプルシーンをunity上で開き、SceneunderstandingManagerオブジェクトにアタッチされたSceneUnderstandingDataProvider.csにおけるRun On Deviceをインスペクター上でオフにすることで、予め用意されたシーンを利用してunityエディタ上でどのようなオブジェクトが表示されるのかというデモを見ることができます。
22
22
 
23
23
 
24
24
 
25
25
  ####実現したいこと
26
26
 
27
- このプロジェクトにおけSceneUnderstandingDisplayManager.csというスリプにおいて、SceneRootというオブジェクトを用意し、それをローカル座標原点として、取得したシーンからオブジェクトの位置を取得し、unity内で正しくオブジェクトを設置しています。自分はメイカメラある方向に壁や床の面を少しだけずらしたいと思い、ワールド座標のメインカメラSceneRootローカル座標でどの位置にあたるかを取得する必要があると思ったので、SceneRootのワールド座標を取得しようとしたところ、次のような問題が生じました。
27
+ 表示され壁や床といった各オブジェクト、SceneRootと呼ばれるオブジェクトのオブジェクトとして設置されます(初期状態ではエディタ上Rootという名前のオブジェクトが該当る)。自分は作成するアプリケーションの関係上、ワールド座標空間におけるカメラと、SceneRootを原点とするローカル座標空間オブジェクトの位置関係を取得する必要があったためまずSceneRootのワールド座標の位置および傾きを取得しようと試みようとしたところ、次のような問題が生じました。
28
28
 
29
29
 
30
30
 
@@ -42,9 +42,9 @@
42
42
 
43
43
 
44
44
 
45
- と表示されるので、これを基準にオブジェクトを配置しているのですが、オブジェクト設置直前(SceneUnderstandingDisplayManager.cs内の298行目DisplaySceneObjectクラス内)
45
+ と表示されるので、これを基準にオブジェクトを配置しているのですが、オブジェクト設置直前(SceneUnderstandingDisplayManager.cs内の298行目DisplaySceneObjectクラス内)に挿入した
46
46
 
47
- Debug.Log(SceneRoot.transform.position)およびDebug.Log(SceneRoot.transform.rotation)を行ったころ実行の際コンソール上で
47
+ Debug.Log(SceneRoot.transform.position)およびDebug.Log(SceneRoot.transform.rotation)によると、コンソール上で
48
48
 
49
49
 
50
50
 
@@ -54,33 +54,19 @@
54
54
 
55
55
 
56
56
 
57
- と表示されてしいました。
57
+ と表示されていまた。初期移動がなことはともかく、初期回転なしという、SceneRootのインスペクター上のRotationの値とは異なる値を取得していました。
58
58
 
59
59
 
60
60
 
61
61
  ### 試したこと
62
62
 
63
- SceneRootを親としたCubeオブジェクトを作成したところ、実行の際はちゃんと傾いて表示されたのですが、positionおよびlocalPositionともにローカル座標のものになっていました。
63
+ SceneRootを親としたCubeオブジェクトを作成したところ、実行の際はSceneRootのインスペクターのRotationが示すように、ちゃんと傾いて表示されたのですが、positionやrotationの値はともに
64
64
 
65
+ (0.0,0.0,0.0)←position
65
66
 
67
+ (0.0,0.0,0.0,1.0)←rotation
66
68
 
67
- また、あらかじめエディタ画面上でCube(名前 : localcube)を作成し、DisplayManagerスクリプト上で以下のようなコードを挿入したころ、ぜか実行中はCubeがヒエラルキー内から消え、デバッグ画面にはそのまま現在のワールドカメラ座標が表示されしまいました。おそらくSceneRootの座標が先に示した通り、Position(0,0,0,0),Rotation(0,0,0,1)で表示されているため、ワールド座標とローカル座標が全く同じのままであるからだと思います。
68
-
69
- ```C#
70
-
71
- GameObject localcube = GameObject.Find("localcube");
72
-
73
- localcube.transform.position = Camera.main.transform.position;
74
-
75
- localcube.transform.rotation = Quaternion.identity;
76
-
77
- localcube.transform.parent = SceneRoot.transform;
78
-
79
- Debug.Log(localcube.transform.localPosition);
80
-
81
- Debug.Log(localcube.transform.localRotation);
82
-
83
- ```
69
+ となていました。
84
70
 
85
71
 
86
72
 

1

初心者マーク記載

2020/12/27 13:35

投稿

inkyaman
inkyaman

スコア1

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- ####Scene understandingについて
3
+ ####Scene understanding機能について
4
4
 
5
5
  Scene UnderstandingはHoloLens2で取得した環境メッシュデータを分析し、壁や床といったオブジェクトの位置やメッシュデータを提供する機能です。
6
6