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.