A geometria SceneKit personalizada no Swift no iOS não funciona, mas o código Objective C equivalente funciona
Estou interessado em adotar a nova linguagem Swift, pois esse parece ser o caminho a seguir no desenvolvimento da Apple. Também fiquei impressionado com o novo suporte ao SceneKit no iOS 8. Gostaria de criar programaticamente geometria personalizada em tempo de execução, mas estou lutando para que o código Swift funcione. No entanto, o código equivalente no Objetivo C funciona bem.
Isso pode ser um bug ou algo que estou fazendo de errado.
Estou simplesmente tentando criar e renderizar um único triângulo. Eu vou ignorar as normais e texturas etc, neste ponto, por simplicidade. Então, eu só estou esperando ver um triângulo preto.
Código Swift (não está funcionando)
var verts = [SCNVector3(x: 0,y: 0,z: 0),SCNVector3(x: 1,y: 0,z: 0),SCNVector3(x: 0,y: 1,z: 0)]
let src = SCNGeometrySource(vertices: &verts, count: 3)
let indexes:Int[]=[0,1,2]
let dat = NSData(bytes: indexes, length: sizeofValue(indexes))
let ele = SCNGeometryElement(data:dat, primitiveType: .Triangles, primitiveCount: 1, bytesPerIndex: sizeof(Int))
let geo = SCNGeometry(sources: [src], elements: [ele])
let nd = SCNNode(geometry: geo)
scene.rootNode.addChildNode(nd)
Código do objetivo C (que funciona)
SCNVector3 verts[] = { SCNVector3Make(0, 0, 0), SCNVector3Make(1, 0, 0), SCNVector3Make(0, 1, 0) };
SCNGeometrySource *src = [SCNGeometrySource geometrySourceWithVertices:verts count:3];
int indexes[] = { 0, 1, 2 };
NSData *datIndexes = [NSData dataWithBytes:indexes length:sizeof(indexes)];
SCNGeometryElement *ele = [SCNGeometryElement geometryElementWithData:datIndexes primitiveType:SCNGeometryPrimitiveTypeTriangles primitiveCount:1 bytesPerIndex:sizeof(int)];
SCNGeometry *geo = [SCNGeometry geometryWithSources:@[src] elements:@[ele]];
SCNNode *nd = [SCNNode nodeWithGeometry:geo];
d
[scene.rootNode addChildNode:nd];
Qualquer ponteiro seria apreciado.