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

xrfaceupdated

説明

このイベントは、xrface によって顔の追跡が終了したときに発生します。

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

プロパティ説明
id位置する面の数値ID。
transform: {position, rotation, scale, scaledWidth, scaledHeight, scaledDepth}位置する面のトランスフォーム情報。
vertices: [{x, y, z}]transformに対する相対的なフェイス・ポイントの位置。
normals: [{x, y, z}]transformに対する相対な頂点の法線方向。
attachmentPoints: { name, position: {x,y,z} }使用可能なアタッチメントポイントの一覧は XR8.FaceController.AttachmentPoints をご参照ください。 position は、トランスフォームからの相対位置です。
uvsInCameraFrame [{u, v}]返された頂点に対応するカメラフレーム内のuv位置のリスト。

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

プロパティ説明
position {x, y, z}配置された顔の3次元位置。
rotation {w, x, y, z}配置された顔の3Dローカル方向。
scaleこの顔に付けられたオブジェクトに適用されるスケール係数。
scaledWidthシーンにスケールを掛けたときの頭のおおよその幅です。
scaledHeightシーンにスケールを掛けたときの頭のおおよその高さです。
scaledDepthシーンにスケールを掛けたときの頭のおおよその奥行き。

const faceRigidComponent = {
init: function () {
const object3D = this.el.object3D
object3D.visible = false
const show = ({detail}) => {
const {position, rotation, scale} = detail.transform
object3D.position.copy(position)
object3D.quaternion.copy(rotation)
object3D.scale.set(scale, scale, scale)
object3D.visible = true
}
const hide = ({detail}) => { object3D.visible = false }
this.el.sceneEl.addEventListener('xrfacefound', show)
this.el.sceneEl.addEventListener('xrfaceupdated', show)
this.el.sceneEl.addEventListener('xrfacelost', hide)
}
}