Как получить точки в сетке лица, такие как глаз, бровь, губа, рот, нос, используя ARFaceTracking в Swift 4.2?
В настоящее время я получаю очки для левого и правого глаза. Как я могу получить очки для других деталей, используя ARFaceTracking или другую платформу в swift 4 в ios.
пожалуйста, дайте отзыв над вопросами?
2 ответа
Вы можете использовать вершины ARFaceGeometry. Это волшебное число. ARFaceGeometry имеет 1220 вершин и индекс 9 на носу. Это работает.
let vertices = [anchor.geometry.vertices[9]] // nose
// You can use Features Indexes with array
let features = ["nose", "leftEye", "rightEye", "mouth", "hat"]
let featureIndices = [[9], [1064], [42], [24, 25], [20]]
Здесь features - это массив имен узлов, которые вы дали каждому объекту, а featureIndices - это индексы вершин в ARFaceGeometry, которые соответствуют этим объектам. ARFaceAnchor свойство используется.
Вот несколько магических чисел для вас:
let mouthTopLeft = Array(250...256)
let mouthTopCenter = [24]
let mouthTopRight = Array(685...691).reversed()
let mouthRight = [684]
let mouthBottomRight = [682, 683,700,709,710,725]
let mouthBottomCenter = [25]
let mouthBottomLeft = [265,274,290,275,247,248]
let mouthLeft = [249]
let mouthClockwise : [Int] = mouthLeft +
mouthTopLeft + mouthTopCenter +
mouthTopRight + mouthRight +
mouthBottomRight + mouthBottomCenter +
mouthBottomLeft
let eyeTopLeft = Array(1090...1101)
let eyeBottomLeft = Array(1102...1108) + Array(1085...1089)
let eyeTopRight = Array(1069...1080)
let eyeBottomRight = Array(1081...1084) + Array(1061...1068)