Как отобразить / определить индекс вершины в ARSCNFaceGeometry?

Я хочу получить индекс конкретной вершины в сетке ARSCNFaceGeometry,

Я пытался добавить SCNText к вершине, которая отображает индекс вершины:

// Create face node
let faceNode = SCNNode(geometry: geometry) // geometry is the ARSCNFaceGeometry

// Get vertices of face node
let vertices = ...

// For each vertex
vertices.enumerated().forEach({ (index, vertex) in

    // Create text geometry
    let textGeometry = SCNText(string: text, extrusionDepth: 1)
    textGeometry.firstMaterial?.diffuse.contents = UIColor.black

    // Create text node
    let textNode = SCNNode(geometry: textGeometry)
    textNode.scale = SCNVector3(0.0002, 0.0002, 0.0002)
    textNode.position = SCNVector3(vertex.x, vertex.y, vertex.z)

    // Add text node to face mask node
    faceNode.addChildNode(textNode)
})

Но результат в Xcode Scene Editor состоит в том, что некоторые текстовые узлы расположены правильно, другие разбросаны повсюду:

введите описание изображения здесь

Почему текстовые узлы расположены так?

Есть ли другой способ получить индексы вершин?

Обновить:

Я пытался добавить SCNBox к каждой вершине:

let box = SCNBox(width: 0.005, height: 0.005, length: 0.005, chamferRadius: 0)
box.firstMaterial?.multiply.contents = UIColor.blue
let boxNode = SCNNode(geometry: box)
boxNode = vertex
faceNode.addChildNode(boxNode)

Результат показывает, что даже положения ящиков неправильны. Итак, как я могу использовать вершину, чтобы расположить каждый прямоугольник по центру в точке сетки?

введите описание изображения здесь

1 ответ

То, как я получил вершины из сетки лица, было неверным. Я использую этот ответ сейчас, чтобы извлечь вершины, и это работает.

Другие вопросы по тегам