メインコンテンツへスキップ

XR8.XrController.pipelineModule()

XR8.XrController.pipelineModule()

概要

カメラのパイプラインモジュールを作成します。設定すると、カメラが起動したときにコールバックを受け取ります。イベントの提示やその他の状態が変更されます。 これらは、カメラの位置を計算するために使用されます。

パラメータ

なし

戻り値

戻り値は、onUpdate で次のように利用できます。

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

プロパティタイプ説明
rotation{w, x, y, z}シーン内のカメラの向き(クォータニオン)です。
position{x, y, z}シーン内のカメラの位置です。
intrinsics[Number]レンダリングされたカメラフィードと同じ視野をシーンカメラに与える、16次元の4x4の射影変換行列です。
trackingStatusString'LIMITED'または 'NORMAL'のいずれかです。
trackingReasonString'UNSPECIFIED' または'INITIALIZING'のいずれかです。
worldPoints[{id, confidence, position: {x, y, z}}]シーン内の場所で検出されたワールドの検出座標の配列です。 XrControllerがワールド座標を返すように設定され、かつtrackingReason != 'INITIALIZING'の場合にのみ満たされます。
realityTextureWebGLTextureカメラフィードデータを含むテクスチャーです。
lighting{exposure, temperature}環境中の照明の露出です。 注: temperatureは未実装です。

ディスパッチされたイベント

trackingStatus: XrControllerが起動し、トラッキングの状態や理由が変化したときに発火します。

reality.trackingstatus : { status, reason }

プロパティタイプ説明
statusString'LIMITED'または'NORMAL'のいずれかです。
reasonString'INITIALIZING'または'UNDEFINED'のいずれかです。

imageloading: 検出画像の読み込みが開始したときに発火します。

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

プロパティタイプ説明
nameString画像の名前です。
typeString'FLAT', 'CYLINDRICAL', 'CONICAL'のうちの1つです。
metadataObjectユーザーのメタデータです。

imagescanning: すべての検出画像が読み込まれ、スキャンが開始したときに発火します。

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

プロパティタイプ説明
nameString画像の名前です。
typeString'FLAT', 'CYLINDRICAL', 'CONICAL'のうちの1つです。
metadataObjectユーザーのメタデータです。
geometryObjectジオメトリデータを含むオブジェクトです。 type=FLAT の場合: {scaledWidth, scaledHeight}, lse type=CYLINDRICALまたはtype=CONICALの場合:{height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians}

type = FLATの場合、ジオメトリは以下の通りです。

プロパティタイプ説明
scaledWidthNumberスケールによって乗算された時の、シーン内の画像の幅の値です。
scaledHeightNumberスケールによって乗算された時の、シーン内の画像の高さの値です。

type= CYLINDRICALまたはCONICALの場合、ジオメトリは以下の通りです。

プロパティタイプ説明
heightNumber曲面ターゲットの高さです。
radiusTopNumber曲面ターゲットの上部の半径です。
radiusBottomNumber曲面ターゲットの下部の半径です。
arcStartRadiansNumber開始角度(ラジアン単位)です。
arcLengthRadiansNumber中心角(ラジアン単位)です。

imagefound: イメージ・ターゲットが最初に見つかったときに発火します。

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

プロパティタイプ説明
nameString画像の名前です。
typeNumber'FLAT', 'CYLINDRICAL', 'CONICAL'のうちの1つです。
position{x, y, z}配置された画像の3次元位置です。
rotation{w, x, y, z}配置された画像の3次元のローカルの向きです。
scaleNumberこの画像に付随するオブジェクトに適用されるスケール係数です。

type = FLATの場合:

プロパティタイプ説明
scaledWidthNumberスケールを掛けた時のシーン内の画像の幅の値です。
scaledHeightNumberスケールを掛けた時のシーン内の画像の高さの値です。

type= CYLINDRICALまたはCONICALの場合:

プロパティタイプ説明
heightNumber曲面ターゲットの高さです。
radiusTopNumber曲面ターゲットの上部の半径です。
radiusBottomNumber曲面ターゲットの下部の半径です。
arcStartRadiansNumber開始角度(ラジアン単位)です。
arcLengthRadiansNumber中心角(ラジアン単位)です。

imageupdated: イメージ・ターゲットの位置、回転、スケールが変化したときに発火します。

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

プロパティタイプ説明
nameString画像の名前です。
typeNumber'FLAT', 'CYLINDRICAL', 'CONICAL'のうちの1つです。
position{x, y, z}配置された画像の3次元位置です。
rotation{w, x, y, z}配置された画像の3次元のローカルの向きです。
scaleNumberこの画像に付随するオブジェクトに適用されるスケール係数です。

type = FLATの場合:

プロパティタイプ説明
scaledWidthNumberスケールによって乗算された時の、シーン内の画像の幅の値です。
scaledHeightNumberスケールによって乗算された時の、シーン内の画像の高さの値です。

