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

BabylonJS Observables

Image Target Observables

onXrImageLoadingObservable: 検出画像の読み込みが始まると発生します。

onXrImageLoadingObservable : { imageTargets: {name, type, metadata} }

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

onXrImageScanningObservable : { imageTargets: {name, type, metadata, geometry} }

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

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

onXrImageUpdatedObservable: イメージ・ターゲットが位置、回転、スケールを変更したときに発生します。

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

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

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

Face Effects Observables

onFaceLoadingObservable: 追加の顔ARリソースのロードが開始されたときに発生します。

onFaceLoadingObservable : {maxDetections, pointsPerDetection, indices, uvs}

onFaceScanningObservable: 全ての顔ARリソースがロードされ、スキャンが開始されたときに発生します。

onFaceScanningObservable: {maxDetections, pointsPerDetection, indices, uvs}

onFaceFoundObservable: 顔が最初に見つかったときに発生します。

onFaceFoundObservable : {id, transform, attachmentPoints, vertices, normals, uvsInCameraFrame}

onFaceUpdatedObservable: その後、顔が見つかったときに発生します。

onFaceUpdatedObservable : {id, transform, attachmentPoints, vertices, normals, uvsInCameraFrame}

onFaceLostObservable: 顔が追跡されなくなったときに発生します。

onFaceLostObservable : {id}

onMouthOpenedObservable: トラッキングされた顔の口が開いたときに発生します。

onMouthOpenedObservable : {id}

onMouthClosedObservable: トラッキングされた顔の口が閉じたときに発生します。

onMouthClosedObservable : {id}

onLeftEyeOpenedObservable: トラッキングした顔の左目が開いたときに発生します。

onLeftEyeOpenedObservable : {id}

onLeftEyeClosedObservable: トラッキングした顔の左目が閉じたときに発生します。

onLeftEyeClosedObservable : {id}

onRightEyeOpenedObservable: トラッキングされた顔の右目が開いたときに発生します。

onRightEyeOpenedObservable : {id}

onRightEyeClosedObservable: トラッキングされた顔の右目が閉じたときに発生します。

onRightEyeClosedObservable : {id}

onLeftEyebrowRaisedObservable: 追跡された顔の左眉が、顔を発見したときの初期位置から上がったときに発生します。

onLeftEyebrowRaisedObservable : {id}

onLeftEyebrowLoweredObservable: 追跡された顔の左眉が、顔を見つけたときの初期位置まで下がったときに発生します。

onLeftEyebrowLoweredObservable : {id}

onRightEyebrowRaisedObservable: 追跡された顔の右眉が、顔を発見したときの位置から上がったときに発生します。

onRightEyebrowRaisedObservable : {id}

onRightEyebrowLoweredObservable: トラッキングされた顔の右眉が、顔を発見したときの初期位置まで下がったときに発生します。

onRightEyebrowLoweredObservable : {id}

onLeftEyeWinkedObservable: 追跡された顔の左目が750ms以内に閉じたり開いたりしたとき、右目が開いたままである場合に発生します。

onLeftEyeWinkedObservable : {id}

onRightEyeWinkedObservable: 追跡された顔の右目が閉じたり開いたりした後、左目が開いたまま750ms以内に開いたときに発生します。

onRightEyeWinkedObservable : {id}

onBlinkedObservable: トラッキングされた顔の目が瞬きしたときに発生します。

onBlinkedObservable : {id}

onInterPupillaryDistanceObservable: 追跡された顔の各瞳孔の中心間の距離をミリメートル単位で初めて検出したときに発生します。

onInterPupillaryDistanceObservable : {id, interpupillaryDistance}

イメージ・ターゲットの例

scene.onXrImageUpdatedObservable.add(e => {
target.position.copyFrom(e.position)
target.rotationQuaternion.copyFrom(e.rotation)
target.scaling.set(e.scale, e.scale, e.scale)
})

フェイス・エフェクトの例

// これは最初に顔が見つかったときに呼び出されます。  UV やインデックスなど
// 顔に関する静的情報を提供します
scene.onFaceLoadingObservable.add((event) => {
const {indices, maxDetections, pointsPerDetection, uvs} = event

// Babylonは、すべての頂点データが数字のフラットリストであることを想定しています
facePoints = Array(pointsPerDetection)
for (let i = 0; i < pointsPerDetection; i++) {
const facePoint = BABYLON.MeshBuilder.CreateBox("box", {size: 0.02}, scene)
facePoint.material = material
facePoint.parent = faceMesh
facePoints[i] = facePoint
}
})

// これは、フレーム単位で顔が更新されるたびに呼び出されます
scene.onFaceUpdatedObservable.add((event) => {
const {vertices, normals, transform} = event;
const {scale, position, rotation} = transform

vertices.map((v, i) => {
facePoints[i].position.x = v.x
facePoints[i].position.y = v.y
facePoints[i].position.z = v.z
})

faceMesh.scalingDeterminant = scale
faceMesh.position = position
faceMesh.rotationQuaternion = rotation
})