Passer au contenu principal

XR8.XrController.pipelineModule()

XR8.XrController.pipelineModule()

Description

Crée un module de pipeline de caméra qui, lorsqu'il est installé, reçoit des rappels sur le démarrage de la caméra, les événements d'essai de la caméra et d'autres changements d'état. Ils sont utilisés pour calculer la position de la caméra.

Paramètres

Aucun

Retours

La valeur de retour est un objet mis à la disposition de onUpdate en tant que :

processCpuResult.reality : { rotation, position, intrinsics, trackingStatus, trackingReason, worldPoints, realityTexture, lighting }

PropriétéTypeDescription
rotation{w, x, y, z}L'orientation (quaternion) de la caméra dans la scène.
position{x, y, z}Position de la caméra dans la scène.
intrinsèques[Number]Matrice de projection 4x4 à 16 dimensions avec colonne majeure qui donne à la caméra de la scène le même champ de vision que celui de la caméra rendue.
état du suiviChaîneUn des éléments suivants : 'LIMITED' ou 'NORMAL'.
motif de suiviChaîneUn des éléments suivants : "UNSPECIFIED" ou"INITIALIZING".
points mondiaux[{id, confidence, position: {x, y, z}}]Un tableau de points détectés dans le monde à leur emplacement dans la scène. Rempli uniquement si XrController est configuré pour renvoyer des points du monde et trackingReason != 'INITIALIZING'.
realityTextureWebGLTextureLa texture contenant les données d'alimentation de la caméra.
éclairage{exposure, temperature}Exposition de l'éclairage dans votre environnement. Remarque : la température `` n'a pas encore été mise en œuvre.

Événements distribués

trackingStatus : Se déclenche lorsque XrController démarre et que l'état ou la raison du suivi change.

reality.trackingstatus : { status, reason }

PropriétéTypeDescription
statutChaîneUn des éléments suivants : 'LIMITED' ou 'NORMAL'.
raisonChaîneUn des éléments suivants : 'INITIALIZING' ou 'UNDEFINED'.

imageloading : Se déclenche lorsque le chargement de l'image de détection commence.

imageloading.detail : { imageTargets: {name, type, metadata} }

PropriétéTypeDescription
nomChaîneNom de l'image.
typeChaîneUn des éléments suivants : 'FLAT', 'CYLINDRIQUE', 'CONIQUE'.
métadonnéesObjetMétadonnées de l'utilisateur.

imagescanning : Se déclenche lorsque toutes les images de détection ont été chargées et que la numérisation a commencé.

imagescanning.detail : { imageTargets: {name, type, metadata, geometry} }

PropriétéTypeDescription
nomChaîneNom de l'image.
typeChaîneUn des éléments suivants : 'FLAT', 'CYLINDRIQUE', 'CONIQUE'.
métadonnéesObjetMétadonnées de l'utilisateur.
géométrieObjetObjet contenant des données géométriques. Si type=FLAT : {scaledWidth, scaledHeight} sinon si type=CYLINDRIQUE ou type=CONIQUE : {height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians}

Si le type = FLAT, la géométrie :

PropriétéTypeDescription
largeur mise à l'échelleNombreLa largeur de l'image dans la scène, multipliée par l'échelle.
hauteur mise à l'échelleNombreHauteur de l'image dans la scène, multipliée par l'échelle.

Si type= CYLINDRIQUE ou CONIQUE, géométrie :

PropriétéTypeDescription
hauteurNombreHauteur de la cible incurvée.
radiusTopNombreRayon de la cible incurvée en haut.
radiusBottomNombreRayon de la cible incurvée en bas.
arcStartRadiansNombreAngle de départ en radians.
arcLengthRadiansNombreAngle central en radians.

imagefound : Se déclenche lorsqu'une image cible est trouvée pour la première fois.

imagefound.detail : { name, type, position, rotation, scale, scaledWidth, scaledHeight, height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians }

PropriétéTypeDescription
nomChaîneNom de l'image.
typeNombreUn des éléments suivants : 'FLAT', 'CYLINDRICAL', 'CONICAL'.`
position{x, y, z}La position 3D de l'image localisée.
rotation{w, x, y, z}L'orientation locale 3D de l'image localisée.
échelleNombreFacteur d'échelle à appliquer aux objets attachés à cette image.

Si le type = FLAT :

PropriétéTypeDescription
largeur mise à l'échelleNombreLa largeur de l'image dans la scène, multipliée par l'échelle.
hauteur mise à l'échelleNombreHauteur de l'image dans la scène, multipliée par l'échelle.

Si type= CYLINDRICAL ou CONICAL :

PropriétéTypeDescription
hauteurNombreHauteur de la cible incurvée.
radiusTopNombreRayon de la cible incurvée en haut.
radiusBottomNombreRayon de la cible incurvée en bas.
arcStartRadiansNombreAngle de départ en radians.
arcLengthRadiansNombreAngle central en radians.

imageupdated: Se déclenche lorsqu'une cible d'image change de position, de rotation ou d'échelle.

imageupdated.detail : { name, type, position, rotation, scale, scaledWidth, scaledHeight, height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians }

PropriétéTypeDescription
nomChaîneNom de l'image.
typeNombreUn des éléments suivants : 'FLAT', 'CYLINDRICAL', 'CONICAL'.`
position{x, y, z}La position 3D de l'image localisée.
rotation{w, x, y, z}L'orientation locale 3D de l'image localisée.
échelleNombreFacteur d'échelle à appliquer aux objets attachés à cette image.

Si le type = FLAT :

PropriétéTypeDescription
largeur mise à l'échelleNombreLa largeur de l'image dans la scène, multipliée par l'échelle.
hauteur mise à l'échelleNombreHauteur de l'image dans la scène, multipliée par l'échelle.

