Saltar al contenido principal

XR8.XrController.pipelineModule()

XR8.XrController.pipelineModule()

Descripción

Crea un módulo de canalización de cámara que, cuando se instala, recibe llamadas de retorno sobre cuándo se ha iniciado la cámara, eventos de proceso de la cámara y otros cambios de estado. Se utilizan para calcular la posición de la cámara.

Parámetros

Ninguno

Devuelve

El valor devuelto es un objeto puesto a disposición de onUpdate como:

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

PropiedadTipoDescripción
rotation{w, x, y, z}La orientación (cuaternión) de la cámara en la escena.
position{x, y, z}La posición de la cámara en la escena.
intrinsics[Número]Una matriz de proyección de 16 dimensiones de columna mayor 4x4 que da a la cámara de la escena el mismo campo de visión que la alimentación de la cámara renderizada.
trackingStatusCadenaUno de 'LIMITADO' o 'NORMAL'.
trackingReasonCadenaUna de las siguientes: 'UNSPECIFIED' o'INITIALIZING'.
worldPoints[{id, confidence, position: {x, y, z}}]Una matriz de puntos detectados en el mundo en su ubicación en la escena. Sólo se rellena si XrController está configurado para devolver puntos del mundo y trackingReason != 'INITIALIZING'.
realityTextureWebGLTextureLa textura que contiene los datos de alimentación de la cámara.
lighting{exposure, temperature}Exposición de la iluminación de su entorno. Nota: la temperatura aún no se ha implementado.

Eventos enviados

trackingStatus: Se lanza cuando XrController se inicia y cambia el estado o el motivo del seguimiento.

reality.trackingstatus : { status, reason }

PropiedadTipoDescripción
statusCadenaUno de 'LIMITADO' o 'NORMAL'.
reasonCadenaUna de 'INITIALIZING' o 'UNDEFINED'.

imageloading: Se lanza cuando comienza la carga de la imagen de detección.

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

PropiedadTipoDescripción
nameCadenaEl nombre de la imagen.
tipoCadenaUna de 'FLAT', 'CYLINDRICAL', 'CONICAL'.
metadataObjetoMetadatos de usuario.

imagescanning: Se lanza cuando se han cargado todas las imágenes de detección y ha comenzado el escaneado.

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

PropiedadTipoDescripción
nameCadenaEl nombre de la imagen.
tipoCadenaUna de 'FLAT', 'CYLINDRICAL', 'CONICAL'.
metadataObjetoMetadatos de usuario.
geometríaObjetoObjeto que contiene datos de geometría. Si tipo=FLAT: {scaledWidth, scaledHeight}, else if type=CYLINDRICAL or type=CONICAL: {height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians}

Si tipo = FLAT, geometry:

PropiedadTipoDescripción
scaledWidthNúmeroLa anchura de la imagen en la escena, multiplicada por la escala.
scaledHeightNúmeroLa altura de la imagen en la escena, multiplicada por la escala.

Si tipo= CYLINDRICAL o CONICAL, geometry:

PropiedadTipoDescripción
heightNúmeroAltura del objetivo curvo.
radiusTopNúmeroRadio del objetivo curvo en la parte superior.
radiusBottomNúmeroRadio del objetivo curvo en la parte inferior.
arcStartRadiansNúmeroÁngulo inicial en radianes.
arcLengthRadiansNúmeroÁngulo central en radianes.

imagefound: Se lanza cuando se encuentra por primera vez un objetivo de imagen.

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

PropiedadTipoDescripción
nameCadenaEl nombre de la imagen.
tipoNúmeroUna de 'FLAT', 'CYLINDRICAL', 'CONICAL'.`
position{x, y, z}La posición 3d de la imagen localizada.
rotation{w, x, y, z}La orientación local 3d de la imagen localizada.
scaleNúmeroFactor de escala que debe aplicarse al objeto adjunto a esta imagen.

Si tipo = FLAT:

PropiedadTipoDescripción
scaledWidthNúmeroLa anchura de la imagen en la escena, multiplicada por la escala.
scaledHeightNúmeroLa altura de la imagen en la escena, multiplicada por la escala.

Si tipo= CILÍNDRICA o CÓNICA:

PropiedadTipoDescripción
heightNúmeroAltura del objetivo curvo.
radiusTopNúmeroRadio del objetivo curvo en la parte superior.
radiusBottomNúmeroRadio del objetivo curvo en la parte inferior.
arcStartRadiansNúmeroÁngulo inicial en radianes.
arcLengthRadiansNúmeroÁngulo central en radianes.

imageupdated: Se lanza cuando un objetivo de imagen cambia de posición, rotación o escala.

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

PropiedadTipoDescripción
nameCadenaEl nombre de la imagen.
tipoNúmeroUna de 'FLAT', 'CYLINDRICAL', 'CONICAL'.`
position{x, y, z}La posición 3d de la imagen localizada.
rotation{w, x, y, z}La orientación local 3d de la imagen localizada.
scaleNúmeroFactor de escala que debe aplicarse al objeto adjunto a esta imagen.

Si tipo = FLAT:

PropiedadTipoDescripción
scaledWidthNúmeroLa anchura de la imagen en la escena, multiplicada por la escala.
scaledHeightNúmeroLa altura de la imagen en la escena, multiplicada por la escala.

