我试图在屏幕上叠加 ARFaceAnchor 顶点以完成两个场景 1) 有一个虚拟人脸保持在中心(屏幕上)位置,但反映几何体的变化。顶点 2)让虚拟人脸与实际人脸重叠(来自预览层) .
我在这里遵循了Rickster 的建议,但只成功地从屏幕上的某些角度投影了脸部(仅出现在左下方并旋转)。我不太熟悉每个矩阵的不同目的,但这是我到目前为止所得到的。有什么建议吗?
let modelMatrix = faceAnchor.transform
var points: [CGPoint] = []
faceAnchor.geometry.vertices.forEach {
// Convert the vertex position from model space to camera space (use the anchor’s transform)
let vertex4 = vector_float4($0.x, $0.y, $0.z, 1)
let vertexCamera = simd_mul(modelMatrix, vertex4)
// Multiply with the camera projection with that vector to get to normalized image coordinates
let normalizedImageCoordinates = simd_mul(projectionMatrix, vertexCamera)
let point = CGPoint(x: CGFloat(normalizedImageCoordinates.x), y: CGFloat(normalizedImageCoordinates.y))
points.append(point)
}
Run Code Online (Sandbox Code Playgroud)