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