Slide 1

Slide 1 text

第5 回 HoloLens 参考書 読書会 2018/03/09 ZuQ9Nn(ずきゅ~ん)

Slide 2

Slide 2 text

自己紹介  ZuQ9Nn(ずきゅ~ん)  普段は会社員で、Objective-C、iOSのツール系の開発  Unity、HoloLensの実務経験等はありません。  あくまで趣味開発のレベル  一応ブログでもHoloLensの技術記事があります  Unity認定合格しました!

Slide 3

Slide 3 text

今回扱う内容  Spatial Mapping  マイクロソフトの高橋忍さんが、スパチャルマッピングと読んでいたので読 み方はそちらが正しい?  AcademyではHolograms 230(https://developer.microsoft.com/en-us/windows/mixed- reality/holograms_230)  ビデオ内ではスペーシャルマッピングと言っているように聞こえます。  今回はスペーシャルマッピングで統一します。

Slide 4

Slide 4 text

今回の流れ  Chapter5のプロジェクトに追加しますので、まずは、Chapter5の状況 を再現させる  Spatial Mappingまでのところを書籍の手順にそって(p174~p186)  Spatial Mappingを詳しく説明  書籍の残りを手順にそってアプリを完成(p186~p206)  実機で動かすための設定、注意事項  Spatial Mappingのまとめ

Slide 5

Slide 5 text

今回の環境 Unity 2017.3.f1(64bit) Visual Studio 2017 15.5.6 Mixed Reality Toolkit Unity V1.2017.2.0.unitypa ckage

Slide 6

Slide 6 text

書籍のGithubリポジトリも利用します。 https://github.comPacktPublishing/HoloLens-Beginners-Guide をcloneまたは、Download Zipします 

Slide 7

Slide 7 text

Chapter5の再現  まずは、UnityのProject nameをHoloLens Beginners Guideとし てプロジェクトを作成。 

Slide 8

Slide 8 text

書籍のGitHubからChapter5をインポート  UnityのmenuからAssets > Import package > Custom packageを選択  書籍のリポジトリChapter5からChapter5.unitypackageを選択  ScenesのChapt5.unityとSoundsフォルダのみチェックしてImport

Slide 9

Slide 9 text

Mixed Reality Toolkit Unityのダウンロード  https://github.com/Microsoft/MixedRealityToolkit-U nit releases の をクリック  HoloToolkit-Unity-v1.2017.2.0.unitypackageをクリックしてダウ ンロード

Slide 10

Slide 10 text

Mixed Reality Toolkit Unityをインポート  UnityのmenuからAssets > Import package > Custom packageを選択  Holotoolkit-Unity-v1.2017.2.0.unitypackageを選択してすべてイ ンポート

Slide 11

Slide 11 text

Chapter5のSceneを選択  UnityのProject View > ScenesのChapter5を選択  HierarchyにMain Camera、Directional Light、Layer1~Layer4 が存在していることを確認  この状態でUnityを実行し、エラーが無ければ、Chapter5は完成

Slide 12

Slide 12 text

Scriptsフォルダの作成  UnityのProject View のAssetsフォルダを右クリック  メニューからCreate > Folderを選択  Floder名をScriptsとする

Slide 13

Slide 13 text

InputManager、HoloLensCameraの PrefabをHierarchyに  UnityのProject View のAssets > HoloToolkit > Input > Prefabs の中のHoloLesCamera、InputManagerを選択し、Hierarchyにド ラッグアンドドロップ

Slide 14

Slide 14 text

MainCameraの削除  UnityのHierarchy ViewのMain Cameraを選択し、右クリックでメ ニューを表示、Deleteを選択してMain Cameraを削除

Slide 15

Slide 15 text

Basic CursorのPrefabをHierarchyに  UnityのProject View のAssets > HoloToolkit > Input > Cursor > Prefabsの中のBasic Cursorを選択し、Hierarchyにドラッグアンド ドロップ

Slide 16

Slide 16 text

書籍のGitHubから skeeballmachine.unitypackageをインポート  UnityのmenuからAssets > Import package > Custom package を選択  書籍のリポジトリChapter6からskeballmachine.unitypackageを選 択  LaunchBall.cs、PowerSwitch.csのチェックを外してImport

Slide 17

Slide 17 text

書籍のGitHubから SpatialMapping.unitypackageをインポート  UnityのmenuからAssets > Import package > Custom package を選択  書籍のリポジトリChapter6からSpatialMapping.unitypackageを選択 全てインポート

Slide 18

Slide 18 text

SpatialMappingのPrefabをHierarchyに  UnityのProject View のAssets > HoloToolkit > SpatialMapping > Prefabsの中のSpatialMappingを選択し、Hierarchyにドラッグアン ドドロップ

Slide 19

Slide 19 text

SpatialMappingに部屋のモデルをセット  UnityのHierarch ViewのSpatialMappingを選択し、Inspector Viewを表示  Inspector ViewのObject Surfce ObserverのRoom Modelに Project ViewのAssets > Prefabs > SpatialMapping.objをドラッ グアンドドロップでセット

Slide 20

Slide 20 text

Unityを実行  Unityを実行し、Game ViewにSpatial Mappingのワイヤーフレームが 表示されていればOK  ここでSpatial Mappingについて詳しく説明

Slide 21

Slide 21 text

Spatial Mappingとは  HoloLensはセンサーを利用して周囲の空間のデータをスキャン し、HoloLens内に保持します。  HoloLens内の空間データにアクセスしたり、メッシュ化して表示する機能  スキャンした空間情報は一定単位に分割してHoloLensに保存されて Unityでは「Surface」と呼ぶ 一定の区間ごとに 空間の情報スキャン 保存する Surface Surface 一定の区間ごとに 空間の情報スキャン 保存する Surface

Slide 22

Slide 22 text

Spatial Mappingとは  UnityのAPIを通じて空間のスキャンを行ったり、空間情報にアクセスできる  実際にはMixed Reality Toolkit Unityを利用することで簡単に利用すること ができる  SpatialMapping.prefabをUnityのHierarcyを置くだけでOK Surface Surface API 開発者 Surface Mixed Reality Toolkity Unity

Slide 23

Slide 23 text

SpatialMapping.prefabについて  下記のスクリプトがprefabにアタッチされている  SpatialMappingObserver.cs  SpatialMappingManager.cs  ObjectSurfaceObserver.cs

Slide 24

Slide 24 text

ObjectSurfaceObserver.cs  Unity Editor上であらかじめ用意されている部屋のモデルにメッシュを表 示させる Inspector Viewから利用できるプロパティ Room Model 部屋のモデルを指定するとUnity Editor上でメッ シュ化された部屋を確認できる Simulated Update Period In Sconds 0以上の場合は空間のSurface情報を更新 (SpatialUnderstandingで利用)

Slide 25

Slide 25 text

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 アプリで利用する空間領域の固を設定

Slide 26

Slide 26 text

SpatialMappingManager.cs  SpatialMappingObserver、SpatialMappingSourceを管理する  開発者はSpatialMappingManagerを使って、空間のスキャン開始、 停止を制御することができる。  空間情報をSpatialMappingSourceから取り出せる Inspctor Viewから利用できるプロパティ Physics Layer 生成されれたメッシュのレイヤー番号 Surface Material メッシュに割り当てるmaterial Auto Start Observer 空間のスキャンを自動開始するかのチェック Draw Visual Mesh メッシュを表示させるかのチェック Cast Shadows メッシュの影をキャストするかのチェック

Slide 27

Slide 27 text

一旦休憩  SpatialMappingについての詳細は以上  ここで一旦で休憩、書籍の残りを手順に従ってアプリを完成

Slide 28

Slide 28 text

AppManagerの作成  UnityのHierarch ViewのCreateからCreate Emptyで空の GameObjectを作成  作成したGameObjectの名前をAppManagerとする

Slide 29

Slide 29 text

skeePrefabをHierarchyに  UnityのProject View のAssets > Prefabsの中のskeeを選択 し、Hierarchyにドラッグアンドドロップ

Slide 30

Slide 30 text

skeeを非アクティブに  UnityのHierarch Viewのskeeを選択し、Inspector Viewを表示  Inspector Viewのskeeのチェックを外して非アクティブに

Slide 31

Slide 31 text

ApplicationManagerスクリプトの作成  UnityのProject ViewのAssetsのScriptsフォルダを選択し、右クリック でメニューからCreate > C# Scriptを選択  スクリプトの名前をApplicationManagerとする

Slide 32

Slide 32 text

書籍のコードの書き換え コード全体 https://gist.github.com/ZuQ9Nn/c5a217ceb9a237e81b164a555 5aa0009 修正前 public void OnSpeechKeywordRecognized(SpeechKeywordRecognizedEventD ata eventData) ↓ 修正後 public void OnSpeechKeywordRecognized(SpeechEventData eventData)

Slide 33

Slide 33 text

HierarchyのAppManagerに ApplicationManagerスクリプトをアタッチ  UnityのHierarcy View のAppManagerを選択、Inspector Viewを 表示  UnityのProject ViewのScirpt > ApplicationManagerを Appmanagerのinspector Viewにドラッグアンドドロップしてアタッチ

Slide 34

Slide 34 text

AppManagerのプロパティをセット  UnityのInspector ViewのAppManagerのSound Layer1~ Sound Layer4にHierarchのLayer1~Layer4を Skeeballmachineにskeeをドラッグアンドドロップしてセット

Slide 35

Slide 35 text

AppManagerにSpeech Input Souceをア タッチ(書籍と手順が異なります注意)  UnityのInspector ViewのAppManagerのAdd Componetを選択  Speech Input Souceを選択してアタッチ  Insptector ViewのSpeech Input Souceの+ボタンをクリック  keyword ” に done”を入力

Slide 36

Slide 36 text

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”を入力

Slide 37

Slide 37 text

AppManagerにSpeech Input Handlerを アタッチ(書籍と手順が異なります注意)

Slide 38

Slide 38 text

AppManagerにSpeech Input Handlerを アタッチ(書籍と手順が異なります注意)

Slide 39

Slide 39 text

書籍のGitHubから PlaceSkeeBallMachine.csをコピー  書籍のリポジトリChapter6からPlaceSkeeBallMachine.csをUnityの Project ViewのAssets > Scriptsにドラッグアンドドロップしてコピー

Slide 40

Slide 40 text

PlaceSkeeBallMachine.csの書き換え 修正前 public virtual void OnInputClicked(InputEventData eventData) ↓ 修正後 public virtual void OnInputClicked(InputClickedEventData eventData)

Slide 41

Slide 41 text

PlaceSkeeBallMachine.csをアタッチ  UnityのHierarch Viewのskeeを展開し、TaptoPlaceColliderをク リックInspector Viewを表示  UnityのProject ViewのAssets > Scriptsの PlaceSkeeBallMachine.csをTaptoPlaceColliderのInspector Viewにドラッグアンドドロップしてアタッチ

Slide 42

Slide 42 text

PlaceSkeeBallMachineのInspector設定  UnityのHierarch Viewのskeeを展開し、TaptoPlaceColliderをク リックInspector Viewを表示  PlaceSkeeBallMacineのPlace Palent On Tapのチェックをonに  PlaceSkeeBallMacineのPlant Game ObjectにUnityのHierarch Viewのskeeをドラッグアンドドロップしてセット

Slide 43

Slide 43 text

書籍のアプリの完成  Unityの実行ボタンを押してエラーが無ければ、書籍のアプリの完成  UnityのGame ViewでShiftを押しながらクリックすると skeeballmachineが表示される

Slide 44

Slide 44 text

ビルドするときの設定  Mixed Reality Toolkit UnityをインポートしているとUnityのメニューに Mixed Reality Tookitが表示されているので、そこをクリック  Configure >Apply UWP Capability Settingsを選択  Apply UWP Capablity SettingsのSpatial Perceptionをチェックし Apply

Slide 45

Slide 45 text

ビルドするときの設定  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が選択されていること を確認

Slide 46

Slide 46 text

ビルドするときの設定

Slide 47

Slide 47 text

実機で動かすとこうなります https://youtu.be/ZZ_Kfpzzqg0

Slide 48

Slide 48 text

Spatial Mappingのまとめ  HoloLesnは周囲の空間をスキャンしデータとして保持している  HoloLensの保持している空間データを扱うのがSpatialMapping  開発者はUnityのAPIを利用し空間のスキャンを行ったり、空間情報を 利用することができる  Mixed RealityToolkit Unityを利用すること で、SpatialMapping.prefabをUnityのHierarcyに置くだけで大丈夫  よりコードで細かく制御したい場合はMixed Reality Toolkit Unityの SpatialMappingManger.csを使うと良い  実機にビルドするときはCapabilityとXR Settingsを忘れずに

Slide 49

Slide 49 text

次回 日時 2018/03/28(水) 18:30~21:00 場所 株式会社アカツキ 東京都品川区上大崎2-13-30 担当 イワケンさん(@iwaken_unity) 内容 Chapter7 World Anchor