次の方法で共有


パルス シェーダー — MRTK2

MRTK_SpatialMesh_Pulse

パルス シェーダーを使用して、サーフェスの再構築、多関節ハンド メッシュ、またはその他のメッシュに対する視覚的なパルス効果をアニメーション化します。

シェーダーとマテリアル

次のマテリアルでは 、シェーダー SR_Triangles 使用されます。 塗りつぶしの色、線の色、パルスの色など、さまざまなオプションを構成できます。

  • MRTK_Pulse_SpatialMeshBlue.mat
  • MRTK_Pulse_SpatialMeshPurple.mat
  • MRTK_Pulse_ArticulatedHandMeshBlue.mat
  • MRTK_Pulse_ArticulatedHandMeshPurple.mat

前提条件

空間メッシュの例では、MixedRealityToolkit オブジェクト -> Spatial Awareness Profile -> Display Settings -> Visible Material の下に、MRTK_Pulse_SpatialMeshBlue.mat または MRTK_Pulse_SpatialMeshPurple.mat が割り当てられていることを確認します。

ハンド メッシュの例では、articulatedHandMesh.prefab で MRTK_Pulse_ArticulatedHandMeshBlue.mat または MRTK_Pulse_ArticulatedHandMeshPurple.mat が割り当てられていることを確認します。これは、それ自体が MRTK 設定 -> Input -> Hand Tracking -> Hand Mesh Prefab で割り当てる必要があります。

メカニズム

ハンド メッシュ シェーダーでは、UV を使用してハンド メッシュに沿ってパルスをマップし、手首をフェードアウトします。 サーフェス再構築シェーダーは、頂点位置を使用してパルスをマップします。

空間メッシュの例 - PulseShaderSpatialMeshExample.unity

HoloLens 2のシェル エクスペリエンスと同様に、ハンド レイをポイントしてエアタップすると、空間メッシュに脈動効果を生成できます。 サンプル シーンには、Unityのゲーム モードのテスト空間メッシュ データである ExampleSpatialMesh オブジェクトが含まれています。 このオブジェクトは無効になり、デバイスでは非表示になります。

PulseShaderSpatialMeshHandler.cs スクリプトは、 PulseOnSelect が true の場合、ヒット ポイント位置の空間メッシュにパルス効果を生成します。 Auto Pulse プロパティは、繰り返しアニメーションのマテリアル自体で true に設定することもできます。 サンプル シーンでは、このスクリプトは PulseShaderSpatialMeshParent プレハブにアタッチされています。 このプレハブは、ランタイム空間メッシュ プレハブ プロパティを介して空間認識プロファイルで参照されます。 実行時に、PulseShaderSpatialMeshParent プレハブがインスタンス化され、空間メッシュ階層に追加されます (デバイスでのみ、この動作はエディターで観察できません)。

ハンド メッシュの例 - PulseShaderHandMeshExample.unity

このシーンの例では、パルス シェーダーを使用したハンド メッシュの視覚化を示します。 HoloLens デバイスによって手が検出されると、パルス アニメーションが 1 回トリガーされます。 この視覚的なフィードバックは、ユーザーの対話の信頼度を高めることができます。

PulseShaderHandMeshHandler.cs スクリプトは、割り当てられた材料にパルス効果を生成します。 既定では、[パルスオンハンド検出] がオンになっています。