قالب وردپرس درنا توس
Home / IOS Development / ios – SceneKit selectively color a face by a certain index

ios – SceneKit selectively color a face by a certain index



My objective: given some index in and some UIColor c make the face that index turn into that color …

 let vertices = / / all of my vertices in the format of SCNVector3

let vertexSource = SCNGeometrySource (data: verticesData,
                                    semantic: .vertex,
                                    vectorCount: vertices.count,
                                    usesFloatComponents: true,
                                    componentsPerVector: 3,
                                    bytesPerComponent: MemoryLayout  .size,
                                    data offset: 0,
                                    dataStride: MemoryLayout  .size)


var colors: [SCNVector3] = vertices.map {SCNVector3 (1
, 1, 1)} // Make it all white color at first colors [10] = SCNVector3 (1, 0, 0) // Pick one at random and make it red let colorSource = SCNGeometrySource (data: NSData (bytes: colors, length: MemoryLayout .size * colors.count) as Data,                                     semantic: .color,                                     vectorCount: colors.count,                                     usesFloatComponents: true,                                     componentsPerVector: 3,                                     bytesPerComponent: MemoryLayout .size,                                     data offset: 0,                                     dataStride: MemoryLayout .size) let elements = SCNGeometryElement (data: NSData (bytes: indices, length: MemoryLayout .size * indices.count) as Data,                                 primitiveType: .polygon,                                 primitiveCount: indices.count / 4,                                 bytesPerIndex: MemoryLayout .size) let g = SCNGeometry (sources: [vertexSource, colorSource]elements: [element])

My 3D object renders correctly. It is all white color, as expected. The red face, however, doesn't appear. I see a hint of red, but it looks like SceneKit is trying to color around the vertices rather than the face those vertices form. How can I force it to just the color / face created by those vertices? Thanks!


Source link