夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MRTK v2.5で追加された新しいPulseShader

本日はMRTK調査枠です。

〇MRTKv2.5

先日よりMixedRealityToolkitはバージョン2.5がリリースされました。

MRTK2.5では新機能など変更点がいくつかありますが、ここでは新しいPulseShaderの表現に関してまとめていきます。

〇PulseShaderとは?

PulseShaderはHoloLensのSpatialAwareness(空間認識)でスキャンされ生成されたSpatialMesh(空間メッシュ)に対する表現の一つで、その名の通りPulse(波紋)が広がるように見える表現が行えます。

〇MRTKv2.5で追加されたPulseShader

 HoloLens 2のMixedRealityHome(アプリを起動していない状態)ではSpatialMeshをAirTapすることでAirTapした座標を中心にPulseが走るようになっています。

youtu.be

 昨年の2019年12月MRTKv2.3でPulseShaderは追加されましたが、MixedRealityHomeのようなAirTapでの表現はMRTKでは提供されていませんでした。

〇PulseShaderExamples

MRTK ExamplesのExperimentalフォルダ内PulseSceneに新しくAirTapでSpatialMeshにパルスを行える機能が実装されました。

f:id:Holomoto-Sumire:20201012194031g:plain

シーンではダミーでSpatialMeshが貼られており、AirTapのジェスチャーによってPulseが走ります。

これは[PointerHandler]コンポーネントの[OnPointerClicked()]によって[SurfacePulse.OnCliked()]が呼び出されています。

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

        public void OnPointerClicked(MixedRealityPointerEventData eventData)
        {
            cancelPulse = true;
            SetLocalOrigin(eventData.Pointer.Result.Details.Point);
            PulseOnce();
        }

ここではSetLocalOriginにポインターの座標が渡されPulseOnce()によってパルスが走ります。

〇HoloLens実機で確認

実機で確認するとAirTapを行うことでその場所を起点にパルスが走ることが確認できます。

youtu.be

〇筆者独自実装と比較

筆者は以前PulseShaderを用いて同様にある地点からパルスが走るように実装を行ったことがあります。

  redhologerbera.hatenablog.com

こちらの方法ではSR_TrianglesShaderに用意されている[PulseOrigin]の座標をスクリプトで与えることで同様に任意の座標を基準にパルスが走るようにしていました。

今回公式で実装された方法ではAirTapを検知する[PointerHandler]で[SurfacePulse]コンポーネントの[OnPointerClicked]メソッドが処理され。[PulseOrigin]が変更されるようになっていますのでほぼ同じアプローチと言えます。