2018/03/09 第五回HoloLens読書会

79b9a8029917899ff5f083d6ba366d77?s=47 ZuQ9Nn
March 09, 2018
3.9k

2018/03/09 第五回HoloLens読書会

2018/03/09 第五回HoloLens読書会
発表資料

79b9a8029917899ff5f083d6ba366d77?s=128

ZuQ9Nn

March 09, 2018
Tweet

Transcript

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

  2. 自己紹介  ZuQ9Nn(ずきゅ~ん)  普段は会社員で、Objective-C、iOSのツール系の開発  Unity、HoloLensの実務経験等はありません。  あくまで趣味開発のレベル 

    一応ブログでもHoloLensの技術記事があります  Unity認定合格しました!
  3. 今回扱う内容  Spatial Mapping  マイクロソフトの高橋忍さんが、スパチャルマッピングと読んでいたので読 み方はそちらが正しい?  AcademyではHolograms 230(https://developer.microsoft.com/en-us/windows/mixed-

    reality/holograms_230)  ビデオ内ではスペーシャルマッピングと言っているように聞こえます。  今回はスペーシャルマッピングで統一します。
  4. 今回の流れ  Chapter5のプロジェクトに追加しますので、まずは、Chapter5の状況 を再現させる  Spatial Mappingまでのところを書籍の手順にそって(p174~p186)  Spatial Mappingを詳しく説明

     書籍の残りを手順にそってアプリを完成(p186~p206)  実機で動かすための設定、注意事項  Spatial Mappingのまとめ
  5. 今回の環境 Unity 2017.3.f1(64bit) Visual Studio 2017 15.5.6 Mixed Reality Toolkit

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

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

  8. 書籍のGitHubからChapter5をインポート  UnityのmenuからAssets > Import package > Custom packageを選択 

    書籍のリポジトリChapter5からChapter5.unitypackageを選択  ScenesのChapt5.unityとSoundsフォルダのみチェックしてImport
  9. Mixed Reality Toolkit Unityのダウンロード  https://github.com/Microsoft/MixedRealityToolkit-U nit releases の をクリック

     HoloToolkit-Unity-v1.2017.2.0.unitypackageをクリックしてダウ ンロード
  10. Mixed Reality Toolkit Unityをインポート  UnityのmenuからAssets > Import package >

    Custom packageを選択  Holotoolkit-Unity-v1.2017.2.0.unitypackageを選択してすべてイ ンポート
  11. Chapter5のSceneを選択  UnityのProject View > ScenesのChapter5を選択  HierarchyにMain Camera、Directional Light、Layer1~Layer4

    が存在していることを確認  この状態でUnityを実行し、エラーが無ければ、Chapter5は完成
  12. Scriptsフォルダの作成  UnityのProject View のAssetsフォルダを右クリック  メニューからCreate > Folderを選択 

    Floder名をScriptsとする
  13. InputManager、HoloLensCameraの PrefabをHierarchyに  UnityのProject View のAssets > HoloToolkit > Input

    > Prefabs の中のHoloLesCamera、InputManagerを選択し、Hierarchyにド ラッグアンドドロップ
  14. MainCameraの削除  UnityのHierarchy ViewのMain Cameraを選択し、右クリックでメ ニューを表示、Deleteを選択してMain Cameraを削除

  15. Basic CursorのPrefabをHierarchyに  UnityのProject View のAssets > HoloToolkit > Input

    > Cursor > Prefabsの中のBasic Cursorを選択し、Hierarchyにドラッグアンド ドロップ
  16. 書籍のGitHubから skeeballmachine.unitypackageをインポート  UnityのmenuからAssets > Import package > Custom package

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

    を選択  書籍のリポジトリChapter6からSpatialMapping.unitypackageを選択 全てインポート
  18. SpatialMappingのPrefabをHierarchyに  UnityのProject View のAssets > HoloToolkit > SpatialMapping >

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

    Modelに Project ViewのAssets > Prefabs > SpatialMapping.objをドラッ グアンドドロップでセット
  20. Unityを実行  Unityを実行し、Game ViewにSpatial Mappingのワイヤーフレームが 表示されていればOK  ここでSpatial Mappingについて詳しく説明

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

    一定の区間ごとに 空間の情報スキャン 保存する Surface Surface 一定の区間ごとに 空間の情報スキャン 保存する Surface
  22. Spatial Mappingとは  UnityのAPIを通じて空間のスキャンを行ったり、空間情報にアクセスできる  実際にはMixed Reality Toolkit Unityを利用することで簡単に利用すること ができる

     SpatialMapping.prefabをUnityのHierarcyを置くだけでOK Surface Surface API 開発者 Surface Mixed Reality Toolkity Unity
  23. SpatialMapping.prefabについて  下記のスクリプトがprefabにアタッチされている  SpatialMappingObserver.cs  SpatialMappingManager.cs  ObjectSurfaceObserver.cs

  24. ObjectSurfaceObserver.cs  Unity Editor上であらかじめ用意されている部屋のモデルにメッシュを表 示させる Inspector Viewから利用できるプロパティ Room Model 部屋のモデルを指定するとUnity

    Editor上でメッ シュ化された部屋を確認できる Simulated Update Period In Sconds 0以上の場合は空間のSurface情報を更新 (SpatialUnderstandingで利用)
  25. 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 アプリで利用する空間領域の固を設定
  26. SpatialMappingManager.cs  SpatialMappingObserver、SpatialMappingSourceを管理する  開発者はSpatialMappingManagerを使って、空間のスキャン開始、 停止を制御することができる。  空間情報をSpatialMappingSourceから取り出せる Inspctor Viewから利用できるプロパティ

    Physics Layer 生成されれたメッシュのレイヤー番号 Surface Material メッシュに割り当てるmaterial Auto Start Observer 空間のスキャンを自動開始するかのチェック Draw Visual Mesh メッシュを表示させるかのチェック Cast Shadows メッシュの影をキャストするかのチェック
  27. 一旦休憩  SpatialMappingについての詳細は以上  ここで一旦で休憩、書籍の残りを手順に従ってアプリを完成

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

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

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

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

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

    ↓ 修正後 public void OnSpeechKeywordRecognized(SpeechEventData eventData)
  33. HierarchyのAppManagerに ApplicationManagerスクリプトをアタッチ  UnityのHierarcy View のAppManagerを選択、Inspector Viewを 表示  UnityのProject

    ViewのScirpt > ApplicationManagerを Appmanagerのinspector Viewにドラッグアンドドロップしてアタッチ
  34. AppManagerのプロパティをセット  UnityのInspector ViewのAppManagerのSound Layer1~ Sound Layer4にHierarchのLayer1~Layer4を Skeeballmachineにskeeをドラッグアンドドロップしてセット

  35. AppManagerにSpeech Input Souceをア タッチ(書籍と手順が異なります注意)  UnityのInspector ViewのAppManagerのAdd Componetを選択  Speech

    Input Souceを選択してアタッチ  Insptector ViewのSpeech Input Souceの+ボタンをクリック  keyword ” に done”を入力
  36. 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”を入力
  37. AppManagerにSpeech Input Handlerを アタッチ(書籍と手順が異なります注意)

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

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

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

    virtual void OnInputClicked(InputClickedEventData eventData)
  41. PlaceSkeeBallMachine.csをアタッチ  UnityのHierarch Viewのskeeを展開し、TaptoPlaceColliderをク リックInspector Viewを表示  UnityのProject ViewのAssets >

    Scriptsの PlaceSkeeBallMachine.csをTaptoPlaceColliderのInspector Viewにドラッグアンドドロップしてアタッチ
  42. PlaceSkeeBallMachineのInspector設定  UnityのHierarch Viewのskeeを展開し、TaptoPlaceColliderをク リックInspector Viewを表示  PlaceSkeeBallMacineのPlace Palent On

    Tapのチェックをonに  PlaceSkeeBallMacineのPlant Game ObjectにUnityのHierarch Viewのskeeをドラッグアンドドロップしてセット
  43. 書籍のアプリの完成  Unityの実行ボタンを押してエラーが無ければ、書籍のアプリの完成  UnityのGame ViewでShiftを押しながらクリックすると skeeballmachineが表示される

  44. ビルドするときの設定  Mixed Reality Toolkit UnityをインポートしているとUnityのメニューに Mixed Reality Tookitが表示されているので、そこをクリック 

    Configure >Apply UWP Capability Settingsを選択  Apply UWP Capablity SettingsのSpatial Perceptionをチェックし Apply
  45. ビルドするときの設定  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が選択されていること を確認
  46. ビルドするときの設定

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

  48. Spatial Mappingのまとめ  HoloLesnは周囲の空間をスキャンしデータとして保持している  HoloLensの保持している空間データを扱うのがSpatialMapping  開発者はUnityのAPIを利用し空間のスキャンを行ったり、空間情報を 利用することができる 

    Mixed RealityToolkit Unityを利用すること で、SpatialMapping.prefabをUnityのHierarcyに置くだけで大丈夫  よりコードで細かく制御したい場合はMixed Reality Toolkit Unityの SpatialMappingManger.csを使うと良い  実機にビルドするときはCapabilityとXR Settingsを忘れずに
  49. 次回 日時 2018/03/28(水) 18:30~21:00 場所 株式会社アカツキ 東京都品川区上大崎2-13-30 担当 イワケンさん(@iwaken_unity) 内容

    Chapter7 World Anchor