Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2018/03/09 第五回HoloLens読書会
Search
ZuQ9Nn
March 09, 2018
0
4.1k
2018/03/09 第五回HoloLens読書会
2018/03/09 第五回HoloLens読書会
発表資料
ZuQ9Nn
March 09, 2018
Tweet
Share
More Decks by ZuQ9Nn
See All by ZuQ9Nn
今更ながらHoloGiraffeのクローンアプリ作成にチャレンジしてみた
zuq9nn
0
3.1k
2018/04/17 HoloLens RS4 Preview公開記念勉強会! @アカツキ
zuq9nn
1
680
HoloLensでユニティちゃんを椅子に 座らせてみた”その後”の話
zuq9nn
0
5.1k
HoloLensのはじめかた
zuq9nn
1
4.4k
Tokyo HoloLens meets up vol.5 LT
zuq9nn
1
4.4k
Fabricではじめるfastlane
zuq9nn
0
1.8k
第六回カジュアルSwift勉強会@青葉台
zuq9nn
2
920
Featured
See All Featured
Happy Clients
brianwarren
98
6.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.8k
What's new in Ruby 2.0
geeforr
343
31k
KATA
mclloyd
29
14k
Designing for humans not robots
tammielis
250
25k
GraphQLとの向き合い方2022年版
quramy
43
13k
A Philosophy of Restraint
colly
203
16k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Transcript
第5 回 HoloLens 参考書 読書会 2018/03/09 ZuQ9Nn(ずきゅ~ん)
自己紹介 ZuQ9Nn(ずきゅ~ん) 普段は会社員で、Objective-C、iOSのツール系の開発 Unity、HoloLensの実務経験等はありません。 あくまで趣味開発のレベル
一応ブログでもHoloLensの技術記事があります Unity認定合格しました!
今回扱う内容 Spatial Mapping マイクロソフトの高橋忍さんが、スパチャルマッピングと読んでいたので読 み方はそちらが正しい? AcademyではHolograms 230(https://developer.microsoft.com/en-us/windows/mixed-
reality/holograms_230) ビデオ内ではスペーシャルマッピングと言っているように聞こえます。 今回はスペーシャルマッピングで統一します。
今回の流れ Chapter5のプロジェクトに追加しますので、まずは、Chapter5の状況 を再現させる Spatial Mappingまでのところを書籍の手順にそって(p174~p186) Spatial Mappingを詳しく説明
書籍の残りを手順にそってアプリを完成(p186~p206) 実機で動かすための設定、注意事項 Spatial Mappingのまとめ
今回の環境 Unity 2017.3.f1(64bit) Visual Studio 2017 15.5.6 Mixed Reality Toolkit
Unity V1.2017.2.0.unitypa ckage
書籍のGithubリポジトリも利用します。 https://github.comPacktPublishing/HoloLens-Beginners-Guide をcloneまたは、Download Zipします
Chapter5の再現 まずは、UnityのProject nameをHoloLens Beginners Guideとし てプロジェクトを作成。
書籍のGitHubからChapter5をインポート UnityのmenuからAssets > Import package > Custom packageを選択
書籍のリポジトリChapter5からChapter5.unitypackageを選択 ScenesのChapt5.unityとSoundsフォルダのみチェックしてImport
Mixed Reality Toolkit Unityのダウンロード https://github.com/Microsoft/MixedRealityToolkit-U nit releases の をクリック
HoloToolkit-Unity-v1.2017.2.0.unitypackageをクリックしてダウ ンロード
Mixed Reality Toolkit Unityをインポート UnityのmenuからAssets > Import package >
Custom packageを選択 Holotoolkit-Unity-v1.2017.2.0.unitypackageを選択してすべてイ ンポート
Chapter5のSceneを選択 UnityのProject View > ScenesのChapter5を選択 HierarchyにMain Camera、Directional Light、Layer1~Layer4
が存在していることを確認 この状態でUnityを実行し、エラーが無ければ、Chapter5は完成
Scriptsフォルダの作成 UnityのProject View のAssetsフォルダを右クリック メニューからCreate > Folderを選択
Floder名をScriptsとする
InputManager、HoloLensCameraの PrefabをHierarchyに UnityのProject View のAssets > HoloToolkit > Input
> Prefabs の中のHoloLesCamera、InputManagerを選択し、Hierarchyにド ラッグアンドドロップ
MainCameraの削除 UnityのHierarchy ViewのMain Cameraを選択し、右クリックでメ ニューを表示、Deleteを選択してMain Cameraを削除
Basic CursorのPrefabをHierarchyに UnityのProject View のAssets > HoloToolkit > Input
> Cursor > Prefabsの中のBasic Cursorを選択し、Hierarchyにドラッグアンド ドロップ
書籍のGitHubから skeeballmachine.unitypackageをインポート UnityのmenuからAssets > Import package > Custom package
を選択 書籍のリポジトリChapter6からskeballmachine.unitypackageを選 択 LaunchBall.cs、PowerSwitch.csのチェックを外してImport
書籍のGitHubから SpatialMapping.unitypackageをインポート UnityのmenuからAssets > Import package > Custom package
を選択 書籍のリポジトリChapter6からSpatialMapping.unitypackageを選択 全てインポート
SpatialMappingのPrefabをHierarchyに UnityのProject View のAssets > HoloToolkit > SpatialMapping >
Prefabsの中のSpatialMappingを選択し、Hierarchyにドラッグアン ドドロップ
SpatialMappingに部屋のモデルをセット UnityのHierarch ViewのSpatialMappingを選択し、Inspector Viewを表示 Inspector ViewのObject Surfce ObserverのRoom
Modelに Project ViewのAssets > Prefabs > SpatialMapping.objをドラッ グアンドドロップでセット
Unityを実行 Unityを実行し、Game ViewにSpatial Mappingのワイヤーフレームが 表示されていればOK ここでSpatial Mappingについて詳しく説明
Spatial Mappingとは HoloLensはセンサーを利用して周囲の空間のデータをスキャン し、HoloLens内に保持します。 HoloLens内の空間データにアクセスしたり、メッシュ化して表示する機能 スキャンした空間情報は一定単位に分割してHoloLensに保存されて Unityでは「Surface」と呼ぶ
一定の区間ごとに 空間の情報スキャン 保存する Surface Surface 一定の区間ごとに 空間の情報スキャン 保存する Surface
Spatial Mappingとは UnityのAPIを通じて空間のスキャンを行ったり、空間情報にアクセスできる 実際にはMixed Reality Toolkit Unityを利用することで簡単に利用すること ができる
SpatialMapping.prefabをUnityのHierarcyを置くだけでOK Surface Surface API 開発者 Surface Mixed Reality Toolkity Unity
SpatialMapping.prefabについて 下記のスクリプトがprefabにアタッチされている SpatialMappingObserver.cs SpatialMappingManager.cs ObjectSurfaceObserver.cs
ObjectSurfaceObserver.cs Unity Editor上であらかじめ用意されている部屋のモデルにメッシュを表 示させる Inspector Viewから利用できるプロパティ Room Model 部屋のモデルを指定するとUnity
Editor上でメッ シュ化された部屋を確認できる Simulated Update Period In Sconds 0以上の場合は空間のSurface情報を更新 (SpatialUnderstandingで利用)
SpatialMappingObserver.cs 実際の空間のスキャンを行ったり スキャンした空間のデータを貯めたり、更新している Inspctor Viewから利用できるプロパティ Triangles Per Cubic
Meter 生成されるメッシュの密度、値を大きくするとメッ シュが細かくなる Time Between Updates 空間情報の更新時間、値を小さくすると空間情報 の更新が早くなる Observer Volume Type 空間領域の形状を設定。 Axis Aligned Box Oriented Box Shpere Extents アプリで利用する空間領域を定義 x,y,zの数値を小さくすると狭い範囲をスキャン Origin アプリで利用する空間領域の中心座標を設定、座 標はワールド座標 Orientation アプリで利用する空間領域の固を設定
SpatialMappingManager.cs SpatialMappingObserver、SpatialMappingSourceを管理する 開発者はSpatialMappingManagerを使って、空間のスキャン開始、 停止を制御することができる。 空間情報をSpatialMappingSourceから取り出せる Inspctor Viewから利用できるプロパティ
Physics Layer 生成されれたメッシュのレイヤー番号 Surface Material メッシュに割り当てるmaterial Auto Start Observer 空間のスキャンを自動開始するかのチェック Draw Visual Mesh メッシュを表示させるかのチェック Cast Shadows メッシュの影をキャストするかのチェック
一旦休憩 SpatialMappingについての詳細は以上 ここで一旦で休憩、書籍の残りを手順に従ってアプリを完成
AppManagerの作成 UnityのHierarch ViewのCreateからCreate Emptyで空の GameObjectを作成 作成したGameObjectの名前をAppManagerとする
skeePrefabをHierarchyに UnityのProject View のAssets > Prefabsの中のskeeを選択 し、Hierarchyにドラッグアンドドロップ
skeeを非アクティブに UnityのHierarch Viewのskeeを選択し、Inspector Viewを表示 Inspector Viewのskeeのチェックを外して非アクティブに
ApplicationManagerスクリプトの作成 UnityのProject ViewのAssetsのScriptsフォルダを選択し、右クリック でメニューからCreate > C# Scriptを選択 スクリプトの名前をApplicationManagerとする
書籍のコードの書き換え コード全体 https://gist.github.com/ZuQ9Nn/c5a217ceb9a237e81b164a555 5aa0009 修正前 public void OnSpeechKeywordRecognized(SpeechKeywordRecognizedEventD ata eventData)
↓ 修正後 public void OnSpeechKeywordRecognized(SpeechEventData eventData)
HierarchyのAppManagerに ApplicationManagerスクリプトをアタッチ UnityのHierarcy View のAppManagerを選択、Inspector Viewを 表示 UnityのProject
ViewのScirpt > ApplicationManagerを Appmanagerのinspector Viewにドラッグアンドドロップしてアタッチ
AppManagerのプロパティをセット UnityのInspector ViewのAppManagerのSound Layer1~ Sound Layer4にHierarchのLayer1~Layer4を Skeeballmachineにskeeをドラッグアンドドロップしてセット
AppManagerにSpeech Input Souceをア タッチ(書籍と手順が異なります注意) UnityのInspector ViewのAppManagerのAdd Componetを選択 Speech
Input Souceを選択してアタッチ Insptector ViewのSpeech Input Souceの+ボタンをクリック keyword ” に done”を入力
AppManagerにSpeech Input Handlerを アタッチ(書籍と手順が異なります注意) UnityのInspector ViewのAppManagerのAdd Componetを選択 Speech
Input Handlerを選択してアタッチ Insptector ViewのSpeech Input Handlerの+ボタンをクリック Response()の+ボタンをクリック Runtime OnlyにHierarchyのAppManagerをドラッグアンドドロップし てセット No FunctionにApplicationManagerのSetSpatialMapを選択 ” 引数の指定に done”を入力
AppManagerにSpeech Input Handlerを アタッチ(書籍と手順が異なります注意)
AppManagerにSpeech Input Handlerを アタッチ(書籍と手順が異なります注意)
書籍のGitHubから PlaceSkeeBallMachine.csをコピー 書籍のリポジトリChapter6からPlaceSkeeBallMachine.csをUnityの Project ViewのAssets > Scriptsにドラッグアンドドロップしてコピー
PlaceSkeeBallMachine.csの書き換え 修正前 public virtual void OnInputClicked(InputEventData eventData) ↓ 修正後 public
virtual void OnInputClicked(InputClickedEventData eventData)
PlaceSkeeBallMachine.csをアタッチ UnityのHierarch Viewのskeeを展開し、TaptoPlaceColliderをク リックInspector Viewを表示 UnityのProject ViewのAssets >
Scriptsの PlaceSkeeBallMachine.csをTaptoPlaceColliderのInspector Viewにドラッグアンドドロップしてアタッチ
PlaceSkeeBallMachineのInspector設定 UnityのHierarch Viewのskeeを展開し、TaptoPlaceColliderをク リックInspector Viewを表示 PlaceSkeeBallMacineのPlace Palent On
Tapのチェックをonに PlaceSkeeBallMacineのPlant Game ObjectにUnityのHierarch Viewのskeeをドラッグアンドドロップしてセット
書籍のアプリの完成 Unityの実行ボタンを押してエラーが無ければ、書籍のアプリの完成 UnityのGame ViewでShiftを押しながらクリックすると skeeballmachineが表示される
ビルドするときの設定 Mixed Reality Toolkit UnityをインポートしているとUnityのメニューに Mixed Reality Tookitが表示されているので、そこをクリック
Configure >Apply UWP Capability Settingsを選択 Apply UWP Capablity SettingsのSpatial Perceptionをチェックし Apply
ビルドするときの設定 UnityのメニューのFile > Build Settingsを選択 Build SettingsのScene In
BuildのAdd Open Scenesをクリックし てScnes/Chapter5にチェック Build SettingsのPlatformにUnivarsal Windows Platformを選 択、Player Settings をクリック Player SettingsのInspector、XR Settings > Virtual Reality SupportedをチェックしWindows Mixed Realityが選択されていること を確認
ビルドするときの設定
実機で動かすとこうなります https://youtu.be/ZZ_Kfpzzqg0
Spatial Mappingのまとめ HoloLesnは周囲の空間をスキャンしデータとして保持している HoloLensの保持している空間データを扱うのがSpatialMapping 開発者はUnityのAPIを利用し空間のスキャンを行ったり、空間情報を 利用することができる
Mixed RealityToolkit Unityを利用すること で、SpatialMapping.prefabをUnityのHierarcyに置くだけで大丈夫 よりコードで細かく制御したい場合はMixed Reality Toolkit Unityの SpatialMappingManger.csを使うと良い 実機にビルドするときはCapabilityとXR Settingsを忘れずに
次回 日時 2018/03/28(水) 18:30~21:00 場所 株式会社アカツキ 東京都品川区上大崎2-13-30 担当 イワケンさん(@iwaken_unity) 内容
Chapter7 World Anchor