次の方法で共有


パルス シェーダー — MRTK2

MRTK_SpatialMesh_Pulse

パルス シェーダーを使用すると、表面の再構成、多関節ハンド メッシュ、またはその他のメッシュ上で視覚的なパルス効果をアニメーション化できます。

シェーダーと素材

次の素材では、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' はオンになっています。