我正在尝试创建一个自定义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)”。似乎这种情况的功能并未迅速实现,但它是针对Objective-C的?有什么办法可以利用我吗?
我还尝试将其他选项用于PrimitiveType值,并且使用这些值不会导致崩溃,这进一步证明了我对.polygon情况存在问题的信念。
答案 0 :(得分:0)
使用多边形时,必须使用
init(data: Data?, primitiveType: SCNGeometryPrimitiveType, primitiveCount: Int, bytesPerIndex: Int)
初始化SCNGeometryElement。有关详细信息,请参阅Apple文档。