Extracting vertices from scenekit

后端 未结 7 428
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-03 01:42

I\'m having a problem with understanding scenekit geometery.

I have the default cube from Blender, and I export as collada (DAE), and can bring it into scenekit....

7条回答
  •  [愿得一人]
    2020-12-03 02:08

    The Swift 3 version:

        // `plane` is some kind of `SCNGeometry`
    
        let planeSources = plane.geometry.sources(for: SCNGeometrySource.Semantic.vertex)
        if let planeSource = planeSources.first {
            let stride = planeSource.dataStride
            let offset = planeSource.dataOffset
            let componentsPerVector = planeSource.componentsPerVector
            let bytesPerVector = componentsPerVector * planeSource.bytesPerComponent
    
            let vectors = [SCNVector3](repeating: SCNVector3Zero, count: planeSource.vectorCount)
            let vertices = vectors.enumerated().map({
                (index: Int, element: SCNVector3) -> SCNVector3 in
    
                let vectorData = UnsafeMutablePointer.allocate(capacity: componentsPerVector)
                let nsByteRange = NSMakeRange(index * stride + offset, bytesPerVector)
                let byteRange = Range(nsByteRange)
    
                let buffer = UnsafeMutableBufferPointer(start: vectorData, count: componentsPerVector)
                    planeSource.data.copyBytes(to: buffer, from: byteRange)
                let vector = SCNVector3Make(buffer[0], buffer[1], buffer[2])
            })
    
            // Use `vertices` here: vertices[0].x, vertices[0].y, vertices[0].z
        }
    

提交回复
热议问题