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