以下の内容はhttps://redhologerbera.hatenablog.com/entry/2020/03/13/110000より取得しました。


空間認識のプロファイルの作成 HoloLens2アプリのチュートリアルその⑤

Microsoftのドキュメント[Microsoft Docs]ではHoloLens 2の入門チュートリアルが公開されています。

ツールのインストールから詳しく掲載されているためこちらを今回勉強しながらHoloLens 2が手元にないためHoloLens 1stで動かしてみます。

 チュートリアルは以下で公開されています。

docs.microsoft.com

前回の記事はこちら

redhologerbera.hatenablog.com

 前回はMixedRealityデバイスに合わせプロファイルを編集していました。

 MixedRealityToolkitのプロファイルは最初に用意されているデフォルトのプロファイルをそのまま編集することはできず、一度クローン(複製)することによって編集が可能になります。

 前回の続きから行います。

●4.空間認識メッシュオブザーバープロファイルを複製する

 [MixeRealityToolkit]オブジェクトの[Inspector]の[MixedRealityToolkit]から[Spatial Awareness]タブを選択します。

 [DefaultMixedRealitySpatialAwarenessSystemProfile]の右側の[Clone]を選択しプロファイルを複製します。

 複製ウィンドウで[Clone]を選択します。

f:id:Holomoto-Sumire:20200313092102j:plain

 冒頭でも書きましたが、デフォルトのProfileは編集できないため複製することによってさらに細かい編集が可能になります。

 これで[Windows MixedReality Spatial Mesh Obserer]が展開・編集可能になります。

 しかしWindows MixedReality Spatial Mesh Obserer内部もProfileによって管理されているためこのままでは編集できないため

 Windows MixedReality Spatial Mesh Obsererを展開し、[Clone]をクリックして プロファイルの複製 ウィンドウを開きます。

 複製プロファイル ウィンドウで、[Clone]ボタンをクリックして、 [DefaultMixedRealitySpatialAwarenessMeshObserverProfile]の編集可能なコピーを作成します。

f:id:Holomoto-Sumire:20200313093010j:plain

複製することで自動的にProfileが割り当てられます。

●5. 空間メッシュの可視性を変更する

 [SpatialAwareness]によってデバイスで周囲の床や壁などの空間情報を認識できるようになりました。

  空間メッシュ(SpatialMesh)は認識した床や壁に合わせてMeshを貼りHoloLens内で現実に合わせた仮想の部屋を生成する機能です。

 空間メッシュを用いることでHoloLens特有のオブジェクトを現実の床や壁に対して配置するといったMixedRealityの対話を行っています。

   [Spatial Mesh Observer Settings]の[DisplaySettings]で[Display Option]を [Occlusion] に変更します。これにより、まだ機能している間にSpatialMappingの空間メッシュが非表示になります。

f:id:Holomoto-Sumire:20200313093853j:plain

 これは[Visible Material]、[Occlusion Material]に設定されたそれぞれのマテリアルが対応します。

f:id:Holomoto-Sumire:20200313094258j:plain

 このマテリアルや[Display Option]はスクリプトからも実行中に編集することができます。

Visible Material

f:id:Holomoto-Sumire:20200313100239j:plain

MixedRealityToolkitによって提供されているShaderが使用されています。

このマテリアルはメッシュの淵のみが描画されます。ユーザーにとってはこのマテリアルによってSpatialAwarenessの認識の状況やHoloLensを初めて体験する人にHoloLensのSpatialAwarenessに関して効果的に表すことができます。

 [Wire Thickness]によって淵の太さを変えることもできます。

Occlusion Material

f:id:Holomoto-Sumire:20200313101237j:plain

こちらもMixedRealityToolkitによって提供されているShaderが用いられています。

 このマテリアルは透明なマテリアルで、ユーザーにとってはSpatialMeshを見ることができない状態になります。

 Wireframeのマテリアルと同じくSpatialMeshは生成されるのでより現実空間を利用した自然な体験を行えます。

 今回でProfileの設定は終了しました。

 Profile構成は以下のMRTKのドキュメントでまとめられています。

microsoft.github.io

 

●おまけ

 実行中にスクリプトで[Display Option]やそのSpatialMesh Materialを変更するには以下のスクリプトを使用します。

microsoft.github.io

サンプル

using UnityEngine;
using Microsoft.MixedReality.Toolkit.SpatialAwareness;
using Microsoft.MixedReality.Toolkit;

 public class ChangeSpatialMaterial : MonoBehaviour{

   // new material;
   public Material spatialmaterial;
    /// <summary>
    ///  Change MRTKSpatialAwareness VisibleMaterial.
    /// </summary>
    public void OnSpatialShaerCange1st()
    {
        // Cast the Spatial Awareness system to IMixedRealityDataProviderAccess to get an Observer
        var access = CoreServices.SpatialAwarenessSystem as IMixedRealityDataProviderAccess;
        // Get the first Mesh Observer available, generally we have only one registered
        var observer = access.GetDataProvider<IMixedRealitySpatialAwarenessMeshObserver>(); 
        // Change the VisivleMaterial to new material.
            observer.VisibleMaterial = spatialmaterial;
    }
}

 チュートリアル終了後アプリを改造しますのでその際に詳しく解説します。




以上の内容はhttps://redhologerbera.hatenablog.com/entry/2020/03/13/110000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14