パルス シェーダー — MRTK2
パルス シェーダーを使用すると、表面の再構成、多関節ハンド メッシュ、またはその他のメッシュ上で視覚的なパルス効果をアニメーション化できます。
シェーダーと素材
次の素材では、SR_Triangles シェーダーが使用されます。 塗りつぶしの色、線の色、パルスの色など、さまざまなオプションを構成できます。
- MRTK_Pulse_SpatialMeshBlue.mat
- MRTK_Pulse_SpatialMeshPurple.mat
- MRTK_Pulse_ArticulatedHandMeshBlue.mat
- MRTK_Pulse_ArticulatedHandMeshPurple.mat
必須コンポーネント
空間メッシュの例では、MRTK_Pulse_SpatialMeshBlue.mat または MRTK_Pulse_SpatialMeshPurple.mat が、[MixedRealityToolkit オブジェクト] -> [空間認識プロファイル] -> [表示の設定] -> [表示される素材] の下に割り当てられている必要があります。
ハンド メッシュの例では、MRTK_Pulse_ArticulatedHandMeshBlue.mat または MRTK_Pulse_ArticulatedHandMeshPurple.mat が ArticulatedHandMesh.prefab 内で割り当てられている必要があります。それ自体は、[MRTK 設定] -> [入力] -> [ハンド トラッキング] -> [ハンド メッシュ プレハブ] で割り当てられている必要があります。
しくみ
ハンド メッシュ シェーダーでは、ハンド メッシュに沿ってパルスをマップし、手首をフェード アウトするために UV が使用されます。 表面の再構成シェーダーでは、パルスをマップするために頂点の位置が使用されます。
空間メッシュの例 - PulseShaderSpatialMeshExample.unity
HoloLens 2 のシェル エクスペリエンスと同様に、ハンド レイでポイントおよびエアタップして、空間メッシュ上にパルス効果を生成することができます。 この例のシーンには、Unity のゲーム モード用のテスト空間メッシュ データである ExampleSpatialMesh オブジェクトが含まれています。 このオブジェクトは、デバイス上で無効にされ、非表示になります。
PulseOnSelect
が true の場合は、PulseShaderSpatialMeshHandler.cs スクリプトによって、ヒット ポイント位置の空間メッシュ上にパルス効果が生成されます。 アニメーションを繰り返す場合は、素材自体で Auto Pulse
プロパティを true に設定することもできます。 このシーン例では、このスクリプトは PulseShaderSpatialMeshParent prefab にアタッチされています。 このプレハブは、[空間認識プロファイル] の下で Runtime Spatial Mesh Prefab プロパティを通して参照されます。 実行時には、PulseShaderSpatialMeshParent prefab がインスタンス化され、空間メッシュ階層に追加されます (デバイス上でのみ。エディターでこの動作を確認することはできません)。
ハンド メッシュの例 - PulseShaderHandMeshExample.unity
このシーン例では、パルス シェーダーを使用したハンド メッシュの視覚化を示します。 HoloLens デバイスによってハンドが検出されると、パルス アニメーションが 1 回トリガーされます。 この視覚的なフィードバックにより、ユーザーの対話式操作の信頼度が向上します。
PulseShaderHandMeshHandler.cs スクリプトにより、割り当てられた素材上でパルス効果が生成されます。 既定では、'Pulse On Hand Detected' はオンになっています。