Si type= CYLINDRICAL ou CONICAL :

PropriétéTypeDescription
hauteurNombreHauteur de la cible incurvée.
radiusTopNombreRayon de la cible incurvée en haut.
radiusBottomNombreRayon de la cible incurvée en bas.
arcStartRadiansNombreAngle de départ en radians.
arcLengthRadiansNombreAngle central en radians.

imagelost : Se déclenche lorsqu'une cible d'image n'est plus suivie.

imagelost.detail : { name, type, position, rotation, scale, scaledWidth, scaledHeight, height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians }

PropriétéTypeDescription
nomChaîneNom de l'image.
typeNombreUn des éléments suivants : 'FLAT', 'CYLINDRICAL', 'CONICAL'.`
position{x, y, z}La position 3D de l'image localisée.
rotation{w, x, y, z}L'orientation locale 3D de l'image localisée.
échelleNombreFacteur d'échelle à appliquer aux objets attachés à cette image.

Si le type = FLAT :

PropriétéTypeDescription
largeur mise à l'échelleNombreLa largeur de l'image dans la scène, multipliée par l'échelle.
hauteur mise à l'échelleNombreHauteur de l'image dans la scène, multipliée par l'échelle.

Si type= CYLINDRICAL ou CONICAL :

PropriétéTypeDescription
hauteurNombreHauteur de la cible incurvée.
radiusTopNombreRayon de la cible incurvée en haut.
radiusBottomNombreRayon de la cible incurvée en bas.
arcStartRadiansNombreAngle de départ en radians.
arcLengthRadiansNombreAngle central en radians.

meshfound : Se déclenche lorsqu'un maillage est trouvé pour la première fois, soit après le démarrage, soit après un recentrage().

xrmeshfound.detail : { id, position, rotation, geometry }

PropriétéTypeDescription
idChaîneUn identifiant pour ce maillage qui est stable au sein d'une session
position{x, y, z}La position 3D de la maille localisée.
rotation{w, x, y, z}L'orientation locale 3D (quaternion) du maillage localisé.
géométrie{index, attributes}Un objet contenant des données brutes sur la géométrie du maillage. Les attributs contiennent des attributs de position et de couleur.

la géométrie est un objet ayant les propriétés suivantes :

PropriétéTypeDescription
indexTableau Uint32Les sommets du maillage où 3 sommets contigus forment un triangle.
attributs[{name: 'position', array: Float32Array(), itemSize: 3}, {name: 'color', array: Float32Array(), itemSize: 3}]Les données géométriques brutes du maillage.

meshupdated : Se déclenche lorsqu'un premier maillage que nous avons trouvé change de position ou de rotation.

meshupdated.detail : { id, position, rotation }

PropriétéTypeDescription
idChaîneUn identifiant pour ce maillage qui est stable au sein d'une session
position{x, y, z}La position 3D de la maille localisée.
rotation{w, x, y, z}L'orientation locale 3D (quaternion) du maillage localisé.

meshlost : Se déclenche lorsque le recentrage est appelé.

xrmeshlost.detail : { id }

PropriétéTypeDescription
idChaîneUn identifiant pour ce maillage qui est stable au sein d'une session

projectwayspotscanning : Se déclenche lorsque tous les Wayspots du projet ont été chargés pour être scannés.

projectwayspotscanning.detail : { wayspots: [] }

PropriétéTypeDescription
wayspots[Object]Un tableau d'objets contenant des informations sur les wayspots.

wayspots est un tableau d'objets ayant les propriétés suivantes :

PropriétéTypeDescription
idChaîneUn identifiant pour ce projet Wayspot qui est stable au sein d'une session
nomChaîneNom du projet Wayspot.
imageUrlChaîneURL vers une image représentative de ce projet Wayspot.
titreChaîneTitre du projet Wayspot.
latNombreLatitude de ce projet Wayspot.
lngNombreLongitude de ce projet Wayspot.

projectwayspotfound : Se déclenche lorsqu'un Project Wayspot est trouvé pour la première fois.

projectwayspotfound.detail : { name, position, rotation }

PropriétéTypeDescription
nomChaîneLe nom du projet Wayspot.
position{x, y, z}La position 3D du Wayspot au projet localisé.
rotation{w, x, y, z}L'orientation locale 3D (quaternion) du point de passage du projet localisé.

projectwayspotupdated : Se déclenche lorsqu'un Projet Wayspot change de position ou de rotation.

projectwayspotupdated.detail : { name, position, rotation }

PropriétéTypeDescription
nomChaîneLe nom du projet Wayspot.
position{x, y, z}La position 3D du Wayspot au projet localisé.
rotation{w, x, y, z}L'orientation locale 3D (quaternion) du point de passage du projet localisé.

projectwayspotlost : Se déclenche lorsqu'un projet Wayspot n'est plus suivi.

projectwayspotlost.detail : { name, position, rotation }

PropriétéTypeDescription
nomChaîneLe nom du projet Wayspot.
position{x, y, z}La position 3D du Wayspot au projet localisé.
rotation{w, x, y, z}L'orientation locale 3D (quaternion) du point de passage du projet localisé.

Exemple - ajout d'un module de pipeline

XR8.addCameraPipelineModule(XR8.XrController.pipelineModule())

Exemple - événements distribués

const logEvent = ({name, detail}) => {
console.log(`Gestion de l'événement ${name}, got detail, ${JSON.stringify(detail)}`)
}

XR8.addCameraPipelineModule({
name : 'eventlogger',
listeners : [
{event: 'reality.imageloading', process: logEvent},
{event: 'reality.imagescanning', process: logEvent},
{event: 'reality.imagefound', process: logEvent},
{event: 'reality.imageupdated', process: logEvent},
{event: 'reality.imagelost', process: logEvent},
],
})