@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
39 lines (38 loc) • 1.3 kB
JavaScript
;
import { computerVisionValidSource } from "../../core/computerVision/Common";
import { CoreComputerVisionFace } from "../../core/computerVision/face/CoreComputerVisionFace";
import { dummyReadRefVal } from "../../core/reactivity/CoreReactivity";
import { touchTrackedObject, getOrCreateTrackedObjectRef } from "../../core/reactivity/TrackingReactivity";
import { ObjectNamedFunction1, ObjectNamedFunction2 } from "./_Base";
export class trackFace extends ObjectNamedFunction1 {
static type() {
return "trackFace";
}
func(object3D, texture) {
if (!texture) {
return;
}
const source = computerVisionValidSource(texture);
if (!source) {
return;
}
CoreComputerVisionFace.trackMedia(object3D, source);
touchTrackedObject(object3D);
}
}
export class trackFaceGetLandmarks extends ObjectNamedFunction2 {
static type() {
return "trackFaceGetLandmarks";
}
func(object3D, faceIndex, target) {
dummyReadRefVal(getOrCreateTrackedObjectRef(this.timeController, object3D).value);
const results = CoreComputerVisionFace.trackerResults(object3D);
const vectorArray = results[faceIndex].multiFaceLandmarks;
let i = 0;
for (let src of vectorArray) {
target[i].copy(src);
i++;
}
return target;
}
}