创建自定义SCNGeometry多边形

时间:2019-03-24 16:14:25

标签: ios objective-c swift xcode arkit

我正在尝试创建一个自定义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情况存在问题的信念。

1 个答案:

答案 0 :(得分:0)

使用多边形时,必须使用

  init(data: Data?, primitiveType: SCNGeometryPrimitiveType, primitiveCount: Int, bytesPerIndex: Int)

初始化SCNGeometryElement。有关详细信息,请参阅Apple文档。