Scripting : Géolocalisation
- Tutorial
Ce chapitre décrit les mécanismes de géolocalisation fournis nativement par Immersive, permettant de représenter dynamiquement la position et le déplacement d’objets géolocalisés dans le jumeau numérique 3D, sans nécessiter de développement spécifique en JavaScript.
Dans cet article
Dans le cas d’un équipement géolocalisé, Immersive met à disposition plusieurs comportements natifs permettant de représenter visuellement un changement de position d’un objet dans son environnement et ne nécessitent pas de développement spécifique en JS mais seulement une configuration au niveau de l’équipement.
Les 3 comportements disponibles dans les suivants :
GeoTracking: Téléport d’un objet géolocaliséGeoMove: Suivi en temps réel d’un objet géolocalisé avec orientationNavMeshMove: Suivi d’un objet avec contrainte de déplacement sur le graph de navigation.
WGS 84.
Les positions GPS remontées par une variable de type GISVector doivent respecter le format suivant :
longitude;latitude
Exemple de position gps valide :
7.841257629258633;48.552757624772426
Activation de GeoTracking
Le GeoTracking permet de modifier la position d’un objet sur le plan en fonction de sa position GPS.
A chaque réception d’une position GPS, l’objet associé sera téléporté à la position correspondante sur le plan.
Ce type de tracking est utilisé dans le cas d’une remontée de position GPS non précise ou dont la fréquence est faible.
Afin d’associer un comportement de GeoTracking à un équipement,
il suffit de lui créer une variable portant le nom GeoTracking.
En effet un comportement a été enregistré par défaut par Immersive avec la règle d’importation $(GeoTracking).
Le comportement peut récupérer la position GPS de l’objet de 2 façons différentes :
- Via une variable de type
GISVectorportant le nomGeoPos - Via 2 variables séparées de type
Singleportant les nomsLongitudeetLatitude
Activation du GeoMove
Le GeoMove est une version avancée du GeoTracking.
Il s’occupe d’animer l’objet sur le plan entre les différentes positions GPS
afin d’obtenir un mouvement fluide.
Ce type de tracking est utilisé dans le cas d’une remontée de position GPS très précise (quelques centimètres) et avec une fréquence élevée (< 1 s).
Afin d’associer un comportement de GeoMove à un équipement,
il suffit de lui créer une variable portant le nom GeoMove.
En effet, un comportement par défaut a été enregistré par Immersive avec la règle d’importation $(GeoMove).
Le comportement peut récupérer la position GPS de l’objet de deux façons différentes :
- Via une variable de type
GISVectorportant le nomGeoPos - Via deux variables séparées de type
Singleportant les nomsLongitudeetLatitude
Dans le cas où l’objet a besoin d’être orienté en plus de sa position, deux solutions s’offrent à nous :
-
Fournir l’orientation de l’objet via un capteur d’orientation (solution recommandée)
- Ajouter une variable
Orientationà l’objet contenant la valeur d’orientation
- Ajouter une variable
-
Fournir une information indiquant si l’objet est en marche avant ou en marche arrière,
ainsi que la dernière position GPS connue en plus de la précédente.
- Ajouter une variable
Reversingde typeBoolean, dont la valeur est true si la marche arrière est enclenchée - Ajouter une variable
PreviousCoordinatescorrespondant à la position GPS précédemment mesurée
- Ajouter une variable
"Supervision.UpdatesPeriod" : 0.5
Activation du NavMeshMove
Ce type de tracking est utilisé dans le cas d’une remontée de position GPS plus ou moins précise, et dont la fréquence n’est pas assez importante pour être animer par le GeoMove. Pour pouvoir l’utiliser, il est nécessaire d’avoir un graph de navigation sur la carte.
Quand une position GPS est remontée, l’objet tracké regarde sa position actuelle et la position vers laquelle il doit aller, il cherche les points du graph de navigation le plus proche de ces 2 positions, et cherche un chemin valide.
Si un chemin valide est trouvé, l’objet sera animé du point A vers le point B en suivant le chemin calculé.
Afin d’associer un comportement de NavMeshMove à un équipement,
il suffit de lui créer une variable portant le nom NavMeshMove.
En effet, un comportement par défaut a été enregistré par Immersive
avec la règle d’importation $( NavMeshMove).