Schweblicht — MRTK2

Ein HoverLight ist ein Paradigma des Fluent Design System, das ein Punktlicht imitiert, das in der Nähe der Oberfläche eines Objekts schwebt. Es wird oftmals für Ferninteraktionen verwendet, und die Anwendung kann die Eigenschaften eines Schwebelichts mithilfe der HoverLight-Komponente steuern.

Damit ein Material von einem HoverLight beeinflusst werden kann, muss der Mixed Reality Toolkit/Standard-Shader verwendet werden, und die Hover Light-Eigenschaft muss aktiviert sein.

Hinweis

Der MRTK/Standard-Shader unterstützt standardmäßig bis zu zwei HoverLights , wird jedoch auf vier und dann zehn skaliert, wenn der Szene weitere Leuchten hinzugefügt werden.

Beispiele

Die meisten Szenen in MRTK verwenden ein HoverLight. Den häufigsten Anwendungsfall finden Sie im MRTK/SDK/Features/UX/Prefabs/Cursors/DefaultCursor.prefab

Die HoverLightExamples-Szene veranschaulicht auch die Verwendung von HoverLight Verhaltensweisen und finden Sie unter: MRTK/Examples/Demos/StandardShader/Scenes/

Erweiterte Nutzung

Nur zehn HoverLights können ein Material gleichzeitig beleuchten. Wenn ihr Projekt mehr als zehn HoverLights benötigt, um ein Material zu beeinflussen, zeigt der folgende Beispielcode, wie dies erreicht werden kann.

Hinweis

Wenn viele HoverLightsMaterialien beleuchten, erhöhen die Pixel-Shaderanweisungen und wirken sich auf die Leistung aus. Erstellen Sie ein Profil für diese Änderungen in Ihrem Projekt.

Wie die Anzahl der verfügbaren von zehn auf zwölf erhöht werden kann HoverLights .

// 1) Within MRTK/Core/StandardAssets/Shaders/MixedRealityStandard.shader change:

#if defined(_HOVER_LIGHT_HIGH)
#define HOVER_LIGHT_COUNT 10

// to:

#if defined(_HOVER_LIGHT_HIGH)
#define HOVER_LIGHT_COUNT 12

// 2) Within MRTK/Core/Utilities/StandardShader/HoverLight.cs change:

private const int hoverLightCountHigh = 10;

// to:

private const int hoverLightCountHigh = 12;

Hinweis

Wenn Unity eine Warnung wie unten protokolliert, müssen Sie Unity neu starten, damit Ihre Änderungen wirksam werden.

Property (_HoverLightData) exceeds previous array size (24 vs 20). Cap to previous >size.

Weitere Informationen