Zum Hauptinhalt springen

XR8.XrController.pipelineModule()

XR8.XrController.pipelineModule()

Beschreibung

Erstellt ein Kamera-Pipelinemodul, das nach der Installierung Rückrufe empfängt, wenn die Kamera gestartet wurde, Ereignisse der Kameraprozessierung und andere Statusänderungen. Diese werden verwendet, um die Position der Kamera zu berechnen.

Parameter

Keine

Returns

Return-Wert ist ein Objekt, das onUpdate als zur Verfügung gestellt wird:

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

EigentumTypBeschreibung
rotation{w, x, y, z}Die Ausrichtung (Quaternion) der Kamera in der Szene.
position{x, y, z}Die Position der Kamera in der Szene.
intrinsisch[Nummer]Eine 16-dimensionale 4x4-Spalten-Projektionsmatrix, die der Szenekamera das gleiche Sichtfeld wie dem gerenderten Kamerabild gibt.
trackingStatusStringEine von 'LIMITED' oder 'NORMAL'.
trackingReasonStringEins von 'UNSPECIFIED' oder'INITIALIZING'.
worldPoints[{id, confidence, position: {x, y, z}}]Ein Array von erkannten Punkten in der Welt an ihrer Position in der Szene. Nur ausgefüllt, wenn XrController für die Rückgabe von Weltpunkten konfiguriert ist und trackingReason != 'INITIALIZING'.
realityTextureWebGLTexturDie Textur, die die Kamerafeed-Daten enthält.
lighting{exposure, temperature}Belichtung der Beleuchtung in Ihrer Umgebung. Hinweis: Temperatur wurde noch nicht implementiert.

Versendete Ereignisse

trackingStatus: Wird ausgelöst, wenn XrController startet und sich der Tracking-Status oder der Grund ändert.

reality.trackingstatus : { status, reason }

EigentumTypBeschreibung
statusStringEine von 'LIMITED' oder 'NORMAL'.
reasonStringEine von 'INITIALIZING' oder 'UNDEFINED'.

imageloading: Wird ausgelöst, wenn das Laden der Erkennungsbilder beginnt.

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

EigentumTypBeschreibung
nameStringDer Name des Bildes.
typStringEine von 'FLAT', 'CYLINDRICAL', 'CONICAL'.
metadatenObjektBenutzer-Metadaten.

imagescanning: Wird ausgelöst, wenn alle Erkennungsbilder geladen wurden und der Scanvorgang begonnen hat.

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

EigentumTypBeschreibung
nameStringDer Name des Bildes.
typStringEine von 'FLAT', 'CYLINDRICAL', 'CONICAL'.
metadatenObjektBenutzer-Metadaten.
geometryObjektObjekt mit Geometriedaten. Wenn type=FLAT: {scaledWidth, scaledHeight}, sonst wenn type=CYLINDRICAL oder type=CONICAL: {height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians}

Wenn Typ = FLAT, Geometrie:

EigentumTypBeschreibung
scaledWidthNummerDie Breite des Bildes in der Szene, wenn sie mit dem Maßstab multipliziert wird.
scaledHeightNummerDie Höhe des Bildes in der Szene, wenn sie mit dem Maßstab multipliziert wird.

Wenn type= CYLINDRICAL oder CONICAL, Geometrie:

EigentumTypBeschreibung
heightNummerHöhe des gebogenen Ziels.
radiusTopNummerRadius des gebogenen Ziels oben.
radiusBottomNummerRadius des gekrümmten Ziels am unteren Rand.
arcStartRadiansNummerStartwinkel in Radiant.
arcLengthRadiansNummerZentraler Winkel in Radiant.

imagefound: Wird ausgelöst, wenn ein Bildziel zum ersten Mal gefunden wird.

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

