2016-08-12 7 views
2

Ich versuche, die Geometrie für jeden Knoten in meiner Szene zu extrahieren. Ich erstelle eine Szene mit einer .obj-Datei und rendert sie perfekt. Ich möchte jedoch die Geometrie von jedem Knoten extrahieren, aber ich stecke fest. Mein Code ist untenGeometrie Informationen aus SCNNode in SceneKit extrahieren

let scn = SCNScene(named: "d.obj") 

    for i in scn!.rootNode.childNodes { 
     for a in i.childNodes { 
      for b in a.childNodes { 
       let element = b.geometry!.geometryElementAtIndex(0) 
       let source = b.geometry!.geometrySources[0] 
       var z: Float = 0 
       source.data.getBytes(&z, length: sizeof(Float)) 
       print(z) 
      } 
     } 

}

Ich mag würde die Positionen und Normalen bekommen, damit ich sie in einer Datenbank gespeichert werden kann.

Antwort

0

In Ihrem Code verwenden Sie let source = b.geometry!.geometrySources[0].

Ich schlage vor, dass Sie eine Schleife durch alle Quellen: b.geometry!.geometrySources

Dann in der Schleife Sie zu sehen, testen, um welche Art von Quelle ist: b.geometry!.geometrySources[i].semantic

Diese .semantic Eigenschaft wenige unterschiedliche Werte sein könnten:

NSString *const SCNGeometrySourceSemanticVertex; 
NSString *const SCNGeometrySourceSemanticNormal; 
NSString *const SCNGeometrySourceSemanticColor; 
NSString *const SCNGeometrySourceSemanticTexcoord; 
NSString *const SCNGeometrySourceSemanticVertexCrease; 
NSString *const SCNGeometrySourceSemanticEdgeCrease; 
NSString *const SCNGeometrySourceSemanticBoneWeights; 
NSString *const SCNGeometrySourceSemanticBoneIndices; 

Dann, je nach Art der Quelle, tun Sie, was Sie wollen!

Verwandte Themen