Извлечение информации о лицах из SCNGeometry в SceneKit

Я хочу извлекать информацию о гранях из геометрии SCNNode точно так же, как мы можем извлекать информацию о вершинах из геометрических источников. Есть идеи, как этого можно достичь?

1 ответ

Если у вас есть объект SCNGeometry (который можно получить из SCNNode с node.geometry) тогда вы можете посмотреть на elements свойство, которое будет содержать информацию о лице в виде массива объектов SCNGeometryElement.

например, если вам нужен только первый элемент

      let element = geometry.elements[0]
let faces = element.data.withUnsafeBytes {(ptr: UnsafeRawBufferPointer) -> [Int32] in
    guard let boundPtr = ptr.baseAddress?.assumingMemoryBound(to: Int32.self) else {return []}
    let buffer = UnsafeBufferPointer(start: boundPtr, count: element.data.count / 4)
    return Array<Int32>(buffer)
}
print(faces)

В зависимости от element.primitiveTypeвам нужно будет интерпретировать индексы по-разному. См. Документацию для SCNGeometryPrimitiveType.

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