Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
第6回 HoloLens参考書 読書会 World Anchorについて 3月28日 イワケン
Slide 2
Slide 2 text
2/58 自己紹介 •岩崎謙汰 (イワケン) 1993年生まれ •東京工業大学 大学院卒業 4月から社会人 •研究分野: グラフサンプリング •趣味: Unity、AR×〇〇を考える、Vtuber •HoloLens実績 • めざせスカウター! HoloLensによる 特定個人の 顔認識アプリ制作と その課題 (ABCSpring 2017) • XR HACKATHON、決勝進出 • 学生ハッカソン、企業賞
Slide 3
Slide 3 text
3/58 今日扱う内容 •書籍 第7章 “The Tools of the Trade” • Persistence (永続性) • World Anchors • ゲーム内のデバッグWindow
Slide 4
Slide 4 text
4/58 今回のゴール •World AnchorとPersistence (永続性) の意味を 理解する •World AnchorのUnity上の使い方を学ぶ •書籍の流れを確認する アンカーとは「いかり」のこと。 イメージで覚えておこう! な が れ
Slide 5
Slide 5 text
5/58 今回の環境 Unity 2017.1.0f3 Visual Studio 2017 13.0.1 HoloToolkit-Unity v1.2017.1.0 Parallels Desktop13 for Mac Pro Edition 13.2.0
Slide 6
Slide 6 text
6/58 Persistence (永続性) とは何か理解しよう
Slide 7
Slide 7 text
7/58 Persistence (永続性) のモチベーション •ホログラム (オブジェクト) をリアル空間に関連付けて 配置したい (その場にあるかのような) •アプリケーションを落としても、その場に残るようにし たい。(ゲームでの位置のセーブ機能) •ん? どゆこと?
Slide 8
Slide 8 text
8/58 ダメな例1 バーチャル洗濯機を 時計の下に置いたが…
Slide 9
Slide 9 text
9/58 ダメな例1 バーチャル洗濯機を 時計の下に置いたが… ARメガネを動かすと 移動してしまう!
Slide 10
Slide 10 text
10/58 良き例 ARカメラが移動&回転しても、 リアルの時計の下にいて欲しい! World Anchorで 固定されてるイメージ
Slide 11
Slide 11 text
11/58 ダメな例2 バーチャル洗濯機を 時計の下に置いて、 アプリを落としたら…
Slide 12
Slide 12 text
12/58 ダメな例2 次の日アプリを起動した ら隣の家にあった
Slide 13
Slide 13 text
13/58 良き例 アプリを落としても、 起動したら時計の下にあれ! これがPersistence (永続性)
Slide 14
Slide 14 text
14/58 World Anchorを使うと こういうことが出来るようになる!
Slide 15
Slide 15 text
15/58 クイズ •先程はアプリケーションを落とした場合、永続性が保 たれてる例であった。 では、アプリケーションを落とした後に さらにHoloLensの電源を落とした場合、 永続性が保たれるか。 1. 永続性は保たれる 2. 永続性は保たれない
Slide 16
Slide 16 text
16/58 なぜHoloLensは このようなことができるの?
Slide 17
Slide 17 text
17/58 Spatial Coordinate Systems (空間座標系) のおかげさ
Slide 18
Slide 18 text
18/58 リアル世界の座標系 vs HoloLens座標系 •Unity上の 1 Unit = 現実世界の1m • ここまでは良かった •リアルの現在地 (緯度経度) を HoloLens世界に知らせる方法がない。 • GPSあるけど精度悪すぎて非現実的 •HoloLensはもっと小さな世界を繊細に表現したい
Slide 19
Slide 19 text
19/58 World Anchor •絶対座標は厳しい… (だってGPSの精度悪すぎるんだもん) •よし、相対座標を採用しよう •Spatial Mappingで部屋の形状 (Mesh) わかるから、 その相対位置で配置しよう。 これがWorld Anchor の実装アイデア。 ?
Slide 20
Slide 20 text
20/58 仕組みはなんとなくわかった でもWorld Anchorの実装って 難しいんでしょう?
Slide 21
Slide 21 text
21/58 World Anchorは 比較的かんたんです! (書籍引用)
Slide 22
Slide 22 text
22/58 World Anchorはこれだけ覚えよう •World Anchor Managerから基本操作する。 • 固定するオブジェクトの名前を考える。 • 固定したい時はWorld AnchorをAttachする。 • 固定したくない時はWorld AnchorをRemoveする。 World Anchor Manager World Anchor Store オブジェクト AttachAnchor関数を実行したイメージ図 登録 名前: 冷蔵庫 名前: 冷蔵庫 GameObject World Anchor
Slide 23
Slide 23 text
23/58 World Anchor Managerのコード •最初は気にしなくてもよし •World Anchor Storeを管理する •AnchorをAttachする (Store状況を見ながら) •AnchorをRemoveする (Storeから削除する) •World Anchor Storeには、 Anchorが付けられたオブジェクトの 情報がストックされている。 World Anchor Store 名前: 冷蔵庫 GameObject 名前: 時計 GameObject ・ ・ ・ World Anchor Manager
Slide 24
Slide 24 text
24/58 では、書籍にのっとって 手を動かしていきます!
Slide 25
Slide 25 text
25/58 書籍のソースコードのダウンロード • https://github.com/PacktPublishing/HoloLens-Beginners- Guide をcloneまたはDownload Zipします。
Slide 26
Slide 26 text
26/58 プロジェクトを新規作成
Slide 27
Slide 27 text
27/58 書籍のGithubからChapter7をインポート •Unityのメニューから [Assets] > [Import Package] > [Custom Package]を選択 •書籍のGithubのフォルダChapter7から Chapter7before.unitypackageをインポート
Slide 28
Slide 28 text
28/58 Mixed Reality Toolkit Unityのダウンロード •https://github.com/Microsoft/MixedRealityToolkit- Unity/releases をクリック •自分のバージョンのunitypackageをダウンロード
Slide 29
Slide 29 text
29/58 Mixed Reality Toolkit Unityのインポート •Unityのメニューから [Assets] > [Import Package] > [Custom Package]を選択 •HoloToolkit-Unity-v1.2017.1.0.unitypackageを選択 して全てをインポート
Slide 30
Slide 30 text
30/58 Chapter7を選択 •Unityのプロジェクタービューから[Scene] > [Chapter7]を選択。エラーが出なければOK
Slide 31
Slide 31 text
31/58 オブジェクト準備 •ヒエラルキービューの非アクティブの Sphereオブジェクトを削除する。 •skeeオブジェクトの子供に TapToPlaceColliderオブジェクトが あれば削除する。
Slide 32
Slide 32 text
32/58 BoxColliderのアタッチ •skeeオブジェクトを選択しBoxColliderをアタッチする。 •CenterとSizeの値を以下のように設定 • Center: X: -152 , Y: 39, Z: -335 • Size: X: 304 , Y: 463 , Z: 1189
Slide 33
Slide 33 text
33/58 PlaceSkeeBallMachine.csをアタッチ •skeeオブジェクトを選択しPlaceSkeeBallMachine.cs をアタッチする。
Slide 34
Slide 34 text
34/58 World Anchorの実装 •PlaceSkeeBallMachine.csを開く。 •11,12行目を確認する。
Slide 35
Slide 35 text
35/58 •40行目でSingletonのWorldAnchorManagerを代入 •48~55行目でWorldAnchorManagerに skeeオブジェクトをアタッチ World Anchorの実装
Slide 36
Slide 36 text
36/58 Unityでよく出るgameObject •コード中のgameObjectについて gameObject Scriptをアタッチしている実際の GameObject this.gameObject ↑ gameObjectと同じ this このScript。MonoBehaviourを継承
Slide 37
Slide 37 text
37/58 Update関数内のRaycast •Update関数内のコード (Update関数はフレームごと に呼ばれるUnity特有の関数)
Slide 38
Slide 38 text
38/58 OnInputClicked関数 •AttachAnchor,RemoveAnchorの使用例
Slide 39
Slide 39 text
39/58 WorldAnchorの実装のおさらい •おさらい • GameObjectにアンカーをアタッチしたい時 WorldAnchorManager.Instance.AttachAnchor (ゲームオ ブジェクト, 名前); を呼ぶ • GameObjectからアンカーを外したい時 WorldAnchorManager.Instance.RemoveAnchor (ゲーム オブジェクト); を呼ぶ • Anchorがアタッチされたオブジェクトは基本静止状態
Slide 40
Slide 40 text
40/58 ApplicationManager.csの書き換え (1/2) •プロジェクトビューの[Scripts]>[ApplicationMangaer] を開く。
Slide 41
Slide 41 text
41/58 ApplicationManager.csの書き換え (2/2) •Update関数の中身を書き換える。
Slide 42
Slide 42 text
42/58 skeeの位置を変える
Slide 43
Slide 43 text
43/58 AppManagerオブジェクトの編集
Slide 44
Slide 44 text
44/58 World Anchor Managerを新しく作る
Slide 45
Slide 45 text
45/58 実行するとエラーが出るみたい… •書籍の金言 •Do not hesitate to search for an answer. 答えを検索することをためらうな •今回の場合、WorldAnchorStoreがUnityEditor上で 動作しないことが原因らしい。 •つまり、HoloLensにBuildすればOK♪
Slide 46
Slide 46 text
46/58 アプリデバッグの実装 •詳しくは最終章でやるよ! •この章では、シンプルなテキストボックスを実装する。 Debug Message が見える。
Slide 47
Slide 47 text
47/58 デバッグ用のテキストを設定する •プロジェクトビューから [HoloToolkit] > [UI] > [Prefabs] > [3DTextPrefab]をヒエラルキービューの HoloLensCameraにドラッグ &ドロップする
Slide 48
Slide 48 text
48/58 デバッグ用のテキストを設定する •Prefab化することで、元のPrefabと分離して新しい Prefabを作る。
Slide 49
Slide 49 text
49/58 ApplicationManager.csを書き換える •Textmeshを書き換えられるようにする。
Slide 50
Slide 50 text
50/58 ドラッグ&ドロップ •DebugInfoオヴジェクトをApplicationManagerと •結びつける。
Slide 51
Slide 51 text
51/58 Startボタンの設置 追加: SizeのZを0.01な ど0より大きくする
Slide 52
Slide 52 text
52/58 名前の変更 •先程の3DTextPrefabをCrtl + Dで複製する。 •それぞれの名前を ”StartBtn”,“OptionBtn”にする
Slide 53
Slide 53 text
53/58 ボタンの配置
Slide 54
Slide 54 text
54/58 StartButton.csを加える
Slide 55
Slide 55 text
55/58 StartButton.csを書き加える •OnInputClicked関数 (AirTapされたら呼ばれる関数) に以下のコードを加える。 •ApplicationMangaer.Instance.debugTextMesh.text += “¥n Start Button Clicked”;
Slide 56
Slide 56 text
56/58 やってみよう •OptionButtonも同様に行おう! •ApplicationMangaer.Instance.debugTextMesh.text += “¥n Option Button Clicked”; と書き加える。
Slide 57
Slide 57 text
57/58 おわり〜 •ビルドしよう!
Slide 58
Slide 58 text
58/58 World Anchorまとめ •HoloLensでは、ホログラムの位置が大事。アプリ ケーションを落としても変わらない永続性が必要。 •World Anchorは空間マッピングの相対座標によって 達成される。 •World Anchor ManagerによってWorld Anchorを 管理する