type= CYLINDRICALまたはCONICALの場合:

プロパティタイプ説明
heightNumber曲面ターゲットの高さです。
radiusTopNumber曲面ターゲットの上部の半径です。
radiusBottomNumber曲面ターゲットの下部の半径です。
arcStartRadiansNumber開始角度(ラジアン単位)です。
arcLengthRadiansNumber中心角(ラジアン単位)です。

imagelost: イメージ・ターゲットが追跡されなくなったときに発火します。

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

プロパティタイプ説明
nameString画像の名前です。
typeNumber'FLAT', 'CYLINDRICAL', 'CONICAL'のうちの1つです。
position{x, y, z}配置された画像の3次元位置です。
rotation{w, x, y, z}配置された画像の3次元のローカルの向きです。
scaleNumberこの画像に付随するオブジェクトに適用されるスケール係数です。

type = FLATの場合:

プロパティタイプ説明
scaledWidthNumberスケールによって乗算された時の、シーン内の画像の幅の値です。
scaledHeightNumberスケールによって乗算された時の、シーン内の画像の高さの値です。

type= CYLINDRICALまたはCONICALの場合:

プロパティタイプ説明
heightNumber曲面ターゲットの高さです。
radiusTopNumber曲面ターゲットの上部の半径です。
radiusBottomNumber曲面ターゲットの下部の半径です。
arcStartRadiansNumber開始角度(ラジアン単位)です。
arcLengthRadiansNumber中心角(ラジアン単位)です。

meshfound: 開始後またはrecenter()後に、メッシュが初めて見つかったときに発火します。

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

プロパティタイプ説明
idStringセッション内で安定している、このメッシュのIDです。
position{x, y, z}配置されたメッシュの3次元位置です。
rotation{w, x, y, z}配置されたメッシュの3次元のローカルの向き(クォータニオン)です。
geometry{index, attributes}生メッシュのジオメトリデータを含むオブジェクトです。 属性には、位置と色の属性が含まれます。

geometryは、次のプロパティを持つオブジェクトです。

プロパティタイプ説明
indexUint32Arrayメッシュの頂点で、連続する3つの頂点が三角形を構成しているものです。
attributes[{name: 'position', array: Float32Array(), itemSize: 3}, {name: 'color', array: Float32Array(), itemSize: 3}]生のメッシュジオメトリデータです。

meshupdated: 最初に見つけたメッシュの位置や回転が変わったときに発火します。

meshupdated.detail : { id, position, rotation }

プロパティタイプ説明
idStringセッション内で安定している、このメッシュのIDです。
position{x, y, z}配置された画像の3次元位置です。
rotation{w, x, y, z}配置されたメッシュの3次元のローカルの向き(クォータニオン)です。

meshlost: recenterが呼ばれたときに発火します。

xrmeshlost.detail : { id }

プロパティタイプ説明
idStringセッション内で安定している、このメッシュのIDです。

projectwayspotscanning: すべてのProject Wayspotがスキャン用に読み込まれたときに発火します。

projectwayspotscanning.detail : { wayspots: [] }

プロパティタイプ説明
wayspots[Object]Wayspot情報を含む配列オブジェクトです。

wayspots は、以下のプロパティを持つオブジェクトの配列です。

プロパティタイプ説明
idStringセッション内で安定したこのProject WayspotのIDです。
nameStringProject Wayspotの名前です。
imageUrlStringこのProject Wayspotの代表的な画像へのURLです。
titleStringProject Wayspotのタイトルです。
latNumberProject Wayspotの緯度です。
lngNumberProject Wayspotの経度です。

projectwayspotfound: Project Wayspotが最初に見つかったときに発火します。

projectwayspotfound.detail : { name, position, rotation }

プロパティタイプ説明
nameStringProject Wayspotの名前です。
position{x, y, z}配置されたProject Wayspotの3次元位置です。
rotation{w, x, y, z}配置されたProject Wayspotの3次元のローカルの向き(クォータニオン)です。

projectwayspotupdated: Project Wayspotの位置や回転が変化したときに発火します。

projectwayspotupdated.detail : { name, position, rotation }

プロパティタイプ説明
nameStringProject Wayspotの名前です。
position{x, y, z}配置されたProject Wayspotの3次元位置です。
rotation{w, x, y, z}配置されたProject Wayspotの3次元のローカルの向き(クォータニオン)です。

projectwayspotlost: Project Wayspot が追跡されなくなったときに発火します。

projectwayspotlost.detail : { name, position, rotation }

プロパティタイプ説明
nameStringProject Wayspotの名前です。
position{x, y, z}配置されたProject Wayspotの3次元位置です。
rotation{w, x, y, z}配置されたProject Wayspotの3次元のローカルの向き(クォータニオン)です。

例)パイプラインモジュールの追加

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

例)ディスパッチされたイベント

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