EigentumTypBeschreibung
nameStringDer Name des Bildes.
typNummerEine von 'FLAT', 'CYLINDRICAL', 'CONICAL'.`
position{x, y, z}Die 3d-Position des georteten Bildes.
rotation{w, x, y, z}Die lokale 3d-Ausrichtung des georteten Bildes.
scaleNummerEin Skalierungsfaktor, der auf das an dieses Bild angehängte Objekt angewendet werden soll.

Wenn Typ = FLAT:

EigentumTypBeschreibung
scaledWidthNummerDie Breite des Bildes in der Szene, wenn sie mit dem Maßstab multipliziert wird.
scaledHeightNummerDie Höhe des Bildes in der Szene, wenn sie mit dem Maßstab multipliziert wird.

Wenn type= CYLINDRICAL oder CONICAL:

EigentumTypBeschreibung
heightNummerHöhe des gebogenen Ziels.
radiusTopNummerRadius des gebogenen Ziels oben.
radiusBottomNummerRadius des gekrümmten Ziels am unteren Rand.
arcStartRadiansNummerStartwinkel in Radiant.
arcLengthRadiansNummerZentraler Winkel in Radiant.

imageupdated: Wird ausgelöst, wenn ein Bildziel seine Position, Drehung oder Skalierung ändert.

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

EigentumTypBeschreibung
nameStringDer Name des Bildes.
typNummerEine von 'FLAT', 'CYLINDRICAL', 'CONICAL'.`
position{x, y, z}Die 3d-Position des georteten Bildes.
rotation{w, x, y, z}Die lokale 3d-Ausrichtung des georteten Bildes.
scaleNummerEin Skalierungsfaktor, der auf das an dieses Bild angehängte Objekt angewendet werden soll.

Wenn Typ = FLAT:

EigentumTypBeschreibung
scaledWidthNummerDie Breite des Bildes in der Szene, wenn sie mit dem Maßstab multipliziert wird.
scaledHeightNummerDie Höhe des Bildes in der Szene, wenn sie mit dem Maßstab multipliziert wird.

Wenn type= CYLINDRICAL oder CONICAL:

EigentumTypBeschreibung
heightNummerHöhe des gebogenen Ziels.
radiusTopNummerRadius des gebogenen Ziels oben.
radiusBottomNummerRadius des gekrümmten Ziels am unteren Rand.
arcStartRadiansNummerStartwinkel in Radiant.
arcLengthRadiansNummerZentraler Winkel in Radiant.

imagelost: Wird ausgelöst, wenn ein Bildziel nicht mehr verfolgt wird.

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

