Sdílet prostřednictvím


Bezkontaktní světlo — MRTK2

A ProximityLight je Fluent Design System paradigma, které napodobuje "přechodové inverzní bodové světlo", které se nachází v blízkosti povrchu objektu. Často se používá pro blízké interakce, aplikace může řídit vlastnosti bezkontaktního světla prostřednictvím ProximityLight komponenty.

Pro materiál, který ProximityLight má být ovlivněn Mixed Reality Toolkit / Standardní shader musí být použit a musí být povolena vlastnost Bezkontaktní světlo.

Poznámka

Ve výchozím nastavení jsou podporovány až dvě ProximityLights .

Příklady

Většina scén v MRTK využívá ProximityLight. Nejběžnější případ použití najdete na webu MRTK/SDK/Features/UX/Prefabs/Cursors/FingerCursor.prefab.

Rozšířené využití

Ve výchozím nastavení můžou materiál najednou svítit jenom dvaProximityLights. Pokud váš projekt vyžaduje k ovlivnění materiálu více než dva ProximityLights, ukázkový kód níže ukazuje, jak toho dosáhnout.

Poznámka

ProximityLights Mnoho osvětlení materiálu zvýší pokyny pro pixel shader a ovlivní výkon. Profilujte tyto změny v rámci projektu.

Jak zvýšit počet dostupných ProximityLights položek ze dvou na čtyři.

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

#define PROXIMITY_LIGHT_COUNT 2

// to:

#define PROXIMITY_LIGHT_COUNT 4

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

private const int proximityLightCount = 2;

// to:

private const int proximityLightCount = 4;

Poznámka

Pokud Unity zaznamená upozornění podobné následujícímu, musíte Unity restartovat, aby se změny projevily.

Property (_ProximityLightData) exceeds previous array size (24 vs 12). Cap to previous size.

Viz také