Si tipo= CILÍNDRICA o CÓNICA:

PropiedadTipoDescripción
heightNúmeroAltura del objetivo curvo.
radiusTopNúmeroRadio del objetivo curvo en la parte superior.
radiusBottomNúmeroRadio del objetivo curvo en la parte inferior.
arcStartRadiansNúmeroÁngulo inicial en radianes.
arcLengthRadiansNúmeroÁngulo central en radianes.

imagelost: Se lanza cuando un objetivo de imagen deja de ser rastreado.

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

PropiedadTipoDescripción
nameCadenaEl nombre de la imagen.
tipoNúmeroUna de 'FLAT', 'CYLINDRICAL', 'CONICAL'.`
position{x, y, z}La posición 3d de la imagen localizada.
rotation{w, x, y, z}La orientación local 3d de la imagen localizada.
scaleNúmeroFactor de escala que debe aplicarse al objeto adjunto a esta imagen.

Si tipo = FLAT:

PropiedadTipoDescripción
scaledWidthNúmeroLa anchura de la imagen en la escena, multiplicada por la escala.
scaledHeightNúmeroLa altura de la imagen en la escena, multiplicada por la escala.

Si tipo= CILÍNDRICA o CÓNICA:

PropiedadTipoDescripción
heightNúmeroAltura del objetivo curvo.
radiusTopNúmeroRadio del objetivo curvo en la parte superior.
radiusBottomNúmeroRadio del objetivo curvo en la parte inferior.
arcStartRadiansNúmeroÁngulo inicial en radianes.
arcLengthRadiansNúmeroÁngulo central en radianes.

meshfound: Se lanza cuando se encuentra una malla por primera vez, ya sea después del inicio o después de un recentrado().

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

PropiedadTipoDescripción
idCadenaUn id para esta malla que es estable dentro de una sesión
position{x, y, z}La posición 3d de la malla localizada.
rotation{w, x, y, z}La orientación local 3d (cuaternión) de la malla localizada.
geometría{index, attributes}Un objeto que contiene datos de geometría de malla sin procesar. Los atributos contienen atributos de posición y color.

geometry es un objeto con las siguientes propiedades:

PropiedadTipoDescripción
indexUint32ArrayLos vértices de la malla donde 3 vértices contiguos forman un triángulo.
attributes[{name: 'position', array: Float32Array(), itemSize: 3}, {name: 'color', array: Float32Array(), itemSize: 3}]Los datos brutos de la geometría de la malla.

mallaactualizada: Se lanza cuando una de las primeras mallas que encontramos cambia de posición o de rotación.

meshupdated.detail : { id, position, rotation }

PropiedadTipoDescripción
idCadenaUn id para esta malla que es estable dentro de una sesión
position{x, y, z}La posición 3d de la malla localizada.
rotation{w, x, y, z}La orientación local 3d (cuaternión) de la malla localizada.

meshlost: Se lanza cuando se llama a recentrar.

xrmeshlost.detail : { id }

PropiedadTipoDescripción
idCadenaUn id para esta malla que es estable dentro de una sesión

projectwayspotscanning: Se lanza cuando se han cargado todos los puntos de ruta del proyecto para escanearlos.

projectwayspotscanning.detail : { wayspots: [] }

PropiedadTipoDescripción
wayspots[Objeto]Una matriz de objetos que contiene información sobre Wayspot.

wayspots es una matriz de objetos con las siguientes propiedades:

PropiedadTipoDescripción
idCadenaUn identificador para este Proyecto Wayspot que es estable dentro de una sesión
nameCadenaNombre del Proyecto Wayspot
imageUrlCadenaURL de una imagen representativa de este Proyecto Wayspot.
títuloCadenaTítulo del proyecto Wayspot.
latNúmeroLatitud de este Proyecto Wayspot.
lngNúmeroLongitud de este Proyecto Wayspot.

projectwayspotfound: Se lanza cuando se encuentra por primera vez un Proyecto Wayspot.

projectwayspotfound.detail : { name, position, rotation }

PropiedadTipoDescripción
nameCadenaEl nombre del Proyecto Wayspot.
position{x, y, z}La posición 3d del Wayspot del proyecto localizado.
rotation{w, x, y, z}La orientación local 3d (cuaternión) del Wayspot del proyecto localizado.

projectwayspotupdated: Se lanza cuando un Proyecto Wayspot cambia de posición o rotación.

projectwayspotupdated.detail : { name, position, rotation }

PropiedadTipoDescripción
nameCadenaEl nombre del Proyecto Wayspot.
position{x, y, z}La posición 3d del Wayspot del proyecto localizado.
rotation{w, x, y, z}La orientación local 3d (cuaternión) del Wayspot del proyecto localizado.

projectwayspotlost: Se lanza cuando se deja de seguir un Proyecto Wayspot.

projectwayspotlost.detail : { name, position, rotation }

PropiedadTipoDescripción
nameCadenaEl nombre del Proyecto Wayspot.
position{x, y, z}La posición 3d del Wayspot del proyecto localizado.
rotation{w, x, y, z}La orientación local 3d (cuaternión) del Wayspot del proyecto localizado.

Ejemplo - añadir módulo canalización

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

Ejemplo - Eventos enviados

const logEvent = ({name, detail}) => {
console.log(`Handling event ${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},
],
})