• Théo Videau

L'eye tracking dans la réalité virtuelle

Dernière mise à jour : juin 23

Si vous connaissez la réalité virtuelle, vous connaissez sans doute aussi la technologie eye tracking (ou oculométrie) qui permet de suivre le regard de l’utilisateur. Le HTC Vive Pro Eye, est actuellement un des rares casques à intégrer cette technologie, et permet donc de suivre le regard de l’utilisateur dans un monde virtuel mais pas seulement. En effet, il permet aussi de tracker les réactions sur le visage de l’utilisateur.

Nous allons voir ici, comment configurer votre HTC Vive Pro Eye pour utiliser la technologie eye tracking qu’il embarque.


De quoi avons-nous besoin pour cela ?

(à noter que le SDK SRanipal et SRanipalRuntime sont fournis avec le casque)


Passons à la pratique !

Tout d’abord, nous allons voir comment ouvrir la scène d’exemple présente dans le SDK.

  • Créez un nouveau projet Unity 3D ou ouvrez en un déja existant.

  • Importez tous les packages depuis la fenetre Assets > Import Package > Custom Package. Pour le Package Steam VR, vous pourrez le trouver directement dans l’asset store ou depuis l’onglet window > package manager.

  • Vous devriez avoir les dossiers suivant dans votre fenetre project :


  • Vous devrez ensuite lancer la calibration de l’eye tracking dans le casque comme ci dessous. Si le logo de calibration n’apparait pas sur le menu Steam, relancez SRanipalRuntime ou Steam VR, voir les deux.


  • Vous pourrez enfin charger la scène situé dans le dossier Vivesr/Scenes/Eye/EyeSample_v2.unity.

  • Enfin lancez la scène, enfilez votre casque et découvrez ses fonctionnalités.



Pour faire fonctionner une scène personnalisée avec le SDK SRanipal, vous aurez besoin des mêmes packages que dans la scène de démonstration. Vous devrez ensuite créer un GameObject nommé “SRanipal” et lui attacher le script ViveSR / Scripts / Eye / “SRanipal_Framework”, puis cocher la case Enable Eye depuis l’inspecteur.


Vous pourrez retrouver toutes les informations concernant la direction du regard de l’utilisateur dans le fichier ViveSR / Script / Eye /Sample / SRanipal_EyeFocusSample.cs, et les fonctions permettant de contrôler le mouvement des yeux de l’avatar, dans le fichier ViveSR / Script / Eye /Sample / SRanipal_AvatarEyeSample.cs.


Voici un exemple de code permettant de récupérer différentes informations à propos du regard de l’utilisateur, comme la position des pupilles, la direction du regard, ou si les paupières sont ouvertes ou fermées. Il ne s'agit pas de toutes les informations disponibles, vous en trouverez d’autre dans le fichier cité précédemment.


private static EyeData eyeData; 
private static VerboseData verboseData; 
private Vector2 pupilPositionLeft, pupilPositionRight; 
private Vector3 gazeDirectionleft, gazeDirectionRight;
private float eyeOpenLeft, eyeOpenRight; 
void Update()
{
    SRanipal_Eye.GetEyeData(ref eyeData); 
    SRanipal_Eye.GetVerboseData(out verboseData);    

    // position des pupilles
    pupilPositionLeft = eyeData.verbose_data.left.pupil_position_in_sensor_area;    
    pupilPositionRight = eyeData.verbose_data.right.pupil_position_in_sensor_area;
    
    // direction du regard
    gazeDirectionLeft = eyeData.verbose_data.left.gaze_direction_normalized;
    gazeDirectionRight = eyeData.verbose_data.right.gaze_direction_normalized;
    
    // ouverture/fermeture des yeux
    eyeOpenLeft = eyeData.verbose_data.left.eye_openness;    
    eyeOpenRight = eyeData.verbose_data.right.eye_openness;
}

