Я пытаюсь создать собственный класс SCNPlane , который может иметь форму любого многоугольника, поскольку обычный SCNPlane может быть только прямоугольником.
Я попытался сделать это, расширив SCNGeometry .Ниже приведен код, который я использую:
extension SCNGeometry {
static func polygonPlane(vertices: [SCNVector3]) -> SCNGeometry {
let src = SCNGeometrySource(vertices: vertices)
var indices: [UInt32] = []
var index: UInt32 = 0
for _ in vertices {
indices.append(index)
index += 1
}
let inds = SCNGeometryElement(indices: indices, primitiveType: .polygon)
return SCNGeometry(sources: [src], elements: [inds])
}
}
Как вы можете видеть, метод принимает в качестве входных данных массив вершин, и я хочу соединить их, чтобы создать плоскость с заданной геометрией, используя вершиныпредоставлена.
При использовании SCNGeometryPrimitiveType.polygon , как и в приведенном выше коде, я получаю странную ошибку: «Поток 1: EXC_BREAKPOINT (код = 1, субкод = 0x106362e20)».Кажется, что функциональность для этого случая не реализована в Swift, но что это для Objective-C?Можно ли как-нибудь использовать это?
Я также пытался использовать другие параметры для primitiveType-value, и при использовании этих значений не происходит сбоев, что еще больше укрепляет мою уверенность в том, что что-то не так с.polygon case.