Я пытаюсь наложить вершины ARFaceAnchor на экран, чтобы выполнить два сценария: 1) сохранить виртуальное лицо в центре (на экране), но отразить изменения в геометрии. вершины 2) виртуальное лицо перекрывает фактическое лицо (из предварительного слоя) .
Я последовал совету Рикстера здесь, но удалось спроецировать лицо только под определенными углами на экране (появляется только внизу слева и вращается). Я не слишком хорошо знаком с различными целями каждой матрицы, но это то, чего я достиг. Любой совет?
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)
}