Spark AR 上的二维人脸追踪

2D face tracking on Spark AR

我一直在尝试使 2D 中的面部纹理 canvas/plane 仅沿 X/Y 轴移动,跟随面部的移动而不旋转,并反映 2D 背景相机纹理准确地在上面。现在,当我将 canvas 连接到面部跟踪器时,我得到了扭曲的比例,并且 2D 平面在 3D space 中旋转。请参阅下面的当前 canvas/camera texture/face 跟踪器设置。手动缩放导致跟踪不佳。

这是我的代码:

const FaceTracking = require('FaceTracking')
const Scene = require('Scene')

export const Diagnostics = require('Diagnostics');

// Locate the plane in the Scene
// Enable async/await in JS [part 1]
(async function () {
  const [plane] = await Promise.all([
    Scene.root.findFirst('blur_plane')
  ])

  // Store a reference to a detected face
  const face = FaceTracking.face(0)

  // To access scene objects
  const planeTransform = plane.transform
  const faceTransform = face.cameraTransform
  // const blurCanvas = Scene.root.find('canvas0');

  // To access class properties
  planeTransform.rotationX = faceTransform[0]
  planeTransform.rotationY = faceTransform[0]
  planeTransform.rotationZ = faceTransform[0]
})()

这是当前的外观: 我希望 375x667px canvas 看起来完全像它下面的相机层,这样如果不调整相机纹理,该层就不会可见。

事实证明 Facebook 有一个处理 2D 运动但不处理缩放的示例: https://sparkar.facebook.com/ar-studio/learn/reference/classes/facetrackingmodule