Freigeben über


Pulse-Shader – MRTK2

MRTK_SpatialMesh_Pulse

Verwenden Sie den Puls-Shader, um einen visuellen Impulseffekt über die Oberflächenrekonstruktion, das Handgeflecht oder andere Gitter zu animieren.

Shader und Material

Die folgenden Materialien verwenden SR_Triangles Shader. Sie können verschiedene Optionen wie Füllfarbe, Linienfarbe und Pulsfarbe konfigurieren.

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

Voraussetzungen

Stellen Sie für das Räumliche Gitterbeispiel sicher, dass MRTK_Pulse_SpatialMeshBlue.mat oder MRTK_Pulse_SpatialMeshPurple.mat unter MixedRealityToolkit-Objekt -> Spatial Awareness Profile -> Display Settings -> Visible Material zugewiesen ist.

Stellen Sie für das Handgitterbeispiel sicher, dass MRTK_Pulse_ArticulatedHandMeshBlue.mat oder MRTK_Pulse_ArticulatedHandMeshPurple.mat in ArticulatedHandMesh.prefab zugewiesen ist, die selbst in DEN MRTK-Einstellungen –> Eingabe –> Handnachverfolgung –> Handgitter-Prefab zugewiesen werden sollte.

Funktionsweise

Der Handgitter-Shader verwendet UVs, um den Puls entlang des Handgitters abzubilden und das Handgelenk auszublenden. Der Oberflächenrekonstruktions-Shader verwendet die Vertexpositionen, um den Puls zuzuordnen.

Beispiel für räumliches Gitter – PulseShaderSpatialMeshExample.unity

Ähnlich wie HoloLens 2 Schalenerfahrung können Sie mit dem Handstrahl zeigen und mit der Luft tippen, um einen pulsierenden Effekt auf das räumliche Gitter zu erzeugen. Die Beispielszene enthält das ExampleSpatialMesh-Objekt, bei dem es sich um räumliche Testgitterdaten für den Unity-Spielmodus handelt. Dieses Objekt wird auf dem Gerät deaktiviert und ausgeblendet.

Das Skript PulseShaderSpatialMeshHandler.cs generiert den Impulseffekt auf das räumliche Gitter an der Trefferpunktposition, wenn PulseOnSelect true ist. Die Auto Pulse Eigenschaft kann auch im Material selbst für eine sich wiederholende Animation auf true festgelegt werden. In der Beispielszene ist dieses Skript an das PulseShaderSpatialMeshParent-Prefab angefügt. Auf dieses Prefab wird unter der Eigenschaft Spatial Awareness Profile through Runtime Spatial Mesh Prefab verwiesen. Während der Laufzeit wird das PulseShaderSpatialMeshParent-Prefab und instanziiert und der räumlichen Gitterhierarchie hinzugefügt (nur auf dem Gerät kann dieses Verhalten nicht im Editor beobachtet werden).

Beispiel für Handgitter – PulseShaderHandMeshExample.unity

In dieser Beispielszene wird die Handgittervisualisierung mithilfe eines Pulse-Shaders veranschaulicht. Wenn eine Hand vom HoloLens-Gerät erkannt wird, wird die Impulsanimation einmal ausgelöst. Dieses visuelle Feedback kann die Interaktionssicherheit des Benutzers erhöhen.

Das Skript PulseShaderHandMeshHandler.cs generiert einen Impulseffekt auf das zugewiesene Material. Standardmäßig ist "Pulse On Hand Detected" aktiviert.