本日は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が走るようになっています。
昨年の2019年12月MRTKv2.3でPulseShaderは追加されましたが、MixedRealityHomeのようなAirTapでの表現はMRTKでは提供されていませんでした。
〇PulseShaderExamples
MRTK ExamplesのExperimentalフォルダ内PulseSceneに新しくAirTapでSpatialMeshにパルスを行える機能が実装されました。
シーンではダミーでSpatialMeshが貼られており、AirTapのジェスチャーによってPulseが走ります。
これは[PointerHandler]コンポーネントの[OnPointerClicked()]によって[SurfacePulse.OnCliked()]が呼び出されています。
public void OnPointerClicked(MixedRealityPointerEventData eventData) { cancelPulse = true; SetLocalOrigin(eventData.Pointer.Result.Details.Point); PulseOnce(); }
ここではSetLocalOriginにポインターの座標が渡されPulseOnce()によってパルスが走ります。
〇HoloLens実機で確認
実機で確認するとAirTapを行うことでその場所を起点にパルスが走ることが確認できます。
〇筆者独自実装と比較
筆者は以前PulseShaderを用いて同様にある地点からパルスが走るように実装を行ったことがあります。
こちらの方法ではSR_TrianglesShaderに用意されている[PulseOrigin]の座標をスクリプトで与えることで同様に任意の座標を基準にパルスが走るようにしていました。
今回公式で実装された方法ではAirTapを検知する[PointerHandler]で[SurfacePulse]コンポーネントの[OnPointerClicked]メソッドが処理され。[PulseOrigin]が変更されるようになっていますのでほぼ同じアプローチと言えます。