Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第6回 HoloLens 参考書読書会 アンカー編
Search
Kenta Iwasaki
March 29, 2018
Programming
280
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第6回 HoloLens 参考書読書会 アンカー編
この資料は第6回 HoloLens 参考書読書会で使用したスライドの一部です。
Kenta Iwasaki
March 29, 2018
More Decks by Kenta Iwasaki
See All by Kenta Iwasaki
31歳男性としての人生資本バランス & ウェルビーイング
iwaken71
0
140
Iwaken Lab. 説明スライド 2024.04.01
iwaken71
0
5.5k
3か月前の自分に伝えたいUEFN / Verseの知見5選
iwaken71
0
1.5k
Coding Stoicだった 自分を思い出す
iwaken71
0
210
HoloLensと謎解きの融合: 「TARGET」開発物語 - 企画から一般公開に向けての道のり
iwaken71
0
180
Iwaken Lab.紹介スライド2023.05.14
iwaken71
0
3.9k
Babylon.js書籍出版の裏側。ツイートから始まった奇跡の1年を振り返る
iwaken71
0
560
XR好き学生支援コミュニティIwaken Lab.が今熱い
iwaken71
0
230
オンライン時代の 技術仲間の増やし方 ~3つのコミュニティ事例を添えて~
iwaken71
0
930
Other Decks in Programming
See All in Programming
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
32
14k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
380
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1k
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
9.3k
iOSDC2026登壇資料.pdf
riofujimon
0
200
AWSに止められる覚悟してますか?
morizo_1984
2
490
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
230
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
470
Agents on Rails - Rails at Scale 2026
irinanazarova
0
310
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
600
Verilogで学ぶCPU自作入門.pdf
uyuki234
7
3.9k
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
250
Featured
See All Featured
Unsuck your backbone
ammeep
672
58k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
430
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
560
A Tale of Four Properties
chriscoyier
163
24k
Everyday Curiosity
cassininazir
0
340
HDC tutorial
michielstock
2
930
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
930
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
240
The browser strikes back
jonoalderson
0
1.7k
Transcript
第6回 HoloLens参考書 読書会 World Anchorについて 3月28日 イワケン
2/58 自己紹介 •岩崎謙汰 (イワケン) 1993年生まれ •東京工業大学 大学院卒業 4月から社会人 •研究分野: グラフサンプリング
•趣味: Unity、AR×〇〇を考える、Vtuber •HoloLens実績 • めざせスカウター! HoloLensによる 特定個人の 顔認識アプリ制作と その課題 (ABCSpring 2017) • XR HACKATHON、決勝進出 • 学生ハッカソン、企業賞
3/58 今日扱う内容 •書籍 第7章 “The Tools of the Trade” •
Persistence (永続性) • World Anchors • ゲーム内のデバッグWindow
4/58 今回のゴール •World AnchorとPersistence (永続性) の意味を 理解する •World AnchorのUnity上の使い方を学ぶ •書籍の流れを確認する
アンカーとは「いかり」のこと。 イメージで覚えておこう! な が れ
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
6/58 Persistence (永続性) とは何か理解しよう
7/58 Persistence (永続性) のモチベーション •ホログラム (オブジェクト) をリアル空間に関連付けて 配置したい (その場にあるかのような) •アプリケーションを落としても、その場に残るようにし
たい。(ゲームでの位置のセーブ機能) •ん? どゆこと?
8/58 ダメな例1 バーチャル洗濯機を 時計の下に置いたが…
9/58 ダメな例1 バーチャル洗濯機を 時計の下に置いたが… ARメガネを動かすと 移動してしまう!
10/58 良き例 ARカメラが移動&回転しても、 リアルの時計の下にいて欲しい! World Anchorで 固定されてるイメージ
11/58 ダメな例2 バーチャル洗濯機を 時計の下に置いて、 アプリを落としたら…
12/58 ダメな例2 次の日アプリを起動した ら隣の家にあった
13/58 良き例 アプリを落としても、 起動したら時計の下にあれ! これがPersistence (永続性)
14/58 World Anchorを使うと こういうことが出来るようになる!
15/58 クイズ •先程はアプリケーションを落とした場合、永続性が保 たれてる例であった。 では、アプリケーションを落とした後に さらにHoloLensの電源を落とした場合、 永続性が保たれるか。 1. 永続性は保たれる 2.
永続性は保たれない
16/58 なぜHoloLensは このようなことができるの?
17/58 Spatial Coordinate Systems (空間座標系) のおかげさ
18/58 リアル世界の座標系 vs HoloLens座標系 •Unity上の 1 Unit = 現実世界の1m •
ここまでは良かった •リアルの現在地 (緯度経度) を HoloLens世界に知らせる方法がない。 • GPSあるけど精度悪すぎて非現実的 •HoloLensはもっと小さな世界を繊細に表現したい
19/58 World Anchor •絶対座標は厳しい… (だってGPSの精度悪すぎるんだもん) •よし、相対座標を採用しよう •Spatial Mappingで部屋の形状 (Mesh) わかるから、
その相対位置で配置しよう。 これがWorld Anchor の実装アイデア。 ?
20/58 仕組みはなんとなくわかった でもWorld Anchorの実装って 難しいんでしょう?
21/58 World Anchorは 比較的かんたんです! (書籍引用)
22/58 World Anchorはこれだけ覚えよう •World Anchor Managerから基本操作する。 • 固定するオブジェクトの名前を考える。 • 固定したい時はWorld
AnchorをAttachする。 • 固定したくない時はWorld AnchorをRemoveする。 World Anchor Manager World Anchor Store オブジェクト AttachAnchor関数を実行したイメージ図 登録 名前: 冷蔵庫 名前: 冷蔵庫 GameObject World Anchor
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
24/58 では、書籍にのっとって 手を動かしていきます!
25/58 書籍のソースコードのダウンロード • https://github.com/PacktPublishing/HoloLens-Beginners- Guide をcloneまたはDownload Zipします。
26/58 プロジェクトを新規作成
27/58 書籍のGithubからChapter7をインポート •Unityのメニューから [Assets] > [Import Package] > [Custom Package]を選択
•書籍のGithubのフォルダChapter7から Chapter7before.unitypackageをインポート
28/58 Mixed Reality Toolkit Unityのダウンロード •https://github.com/Microsoft/MixedRealityToolkit- Unity/releases をクリック •自分のバージョンのunitypackageをダウンロード
29/58 Mixed Reality Toolkit Unityのインポート •Unityのメニューから [Assets] > [Import Package]
> [Custom Package]を選択 •HoloToolkit-Unity-v1.2017.1.0.unitypackageを選択 して全てをインポート
30/58 Chapter7を選択 •Unityのプロジェクタービューから[Scene] > [Chapter7]を選択。エラーが出なければOK
31/58 オブジェクト準備 •ヒエラルキービューの非アクティブの Sphereオブジェクトを削除する。 •skeeオブジェクトの子供に TapToPlaceColliderオブジェクトが あれば削除する。
32/58 BoxColliderのアタッチ •skeeオブジェクトを選択しBoxColliderをアタッチする。 •CenterとSizeの値を以下のように設定 • Center: X: -152 , Y:
39, Z: -335 • Size: X: 304 , Y: 463 , Z: 1189
33/58 PlaceSkeeBallMachine.csをアタッチ •skeeオブジェクトを選択しPlaceSkeeBallMachine.cs をアタッチする。
34/58 World Anchorの実装 •PlaceSkeeBallMachine.csを開く。 •11,12行目を確認する。
35/58 •40行目でSingletonのWorldAnchorManagerを代入 •48~55行目でWorldAnchorManagerに skeeオブジェクトをアタッチ World Anchorの実装
36/58 Unityでよく出るgameObject •コード中のgameObjectについて gameObject Scriptをアタッチしている実際の GameObject this.gameObject ↑ gameObjectと同じ this
このScript。MonoBehaviourを継承
37/58 Update関数内のRaycast •Update関数内のコード (Update関数はフレームごと に呼ばれるUnity特有の関数)
38/58 OnInputClicked関数 •AttachAnchor,RemoveAnchorの使用例
39/58 WorldAnchorの実装のおさらい •おさらい • GameObjectにアンカーをアタッチしたい時 WorldAnchorManager.Instance.AttachAnchor (ゲームオ ブジェクト, 名前); を呼ぶ
• GameObjectからアンカーを外したい時 WorldAnchorManager.Instance.RemoveAnchor (ゲーム オブジェクト); を呼ぶ • Anchorがアタッチされたオブジェクトは基本静止状態
40/58 ApplicationManager.csの書き換え (1/2) •プロジェクトビューの[Scripts]>[ApplicationMangaer] を開く。
41/58 ApplicationManager.csの書き換え (2/2) •Update関数の中身を書き換える。
42/58 skeeの位置を変える
43/58 AppManagerオブジェクトの編集
44/58 World Anchor Managerを新しく作る
45/58 実行するとエラーが出るみたい… •書籍の金言 •Do not hesitate to search for an
answer. 答えを検索することをためらうな •今回の場合、WorldAnchorStoreがUnityEditor上で 動作しないことが原因らしい。 •つまり、HoloLensにBuildすればOK♪
46/58 アプリデバッグの実装 •詳しくは最終章でやるよ! •この章では、シンプルなテキストボックスを実装する。 Debug Message が見える。
47/58 デバッグ用のテキストを設定する •プロジェクトビューから [HoloToolkit] > [UI] > [Prefabs] > [3DTextPrefab]をヒエラルキービューの
HoloLensCameraにドラッグ &ドロップする
48/58 デバッグ用のテキストを設定する •Prefab化することで、元のPrefabと分離して新しい Prefabを作る。
49/58 ApplicationManager.csを書き換える •Textmeshを書き換えられるようにする。
50/58 ドラッグ&ドロップ •DebugInfoオヴジェクトをApplicationManagerと •結びつける。
51/58 Startボタンの設置 追加: SizeのZを0.01な ど0より大きくする
52/58 名前の変更 •先程の3DTextPrefabをCrtl + Dで複製する。 •それぞれの名前を ”StartBtn”,“OptionBtn”にする
53/58 ボタンの配置
54/58 StartButton.csを加える
55/58 StartButton.csを書き加える •OnInputClicked関数 (AirTapされたら呼ばれる関数) に以下のコードを加える。 •ApplicationMangaer.Instance.debugTextMesh.text += “¥n Start Button
Clicked”;
56/58 やってみよう •OptionButtonも同様に行おう! •ApplicationMangaer.Instance.debugTextMesh.text += “¥n Option Button Clicked”; と書き加える。
57/58 おわり〜 •ビルドしよう!
58/58 World Anchorまとめ •HoloLensでは、ホログラムの位置が大事。アプリ ケーションを落としても変わらない永続性が必要。 •World Anchorは空間マッピングの相対座標によって 達成される。 •World Anchor
ManagerによってWorld Anchorを 管理する