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

xrfacefound

概要

このイベントは、xrface によって顔が最初に見つかったときに発生します。

xrfacefound.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} }使用可能なattachmentPointsの一覧は XR8.FaceController.AttachmentPoints をご参照ください。 position は、transform からの相対位置です。
uvsInCameraFrame [{u, v}]返された頂点に対応するカメラフレーム内のuv位置のリスト。

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

プロパティ説明
position {x, y, z}位置指定された顔の3次元位置。
rotation {w, x, y, z}位置指定された顔の3次元の局所的な向き。
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)
}
}