Lumière de pointage — MRTK2

Un HoverLight est un paradigme du Système Fluent Design qui imite une lumière ponctuelle pointant près de la surface d’un objet. Souvent utilisée pour les interactions à distance, l’application peut contrôler les propriétés d’une lumière de pointage via le composant HoverLight.

Pour qu’un matériau soit influencé par un HoverLight nuanceur Mixed Reality Toolkit/Standard doit être utilisé et la propriété Hover Light doit être activée.

Notes

Le nuanceur MRTK/Standard prend en charge jusqu’à deux HoverLights par défaut, mais sera mis à l’échelle pour prendre en charge quatre, puis dix à mesure que d’autres lumières sont ajoutées à la scène.

Exemples

La plupart des scènes dans MRTK utilisent un HoverLight. Le cas d’usage le plus courant se trouve sur MRTK/SDK/Features/UX/Prefabs/Cursors/DefaultCursor.prefab

La scène HoverLightExamples illustre également l’utilisation des HoverLight comportements et se trouve à l’adresse : MRTK/Examples/Demos/StandardShader/Scenes/

Utilisation avancée

HoverLights Dix seulement peuvent éclairer un matériau à la fois. Si votre projet nécessite plus de dix HoverLights pour influencer un matériau , l’exemple de code ci-dessous montre comment y parvenir.

Notes

Un grand nombre d’éléments HoverLights éclairent un matériau augmente les instructions du nuanceur de pixels et ont un impact sur les performances. Profilez ces changements dans votre projet.

Comment augmenter le nombre de disponibles HoverLights de dix à douze.

// 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;

Notes

Si Unity journalise un avertissement similaire à celui ci-dessous, vous devez redémarrer Unity pour que vos modifications prennent effet.

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

Voir aussi