こんにちは、ナレコム杉本です。
今回はMicrosoft公式にあるチュートリアルHolograms 230を進めていきたいと思います。
Holograms 230では次の方法を習得します。
第一章 スキャン 環境スキャンしHoloLensから開発コンピューターにデータを転送
第二章 視覚化 シェーダーについて調べ、空間の視覚化にシェーダーを使う
第三章 処理 メッシュ処理を使って室内のメッシュをシンプルな平面に分割する
第四章 配置 どこにホログラムを配置できるかについてのフィードバックを提供
第五章 オクルージョン ホログラムが現実世界の物体の背後に隠れている場合も透明効果で可視化
準備
まずはこちらのファイルをダウンロードしてください。
ダウンロードしたファイルをすべて展開しておきます。
Unityを起動し新しいプロジェクトを作成します。
①名前をPlanetariumに変更します。
②[3D]トグルが選択されていることを確認します。
③[Create Project]をクリックします。
・Unityが起動したら[Edit]->[Project Setting]->[Player]の順に移動します。
①[Other Settings]を展開します。
②[Virtual Reality Supported]オプションのチェックボックスをオンにします。
③[Windows Holographic] が [Virtual Reality SDKs]の一覧に表示されることを確認します。
表示されない場合は、一覧下部にある [+] を選んで、[Windows Holographic] を選びます。
[Publishing Settings]を展開し、以下のチェックボックスをオンにします。
・InternetClientServer
・PrivateNetworkClientServer
・Microphone
・SpatialPerception
・[Assets]->[Import Package]->[Custom Package]の順に移動します。
・HolographicAcademy-Holograms-230-SpatialMapping/Startingフォルダーに移動しま
す。
・Planetarium.unitypackageをクリックし[Open]をクリックします。
・[Import Unity Package]ウィンドウが表示されたら、[Import]をクリックします。
①[Hierarchy]パネルで、[Main Camera]を削除します。
②[Project]パネルでHoloToolkit-SpatialMapping-230 ->Utilities ->Prefabsの順に移
動し、Main Cameraオブジェクトを探します。
③[Main Camera]をドラッグし、[Hierarchy]パネルにドロップします。
①[Hierarchy]パネルで Directional Lightオブジェクトを削除します。
②[Project]パネルでHologramsフォルダーのCursor オブジェクトに移動します。
③[Cursor]をドラッグして、[Hierarchy]にドロップします。
①[Hierarchy]パネルでCursorオブジェクトを選びます。
②[Inspector]パネルで、[Layer]ドロップダウンをクリックして[Edit Layers]を選びます。
③[User Layer 31]の名前を「SpatialMapping」にします。
・[File]->[Save Scene As]の順に選び、新しいシーンを保存します。
①新しいフォルダーを作成し、フォルダーに「Scenes」という名前を付けます。
②ファイルに「Planetarium」という名前を付け、Scenesフォルダーに保存します。
第一章 スキャン
目標
・SurfaceObserverの詳細と、SurfaceObserverの設定がエクスペリエンスとパフォーマンスに与える影響を学ぶ。
・室内のスキャンエクスペリエンスを作成し室内のメッシュを収集する。
手順
・[Project]パネルで HoloToolkit-SpatialMapping-230 ->SpatialMapping ->Prefabsの順に
移動し、SpatialMappingを探します。
・SpatialMappingをドラッグし、[Hierarchy]パネルにドロップします。
ビルドと配置 パート1
・[File]->[Build Settings]の順に選びます。
①[Add Open Scenes]をクリックして、ビルドにPlanetariumシーンを追加します。
②[Platform]の一覧で[Windows Store]を選び、[Switch Platform]をクリックします。
③[SDK]を[Universal 10] に[UWP Build Type]を[D3D]に[Target device]を[HoloLens]
に設定します。
④[Unity C# Projects]チェックボックスをオンにします。
⑤[Build]をクリックします。
①新しいフォルダーを作成します
②フォルダーに「App」という名前を付けます。
③フォルダーの選択をクリックします。
Unity によるビルドが終了すると、エクスプローラーウィンドウが表示されます。
・Appフォルダ内のPlanetarium.sln をダブルクリックしてVisual Studioで読み込みます。
①Visual Studio上部のツールバーを使って、構成を[Release]に変更します。
②プラットフォームを[x86]に変更します。
③[ローカル コンピューター]の横にある矢印をクリックして、[リモート コンピューター]を選
びます。
・[アドレス] フィールドにデバイスのIPアドレスを入力し、[認証モード]を[ユニバーサル]に変更します。
ビルドと配置 パート2
ここで、空間マッピングがパフォーマンスに与える影響を調べます。
・Unity で、[Window]->[Profiler]の順に選びます。
・[Add Profiler]->[GPU] の順にクリックします。
①[Active Profiler]->[
②HoloLensのIP アドレスを入力します。
③[Connect]をクリックします。
・GPU がフレームのレンダリングにかかるミリ秒数を観察します。
・デバイスでのアプリの実行を停止します。
・Visual Studio に戻り、SpatialMappingObserver.cs を開きます。
・Awake() 関数を探して、次のコード行を追加します。
TrianglesPerCubicMeter = 1200;
・デバイスにプロジェクトを再配置し、プロファイラーに再接続します。フレームのレンダリン
グにかかるミリ秒数の変化を観察します。
・デバイスでのアプリの実行を停止します。
保存と Unity での読み込み
最後に、室内のメッシュを保存して、Unity に読み込みます。
・Visual Studio に戻り、前のセクションで Awake() 関数に追加した
TrianglesPerCubicMeter 行を削除します。
・デバイスにプロジェクトを再配置します。これで、1 立方メートルあたり 500 個の三角形が
含まれる状態で実行されるようになります。
・ブラウザーを開いて HoloLens の IP アドレスを入力し、[Windows Device Portal]に移
動します。
①左側のパネルで [3D View]オプションを選びます。
②[Surface reconstruction]で、[Update]を選びます。
③室内のスキャン結果を保存するには、[Save]を押します。
・Downloadsフォルダーを開いて、室内のモデ SRMesh.objに移動します。
・SRMesh.objをUnityプロジェクトのAssetsフォルダーにコピーします。
①Unityで、[Hierarchy]パネルのSpatialMappingオブジェクトを選びます。
②[Object Surface Observer (Script)] コンポーネントに移動し[Room Model] プロパティの横にある円をクリックします。
③SpatialMappingオブジェクトに移動して選び、ウィンドウを閉じます。
SpatialMapping コンポーネントによって保存済みの室内モデルのメッシュが読み込まれます。これで、Unity でこのメッシュを使用できるようになります。
・[Scene] (シーン) ビューに切り替えて、ワイヤーフレーム シェーダーが付いた状態で表示
される室内モデル全体を確認します。
・もう一度 [Play] (プレイ) をクリックしてプレビュー モードを終了します。