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の射影変換行列です。 |
trackingStatus | String | 'LIMITED' または 'NORMAL' のいずれかです。 |
trackingReason | String | 'UNSPECIFIED' または'INITIALIZING' のいずれかです。 |
worldPoints | [{id, confidence, position: {x, y, z}}] | シーン内の場所で検出されたワールドの検出座標の配列です。 XrController がワールド座標を返すように設定され、かつtrackingReason != 'INITIALIZING' の場合にのみ満たされます。 |
realityTexture | WebGLTexture | カメラフィードデータを含むテクスチャーです。 |
lighting | {exposure, temperature} | 環境中の照明の露出です。 注: temperature は未実装です。 |
ディスパッチされたイベント
trackingStatus: XrController
が起動し、トラッキングの状態や理由が変化したときに発火します。
reality.trackingstatus : { status, reason }
プロパティ | タイプ | 説明 |
---|---|---|
status | String | 'LIMITED' または'NORMAL' のいずれかです。 |
reason | String | 'INITIALIZING' または'UNDEFINED' のいずれかです。 |
imageloading: 検出画像の読み込 みが開始したときに発火します。
imageloading.detail : { imageTargets: {name, type, metadata} }
プロパティ | タイプ | 説明 |
---|---|---|
name | String | 画像の名前です。 |
type | String | 'FLAT' , 'CYLINDRICAL' , 'CONICAL' のうちの1つです。 |
metadata | Object | ユーザーのメタデータです。 |
imagescanning: すべての検出画像が読み込まれ、スキャンが開始したときに発火します。
imagescanning.detail : { imageTargets: {name, type, metadata, geometry} }
プロパティ | タイプ | 説明 |
---|---|---|
name | String | 画像の名前です。 |
type | String | 'FLAT' , 'CYLINDRICAL' , 'CONICAL' のうちの1つです。 |
metadata | Object | ユーザーのメタデータです。 |
geometry | Object | ジオメトリデータを含むオブジェクトです。 type=FLAT の場合: {scaledWidth, scaledHeight} , lse type=CYLINDRICALまたはtype=CONICALの場合:{height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians} |
type = FLAT
の場合、ジオメトリは以下の通りです。
プロパティ | タイプ | 説明 |
---|---|---|
scaledWidth | Number | スケールによって乗算された時の、シーン内の画像の幅の値です。 |
scaledHeight | Number | スケールによって乗算された時の、シーン内の画像の高さの値です。 |
type= CYLINDRICAL
またはCONICAL
の場合、ジオメトリは以下の通りです。
プロパティ | タイプ | 説明 |
---|---|---|
height | Number | 曲面ターゲットの高さです。 |
radiusTop | Number | 曲面ターゲットの上部の半径です。 |
radiusBottom | Number | 曲面ターゲットの下部の半径です。 |
arcStartRadians | Number | 開始角度(ラジアン単位)です。 |
arcLengthRadians | Number | 中心角(ラジアン単位)です。 |
imagefound: イメージ・ターゲットが最初に見つかったときに発火します。
imagefound.detail : { name, type, position, rotation, scale, scaledWidth, scaledHeight, height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians }
プロパティ | タイプ | 説明 |
---|---|---|
name | String | 画像の名前です。 |
type | Number | 'FLAT' , 'CYLINDRICAL' , 'CONICAL' のうちの1つです。 |
position | {x, y, z} | 配置された画像の3次元位置です。 |
rotation | {w, x, y, z} | 配置された画像の3次元のローカルの向きです。 |
scale | Number | この画像に付随するオブジェク トに適用されるスケール係数です。 |
type = FLAT
の場合:
プロパティ | タイプ | 説明 |
---|---|---|
scaledWidth | Number | スケールを掛けた時のシーン内の画像の幅の値です。 |
scaledHeight | Number | スケールを掛けた時のシーン内の画像の高さの値です。 |
type= CYLINDRICAL
またはCONICAL
の場合:
プロパティ | タイプ | 説明 |
---|---|---|
height | Number | 曲面ターゲットの高さです。 |
radiusTop | Number | 曲面ターゲットの上部の半径です。 |
radiusBottom | Number | 曲面ターゲットの下部の半径です。 |
arcStartRadians | Number | 開始角度(ラジアン単位)です。 |
arcLengthRadians | Number | 中心角(ラジアン単位)です。 |
imageupdated: イメージ・ターゲットの位置、回転、スケールが変化したときに発火します。
imageupdated.detail : { name, type, position, rotation, scale, scaledWidth, scaledHeight, height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians }
プロパティ | タイプ | 説明 |
---|---|---|
name | String | 画像の名前です。 |
type | Number | 'FLAT' , 'CYLINDRICAL' , 'CONICAL' のうちの1つです。 |
position | {x, y, z} | 配置された画像の3次元位置です。 |
rotation | {w, x, y, z} | 配置された画像の3次元のローカルの向きです。 |
scale | Number | この画像に付随するオブジェクトに適用されるスケール係数です。 |
type = FLAT
の場合:
プロパティ | タイプ | 説明 |
---|---|---|
scaledWidth | Number | スケールによって乗算された時の、シーン内の画像の幅の値です。 |
scaledHeight | Number | スケールによって乗算された時の、シーン内の画像の高さの値です。 |
type= CYLINDRICAL
またはCONICAL
の場合:
プロパティ | タイプ | 説明 |
---|---|---|
height | Number | 曲面ターゲットの高さです。 |
radiusTop | Number | 曲面ターゲットの上部の半径です。 |
radiusBottom | Number | 曲面ターゲットの下部の半径です。 |
arcStartRadians | Number | 開始角度(ラジアン単位)です。 |
arcLengthRadians | Number | 中心角(ラジアン単位)です。 |
imagelost: イメージ・ターゲットが追跡されなくなったときに発火します。
imagelost.detail : { name, type, position, rotation, scale, scaledWidth, scaledHeight, height, radiusTop, radiusBottom, arcStartRadians, arcLengthRadians }
プロパティ | タイプ | 説明 |
---|---|---|
name | String | 画像の名前です。 |
type | Number | 'FLAT' , 'CYLINDRICAL' , 'CONICAL' のうちの1つです。 |
position | {x, y, z} | 配置された画像の3次元位置です。 |
rotation | {w, x, y, z} | 配置された画像の3次元のローカルの向きです。 |
scale | Number | この画像に付随するオブジェクトに適用されるスケール係数です。 |
type = FLAT
の場合:
プロパティ | タイプ | 説明 |
---|---|---|
scaledWidth | Number | スケールによって乗算された時の、シーン内の画像の幅の値です。 |
scaledHeight | Number | スケールによって乗算された時の、シーン内の画像の高さの値です。 |
type= CYLINDRICAL
またはCONICAL
の場合:
プロパティ | タイプ | 説明 |
---|---|---|
height | Number | 曲面ターゲットの高さです。 |
radiusTop | Number | 曲面ターゲットの上部の半径です。 |
radiusBottom | Number | 曲面ターゲットの下部の半径です。 |
arcStartRadians | Number | 開始角度(ラジアン単位)です。 |
arcLengthRadians | Number | 中心角(ラジアン単位)です。 |
meshfound: 開始後ま たはrecenter()後に、メッシュが初めて見つかったときに発火します。
xrmeshfound.detail : { id, position, rotation, geometry }
プロパティ | タイプ | 説明 |
---|---|---|
id | String | セッション内で安定している、このメッシュのIDです。 |
position | {x, y, z} | 配置されたメッシュの3次元位置です。 |
rotation | {w, x, y, z} | 配置されたメッシュの3次元のローカルの向き(クォータニオン)です。 |
geometry | {index, attributes} | 生メッシュのジオメトリデータを含むオブジェクトです。 属性には、位置と色の属性が含まれます。 |
geometry
は、次のプロパティを持つオブジェクトです。
プロパティ | タイプ | 説明 |
---|---|---|
index | Uint32Array | メッシュの頂点で、連続する3つの頂点が三角形を構成しているものです。 |
attributes | [{name: 'position', array: Float32Array(), itemSize: 3}, {name: 'color', array: Float32Array(), itemSize: 3}] | 生のメッシュジオメトリデータです。 |
meshupdated: 最初に見つけたメッシュの位置や回転が変わったときに発火します。
meshupdated.detail : { id, position, rotation }
プロパティ | タイプ | 説明 |
---|---|---|
id | String | セッション内で安定している、このメッシュのIDです。 |
position | {x, y, z} | 配置された画像の3次元位置です。 |
rotation | {w, x, y, z} | 配置されたメッシュの3次元のローカルの向き(クォータニオン)です。 |
meshlost: recenterが呼ばれたときに発火します。
xrmeshlost.detail : { id }
プロパティ | タイプ | 説明 |
---|---|---|
id | String | セッション内で安定している、このメッシュのIDです。 |
projectwayspotscanning: すべてのProject Wayspotがスキャン用に読み込まれたときに発火します。
projectwayspotscanning.detail : { wayspots: [] }
プロパティ | タイプ | 説明 |
---|---|---|
wayspots | [Object] | Wayspot情報を含む配列オブジェクトです。 |
wayspots
は、以下のプロパティを持つオブジェクトの配列です。
プロパティ | タイプ | 説明 |
---|---|---|
id | String | セッション内で安定したこのProject WayspotのIDです。 |
name | String | Project Wayspotの名前です。 |
imageUrl | String | このProject Wayspotの代表的な画像へのURLです。 |
title | String | Project Wayspotのタイトルです。 |
lat | Number | Project Wayspotの緯度です。 |
lng | Number | Project Wayspotの経度です。 |
projectwayspotfound: Project Wayspotが最初に見つかったときに発火します。
projectwayspotfound.detail : { name, position, rotation }
プロパティ | タイプ | 説明 |
---|---|---|
name | String | Project Wayspotの名前です。 |
position | {x, y, z} | 配置されたProject Wayspotの3次元位置です。 |
rotation | {w, x, y, z} | 配置されたProject Wayspotの3次元のローカルの向き(クォータニオン)です。 |
projectwayspotupdated: Project Wayspotの位置や回転が変化したときに発火します。
projectwayspotupdated.detail : { name, position, rotation }
プロパティ | タイプ | 説明 |
---|---|---|
name | String | Project Wayspotの名前です。 |
position | {x, y, z} | 配置されたProject Wayspotの3次元位置です。 |
rotation | {w, x, y, z} | 配置されたProject Wayspotの3次元のローカルの向き(クォータニオン)です。 |
projectwayspotlost: Project Wayspot が追跡されなくなったときに発火します。
projectwayspotlost.detail : { name, position, rotation }
プロパティ | タイプ | 説明 |
---|---|---|
name | String | Project 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},
],
})