Passer au contenu principal

XR8.Babylonjs.faceCameraBehavior()

XR8.Babylonjs.faceCameraBehavior(config, faceConfig)

Description

Obtenez un comportement qui peut être attaché à une caméra Babylon comme suit : camera.addBehavior(XR8.Babylonjs.faceCameraBehavior())

Paramètres

ParamètresDescription
config [Optionnel]Paramètres de configuration à transmettre à XR8.run()
faceConfig [Facultatif]Paramètres de configuration du visage à transmettre à XR8.FaceController

config [Facultatif] est un objet avec les propriétés suivantes :

PropriétéTypeDéfautDescription
webgl2 [Facultatif]BooléenfauxSi vrai, utilisez WebGL2 si disponible, sinon utilisez WebGL1. Si faux, utilisez toujours WebGL1.
ownRunLoop [Facultatif]BooléenvraiSi c'est le cas, XR doit utiliser sa propre boucle d'exécution. Si c'est faux, vous fournirez votre propre boucle d'exécution et serez responsable de l'appel à runPreRender et runPostRender vous-même [Utilisateurs avancés uniquement]
cameraConfig : {direction} [Facultatif]Objet{direction: XR8.XrConfig.camera().BACK}Appareil photo souhaité. Les valeurs prises en charge pour la direction `sontXR8.XrConfig.camera().BACKouXR8.XrConfig.camera().FRONT`
glContextConfig [Facultatif]WebGLContextAttributesnulLes attributs permettant de configurer le contexte du support WebGL.
allowedDevices [Facultatif]XR8.XrConfig.device()XR8.XrConfig.device().MOBILESpécifiez la classe d'appareils sur lesquels le pipeline doit fonctionner. Si l'appareil actuel ne fait pas partie de cette classe, l'exécution échouera avant l'ouverture de la caméra. Si allowedDevices est XR8.XrConfig.device().ANY, ouvrez toujours la caméra. Notez que le suivi du monde ne peut être utilisé qu'avec XR8.XrConfig.device().MOBILE.

faceConfig [Optional] est un objet ayant les propriétés suivantes :

ParamètresDescription
nearClip [Facultatif]Distance entre la caméra et le plan du clip le plus proche. Par défaut, il utilisera le Babylon camera.minZ
farClip [Facultatif]Distance entre la caméra et le plan du clip le plus éloigné. Par défaut, il utilisera le Babylon camera.maxZ
meshGeometry [Optionnel]Liste contenant les parties de la géométrie de la tête qui sont visibles. Les options sont les suivantes : [XR8.FaceController.MeshGeometry.FACE, XR8.FaceController.MeshGeometry.EYES, XR8.FaceController.MeshGeometry.MOUTH, XR8.FaceController.MeshGeometry.IRIS]. La valeur par défaut est [XR8.FaceController.MeshGeometry.FACE]
maxDetections [Facultatif]Nombre maximal de visages à détecter. Les choix possibles sont 1, 2 ou 3. La valeur par défaut est 1.
uvType [Facultatif]Spécifie quels uv sont renvoyés dans l'événement de scan des visages et de chargement des visages. Les options sont les suivantes : [XR8.FaceController.UvType.STANDARD, XR8.FaceController.UvType.PROJECTED]. La valeur par défaut est [XR8.FaceController.UvType.STANDARD].
leftHandedAxes [Facultatif]Si vrai, utilisez des coordonnées pour gaucher.
imageTargets [Facultatif]Si vrai, inverser la gauche et la droite dans la sortie.

Retours

Un comportement Babylon JS qui connecte le moteur Face Effects à la caméra Babylon et démarre l'alimentation et le suivi de la caméra.

Exemple

const startScene = (canvas) => {
const engine = new BABYLON.Engine(canvas, true /* antialias */)
const scene = new BABYLON.Scene(engine)
scene.useRightHandedSystem = false

const camera = new BABYLON.FreeCamera('camera', new BABYLON.Vector3(0, 0, 0), scene)
camera.rotation = new BABYLON.Vector3(0, scene.useRightHandedSystem ? Math.PI : 0, 0)
camera.minZ = 0.0001
camera.maxZ = 10000

// Ajouter une lumière à la scène
const directionalLight =
new BABYLON.DirectionalLight("DirectionalLight", new BABYLON.Vector3(-5, -10, 7), scene)
directionalLight.intensity = 0.5

// Logique du maillage
const faceMesh = new BABYLON.Mesh("face", scene) ;
const material = new BABYLON.StandardMaterial("boxMaterial", scene)
material.diffuseColor = new BABYLON.Color3(173 / 255.0, 80 / 255.0, 255 / 255.0)
faceMesh.material = material

let facePoints = []

const runConfig = {
cameraConfig : {XR8.XrConfig.camera().FRONT},
allowedDevices : XR8.XrConfig.device().ANY,
verbose : true,
}

camera.addBehavior(XR8.Babylonjs.faceCameraBehavior(runConfig)) // Connectez la caméra au XR et affichez le flux de la caméra.

engine.runRenderLoop(() => {
scene.render()
})
}