Saltar al contenido principal

XR8.HandController.pipelineModule()

XR8.HandController.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.handcontroller: { rotation, position, intrinsics, cameraFeedTexture }

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.
cameraFeedTextureWebGLTextureLa textura que contiene los datos de alimentación de la cámara.

Eventos enviados

carga manual: se dispara cuando comienza la carga para obtener recursos adicionales de RA manual.

handloading.detail : {maxDetections, pointsPerDetection, rightIndices, leftIndices}

PropiedadTipoDescripción
maxDetectionsNúmeroEl número máximo de manos que se pueden procesar simultáneamente.
puntosPorDetecciónNúmeroNúmero de vértices que se extraerán por mano.
rightIndices[{a, b, c}]Índices de la matriz de vértices que forman los triángulos de la malla de la mano.
leftIndices[{a, b, c}]Índices de la matriz de vértices que forman los triángulos de la malla de la mano.

escaneado manual: se dispara cuando se han cargado todos los recursos de RA de manos y ha comenzado la exploración.

handscanning.detail : {maxDetections, pointsPerDetection, rightIndices, leftIndices}

PropiedadTipoDescripción
maxDetectionsNúmeroEl número máximo de manos que se pueden procesar simultáneamente.
puntosPorDetecciónNúmeroNúmero de vértices que se extraerán por mano.
rightIndices[{a, b, c}]Índices de la matriz de vértices que forman los triángulos de la malla de la mano.
leftIndices[{a, b, c}]Índices de la matriz de vértices que forman los triángulos de la malla de la mano.

mano encontrada: se activa cuando se encuentra una mano por primera vez.

handfound.detail : {id, transform, vertices, normals, attachmentPoints}

PropiedadTipoDescripción
idNúmeroUn identificador numérico de la mano localizada.
transform{position, rotation, scale}Transforma la información de la mano localizada.
vértices[{x, y, z}]Posición de los puntos de la mano, relativa a la transformación.
normales[{x, y, z}]Dirección normal de los vértices, relativa a la transformación.
handKindNúmeroUna representación numérica de la lateralidad de la mano localizada. Los valores válidos son 0 (sin especificar), 1 (izquierda) y 2 (derecha).
attachmentPoints{name, position: {x,y,z}}}Consulta XR8.HandController.AttachmentPoints para ver la lista de puntos de fijación disponibles. position es relativa a la transformación.

transform es un objeto con las siguientes propiedades:

PropiedadTipoDescripción
position{x, y, z}La posición 3d de la mano localizada.
rotation{w, x, y, z}La orientación local 3d de la mano localizada.
escalaNumberFactor de escala que debe aplicarse a los objetos unidos a esta mano.

attachmentPoints es un objeto con las siguientes propiedades:

PropiedadTipoDescripción
nameCadenaEl nombre del punto de fijación. Consulte XR8.HandController.AttachmentPoints para ver la lista de puntos de fijación disponibles.
posición{x, y, z}La posición 3d del punto de enganche en la mano localizada.
rotación{w, x, y, z}El cuaternión de rotación que gira el vector Y positivo al vector hueso del punto de fijación.
innerPoint{x, y, z}El punto interior de un punto de enganche. (ej. mano palma lado)
outerPoint{x, y, z}El punto exterior de un punto de enganche. (ej. dorso de la mano)
radioNumberEl radio de los puntos de fijación de los dedos.
radio menorNúmeroEl radio más corto desde la superficie de la mano hasta el punto de fijación de la muñeca.
radioMayorNúmeroEl radio más largo desde la superficie de la mano hasta el punto de fijación de la muñeca.

manoactualizada: se activa cuando se encuentra una mano.

handupdated.detail : {id, transform, vertices, normals, attachmentPoints}

PropiedadTipoDescripción
idNúmeroUn identificador numérico de la mano localizada.
transform{position, rotation, scale}Transforma la información de la mano localizada.
vértices[{x, y, z}]Posición de los puntos de la mano, relativa a la transformación.
normales[{x, y, z}]Dirección normal de los vértices, relativa a la transformación.
handKindNúmeroUna representación numérica de la lateralidad de la mano localizada. Los valores válidos son 0 (sin especificar), 1 (izquierda) y 2 (derecha).
attachmentPoints{name, position: {x,y,z}}}Consulta XR8.HandController.AttachmentPoints para ver la lista de puntos de fijación disponibles. position es relativa a la transformación.

transform es un objeto con las siguientes propiedades:

PropiedadTipoDescripción
position{x, y, z}La posición 3d de la mano localizada.
rotation{w, x, y, z}La orientación local 3d de la mano localizada.
escalaNumberFactor de escala que debe aplicarse a los objetos unidos a esta mano.

mano perdida: se dispara cuando se deja de seguir una mano.

handlost.detail : { id }

PropiedadTipoDescripción
idNúmeroUn identificador numérico de la mano localizada.

Ejemplo - añadir módulo canalización

XR8.addCameraPipelineModule(XR8.HandController.pipelineModule())