EigentumTypBeschreibung
nameStringDer Name des Bildes.
typNummerEine von 'FLAT', 'CYLINDRICAL', 'CONICAL'.`
position{x, y, z}Die 3d-Position des georteten Bildes.
rotation{w, x, y, z}Die lokale 3d-Ausrichtung des georteten Bildes.
scaleNummerEin Skalierungsfaktor, der auf das an dieses Bild angehängte Objekt angewendet werden soll.

Wenn Typ = FLAT:

EigentumTypBeschreibung
scaledWidthNummerDie Breite des Bildes in der Szene, wenn sie mit dem Maßstab multipliziert wird.
scaledHeightNummerDie Höhe des Bildes in der Szene, wenn sie mit dem Maßstab multipliziert wird.

Wenn type= CYLINDRICAL oder CONICAL:

EigentumTypBeschreibung
heightNummerHöhe des gebogenen Ziels.
radiusTopNummerRadius des gebogenen Ziels oben.
radiusBottomNummerRadius des gekrümmten Ziels am unteren Rand.
arcStartRadiansNummerStartwinkel in Radiant.
arcLengthRadiansNummerZentraler Winkel in Radiant.

meshfound: Wird ausgelöst, wenn ein Mesh zum ersten Mal gefunden wird, entweder nach dem Start oder nach einem recenter().

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

EigentumTypBeschreibung
idStringEine ID für dieses Mesh, die innerhalb einer Sitzung stabil ist
position{x, y, z}Die 3d-Position des georteten Meshes.
rotation{w, x, y, z}Die lokale 3D-Ausrichtung (Quaternion) des lokalisierten Meshes.
geometry{index, attributes}Ein Objekt, das Rohdaten zur Meshgeometrie enthält. Attribute enthalten Positions- und Farbattribute.

geometry ist ein Objekt mit den folgenden Eigenschaften:

EigentumTypBeschreibung
indexUint32ArrayDie Scheitelpunkte des Mesh, bei denen 3 zusammenhängende Scheitelpunkte ein Dreieck bilden.
attribute[{name: 'position', array: Float32Array(), itemSize: 3}, {name: 'color', array: Float32Array(), itemSize: 3}]Die Rohdaten der Meshgeometrie.

meshupdated: Wird ausgelöst, wenn ein erstes Mesh, das wir gefunden haben, seine Position oder Rotation ändert.

meshupdated.detail : { id, position, rotation }

EigentumTypBeschreibung
idStringEine ID für dieses Mesh, die innerhalb einer Sitzung stabil ist
position{x, y, z}Die 3d-Position des georteten Meshes.
rotation{w, x, y, z}Die lokale 3D-Ausrichtung (Quaternion) des lokalisierten Mesh.

meshlost: Wird ausgelöst, wenn recenter aufgerufen wird.

xrmeshlost.detail : { id }

EigentumTypBeschreibung
idStringEine ID für dieses Mesh, die innerhalb einer Sitzung stabil ist

projectwayspotscanning: Wird ausgelöst, wenn alle Projekt-Wayspots zum Scannen geladen wurden.

projectwayspotscanning.detail : { wayspots: [] }

EigentumTypBeschreibung
wayspots[Objekt]Ein Array-Objekt mit Wayspot-Informationen.

wayspots ist ein Array von Objekten mit den folgenden Eigenschaften:

EigentumTypBeschreibung
idStringEine ID für diesen Projekt-Wayspot, die innerhalb einer Sitzung stabil ist
nameStringProjekt-Wayspot Name.
imageUrlStringURL zu einem repräsentativen Bild für diesen Projekt-Wayspot.
titelStringProjekt-Wayspot Titel.
latNummerBreitengrad dieses Projekt-Wayspots.
lngNummerLängengrad dieses Projekt-Wayspots.

projectwayspotfound: Wird ausgelöst, wenn ein Projekt-Wayspot zum ersten Mal gefunden wird.

projectwayspotfound.detail : { name, position, rotation }

EigentumTypBeschreibung
nameStringDer Name des Projekt-Wayspots.
position{x, y, z}Die 3D-Position des georteten Projekt-Wayspots.
rotation{w, x, y, z}Die lokale 3D-Ausrichtung (Quaternion) des georteten Projekt-Wayspots.

projectwayspotupdated: Wird ausgelöst, wenn ein Projekt-Wayspot seine Position oder Drehung ändert.

projectwayspotupdated.detail : { name, position, rotation }

EigentumTypBeschreibung
nameStringDer Name des Projekt-Wayspots.
position{x, y, z}Die 3D-Position des georteten Projekt-Wayspots.
rotation{w, x, y, z}Die lokale 3D-Ausrichtung (Quaternion) des georteten Projekt-Wayspots.

projectwayspotlost: Wird ausgelöst, wenn ein Projekt-Wayspot nicht mehr verfolgt wird.

projectwayspotlost.detail : { name, position, rotation }

EigentumTypBeschreibung
nameStringDer Name des Projekt-Wayspots.
position{x, y, z}Die 3D-Position des georteten Projekt-Wayspots.
rotation{w, x, y, z}Die lokale 3D-Ausrichtung (Quaternion) des georteten Projekt-Wayspots.

Beispiel - Hinzufügen eines Pipeline-Moduls

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

Beispiel - versendete Ereignisse

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},
],
})