FaceTrackPlugin
Plugin assigning face point pose to a scene node
Plugin attaches provided node to the face point. Pose of the node (translation + rotation + scale) continuously updates according to pose estimation by @geenee/bodyprocessors!FaceProcessor. Children nodes inherently include this transform. The node can be seen as a virtual placeholder for real object. It’s recommended to attach top-level nodes that don’t include transforms relative to parent, otherwise head transform that is a pose in the world frame will be applied on top of them (will be treated as relative instead of absolute). Optionally anisotropic fine-tuning of the scale can be applied. In this case model will additionally adapt to shape of the face. If face isn’t detected by FaceProcessor plugin recursively hides the node. One of approaches to accurately align meshes with a face point when modeling a scene is to make them children of a node which origin coincide with the corresponding vertex of the reference face mesh, set their relative transforms using base mesh as the reference, then instantiate FaceTrackPlugin for this scene node. You can also apply relative transforms of children of the face-attached parent node programmatically. It’s useful to add occluder model (base mesh of a head) as a child of the node. This can be handy when parts are stored separately.
Extends
Constructors
new FaceTrackPlugin()
new FaceTrackPlugin(
node
,facePoint
,shapeScale
):FaceTrackPlugin
Constructor
Parameters
• node: Object3D
<Object3DEventMap
>
Scene node to attach
• facePoint: number
= 0
Index of the face vertex
• shapeScale: boolean
= false
Tune scale according to shape of the face
Returns
Overrides
Properties
facePoint
protected
facePoint:number
=0
Index of the face vertex
loaded
loaded:
boolean
Loaded state
Inherited from
node
protected
node:Object3D
<Object3DEventMap
>
Scene node to attach
ordinal
ordinal:
number
Ordinal number
Inherited from
renderer?
protected
optional
renderer:Renderer
<FaceResult
>
Renderer loaded the plugin
Inherited from
scene?
protected
optional
scene:Scene
Reference to a scene instance
Inherited from
shapeScale
protected
shapeScale:boolean
=false
Tune scale according to shape of the face
Methods
dispose()
dispose():
void
Dispose video plugin
Returns
void
Inherited from
load()
load(
renderer
):Promise
<void
>
Initialize plugin
Prepares or modifies the attached node if required. Reference to the scene object is cached and used by plugin on update() and unload(). You need to reload plugin if you want to change scene it’s attached to.
Parameters
• renderer: Renderer
<FaceResult
>
Renderer this plugin is attached to
Returns
Promise
<void
>
Promise resolving when initialization is finished
Inherited from
setupCamera()
setupCamera(
ratio
,angle
):void
Set camera parameters
Could be overridden to adjust plugin’s pipeline.
Parameters
• ratio: number
Aspect ration of input video
• angle: number
Vertical field of view in radians
Returns
void
Inherited from
setupVideo()
setupVideo(
size
):void
Set video size
Could be overridden to adjust plugin’s pipeline.
Parameters
• size: Size
Resolution of input video
Returns
void
Inherited from
unload()
unload():
void
Reset plugin
Releases all resources allocated in load(). Deletes cached reference to the scene object.
Returns
void
Inherited from
update()
update(
result
,stream
):Promise
<void
>
Update pose of the model
Updates node’s pose (translation + rotation + scale) according to to the estimation from @geenee/bodyprocessors!FaceProcessor. If face isn’t detected plugin recursively hides the attached node.
Parameters
• result: FaceResult
Results of video processing
• stream: HTMLCanvasElement
Captured video frame
Returns
Promise
<void
>
Promise resolving when update is finished