forked from powermobileweb/ARFaceFilter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
demo.js
executable file
·72 lines (61 loc) · 2.4 KB
/
demo.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
"use strict";
// SETTINGS of this demo :
const SETTINGS = {
rotationOffsetX: 0, // negative -> look upper. in radians
cameraFOV: 40, // in degrees, 3D camera FOV
pivotOffsetYZ: [0.2,0.2], // XYZ of the distance between the center of the cube and the pivot
detectionThreshold: 0.75, // sensibility, between 0 and 1. Less -> more sensitive
detectionHysteresis: 0.05,
scale: 1 // scale of the 3D cube
};
let THREECAMERA;
// callback : launched if a face is detected or lost. TODO : add a cool particle effect WoW !
function detect_callback(isDetected) {
if (isDetected) {
console.log('INFO in detect_callback() : DETECTED');
} else {
console.log('INFO in detect_callback() : LOST');
}
}
// build the 3D. called once when Jeeliz Face Filter is OK
function init_threeScene(spec) {
spec.threejsCanvasId='threejsCanvas'; //enable 2 canvas mode
const threeStuffs = THREE.JeelizHelper.init(spec, detect_callback);
// CREATE A CUBE
const cubeGeometry = new THREE.BoxGeometry(1,1,1);
const cubeMaterial = new THREE.MeshNormalMaterial();
const threeCube = new THREE.Mesh(cubeGeometry, cubeMaterial);
threeCube.frustumCulled = false;
threeStuffs.faceObject.add(threeCube);
//CREATE THE CAMERA
const aspecRatio=spec.canvasElement.width / spec.canvasElement.height;
THREECAMERA=new THREE.PerspectiveCamera(20, aspecRatio, 0.1, 100);
} // end init_threeScene()
//launched by body.onload() :
function main(){
JeelizResizer.size_canvas({
canvasId: 'jeeFaceFilterCanvas',
callback: function(isError, bestVideoSettings){
init_faceFilter(bestVideoSettings);
}
})
} //end main()
function init_faceFilter(videoSettings){
JEEFACEFILTERAPI.init({
canvasId: 'jeeFaceFilterCanvas',
NNCpath: '../../../dist/', // root of NNC.json file
maxFacesDetected: 1,
callbackReady: function(errCode, spec){
if (errCode){
console.log('AN ERROR HAPPENS. ERR =', errCode);
return;
}
console.log('INFO : JEEFACEFILTERAPI IS READY');
init_threeScene(spec);
}, //end callbackReady()
//called at each render iteration (drawing loop) :
callbackTrack: function(detectState){
THREE.JeelizHelper.render(detectState, THREECAMERA);
} //end callbackTrack()
}); //end JEEFACEFILTERAPI.init call
} // end main()