Lors du développement de votre application, vous pourrez rencontrer des problèmes de saccades liés au taux de rafraichissement de votre casque. Voici un article traitant du sujet : https://www.frontiersin.org/articles/10.3389/fpsyt.2020.572938/full , ainsi qu’une solution développée par l’Ecole Polytechnique Fédérale de Zurich https://github.com/MotorControlLearning/SaccadeVR-mobile .


Vous pourrez aussi choisir d’utiliser le SDK TobiiXR (https://vr.tobii.com/sdk/downloads/)

qui vient en surcouche à SRanipal et qui permet d’ajouter certaines fonctionnalités comme l’utilisation d’intelligence artificielle, G2OM (Gaze 2 Object Mapping), permettant d'améliorer la précision du suivi du regard. Si cela vous intéresse, vous trouverez toutes les informations nécessaires sur https://vr.tobii.com/sdk/solutions/tobii-g2om/ ainsi qu’une démo https://vr.tobii.com/sdk/showcases/g2om/.


Nous avons constaté un réel gain de précision sur le point de fixation du regard à l’aide de l’intelligence artificielle utilisée dans ce SDK, notamment sur des objets lointains, les objets se superposant ainsi que les objets en mouvement.



Voici un exemple de code utilisant le SDK TobiiXR :


private void Update ()
{
    // récupère les info de l'eye tracking dans le repère monde
    var eyeTrackingData = TobiiXR.GetEyeTrackingData(TobiiXR_TrackingSpace.World);

    // vérifie si le regard est valide
    if(eyeTrackingData.GazeRay.IsValid)
    {
        // l'origine du regard et un point 3D
        var rayOrigin = eyeTrackingData.GazeRay.Origin;

        // la direction du regard est un vecteur normalisé
        var rayDirection = eyeTrackingData.GazeRay.Direction;
    }
    // pour des utilisations multijoueur, les données dans l'espace local peuvent etre plus faclies
    // à utiliser
    var eyeTrackingDataLocal = TobiiXR.GetEyeTrackingData(TobiiXR_TrackingSpace.Local);

    // la variable EyeBlinking est vraie quand les yeux sotn fermés
    // et donc fausse quand les yeux sont ouverts
    var isLeftEyeBlinking = eyeTrackingDataLocal.IsLeftEyeBlinking;
    var isRightEyeBlinking = eyeTrackingDataLocal.IsRightEyeBlinking;

    // utiliser la direction du regard dans un repère local rend l'application d'une rotation
    // aux yeux de l'avatar plus facile 
    var eyesDirection = eyeTrackingDataLocal.GazeRay.Direction;
}

Vous pourrez retrouver ce code ainsi que toute la documentation nécessaire à l’utilisation TobiiXr ici https://vr.tobii.com/sdk/develop/unity/documentation/api-reference/core/.


Quelques avantages de cette technologie:

  • Permet d’ajouter des fonctionnalités et de rendre la visée plus réaliste dans les jeux de tir par exemple.

  • Permet de rendre plus vivants les avatars grâce aux expressions faciales.

  • Permet d’analyser où regarde l’utilisateur dans une scène en réalité virtuelle.


Quelques inconvénients:

  • Peu de casques intègrent pour le moment cette technologie et ces derniers sont situés dans le haut de gamme et donc à un prix plutôt élevé.

  • Peu d’applications intègrent la technologie Eye Tracking pour le moment.

  • La mise en place et l’utilisation du SDK peut être compliquée.


Ouverture :


La technologie eye tracking peut amener à l’ajout de beaucoup de fonctionnalités comme l’animation des avatars, l’amélioration de la visée ou encore l’analyse de scènes en Réalité Virtuelle. Elle est pour le moment peu développée dans les jeux et applications car encore, peu de casques de réalité virtuelle embarquent cette technologie. Nous pouvons espérer la voir se démocratiser avec l’arrivée de nouveaux casques intégrant l’Eye Tracking.



Article rédigé par Théo Videau



34 vues0 commentaire

Posts récents

Voir tout