Skip to content

FacePointPlugin

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 FacePointPlugin 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.

new FacePointPlugin(shapeScale): FacePointPlugin

Constructor

boolean = false

Tune scale according to shape of the face

FacePointPlugin

BabylonPlugin.constructor

protected facePoint: number = 0

Index of face vertex


loaded: boolean

Loaded state

BabylonPlugin.loaded


protected optional node: TransformNode

Attached scene node


ordinal: number

Ordinal number

BabylonPlugin.ordinal


protected optional renderer: Renderer<FaceResult>

Renderer loaded the plugin

BabylonPlugin.renderer


protected optional scene: Scene

Reference to a scene instance

BabylonPlugin.scene


protected shapeScale: boolean = false

Tune scale according to shape of the face

dispose(): void

Dispose video plugin

void

BabylonPlugin.dispose


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.

Renderer<FaceResult>

Renderer this plugin is attached to

Promise<void>

Promise resolving when initialization is finished

BabylonPlugin.load


setNode(node?, facePoint?): void

Set/attach a scene node

TransformNode

Scene node to attach

number = 0

void


setupCamera(ratio, angle): void

Set camera parameters

Could be overridden to adjust plugin’s pipeline.

number

Aspect ration of input video

number

Vertical field of view in radians

void

BabylonPlugin.setupCamera


setupVideo(size): void

Set video size

Could be overridden to adjust plugin’s pipeline.

Size

Resolution of input video

void

BabylonPlugin.setupVideo


unload(): void

Reset plugin

Releases all resources allocated in load(). Deletes cached reference to the scene object.

void

BabylonPlugin.unload


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.

FaceResult

Results of video processing

HTMLCanvasElement

Captured video frame

Promise<void>

Promise resolving when update is finished

BabylonPlugin.update