Point de focus dans Unity

Espace de noms :UnityEngine.XR.WSA
Type : HolographicSettings

Utilisez le point de focus pour fournir à HoloLens un conseil sur la meilleure façon de stabiliser les hologrammes actuellement affichés.

Si vous souhaitez définir le point de focus dans Unity, il doit être défini chaque image à l’aide de HolographicSettings.SetFocusPointForFrame(). Lorsque le point de focus n’est pas défini pour une image, le plan de stabilisation par défaut est utilisé.

Notes

Par défaut, les nouveaux projets Unity ont l’option « Activer le partage de mémoire tampon de profondeur » définie. Avec cette option, une application Unity s’exécutant sur un casque de bureau immersif ou un HoloLens exécutant la mise à jour Windows 10 avril 2018 (RS4) ou ultérieure soumet votre mémoire tampon de profondeur à Windows pour optimiser automatiquement la stabilité de l’hologramme, sans que votre application spécifie un point de focus :

  • Sur un casque de bureau immersif, cela permet une reprojection basée sur la profondeur par pixel.
  • Sur un HoloLens exécutant la Windows 10 mise à jour d’avril 2018 ou ultérieure, cela analyse la mémoire tampon de profondeur pour choisir automatiquement un plan de stabilisation optimal.

L’une ou l’autre approche doit fournir une qualité d’image encore meilleure sans travail explicite de votre application pour sélectionner un point de focus pour chaque image. Notez que si vous fournissez un point de focus manuellement, cela remplacera le comportement automatique décrit ci-dessus et réduira généralement la stabilité de l’hologramme. En règle générale, vous devez spécifier un point de focus manuel uniquement lorsque votre application s’exécute sur un HoloLens qui n’a pas encore été mis à jour vers la mise à jour Windows 10 avril 2018.

Exemple

Il existe de nombreuses façons de définir le point de focus, comme suggéré par les surcharges disponibles sur la fonction statique SetFocusPointForFrame . Voici un exemple simple de définition du plan de mise au point sur l’objet fourni pour chaque image :

public GameObject focusedObject;
void Update()
{
    // Normally the normal is best set to be the opposite of the main camera's
    // forward vector.
    // If the content is actually all on a plane (like text), set the normal to
    // the normal of the plane and ensure the user does not pass through the
    // plane.
    var normal = -Camera.main.transform.forward;     
    var position = focusedObject.transform.position;
    UnityEngine.XR.WSA.HolographicSettings.SetFocusPointForFrame(position, normal);
}

Notes

Le code simple ci-dessus peut réduire la stabilité de l’hologramme si l’objet ciblé se retrouve derrière l’utilisateur. Nous vous recommandons généralement de définir Activer le partage de mémoire tampon en profondeur au lieu de spécifier manuellement un point de focus.

Point de contrôle de développement suivant

Si vous suivez le parcours de développement Unity que nous avons mis en place, vous êtes en train d’explorer les api et fonctionnalités de la plateforme Mixed Reality. À partir d’ici, vous pouvez passer au sujet suivant :

Ou accéder directement au déploiement de votre application sur un appareil ou un émulateur :

Vous pouvez revenir aux points de contrôle de développement Unity à tout moment.

Voir aussi