3

我正在尝试为场景中的每个节点提取几何图形。我使用 .obj 文件创建了一个场景,它完美呈现。但是,我想从每个节点中提取几何图形,但我被卡住了。我的代码如下

    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)
            }
        }

}

我想获取位置和法线,以便将它们存储在数据库中。

4

1 回答 1

1

在您的代码中,您使用let source = b.geometry!.geometrySources[0].

我建议您遍历所有来源:b.geometry!.geometrySources

然后在循环中进行测试以查看它是什么类型的源:b.geometry!.geometrySources[i].semantic

.semantic属性可能是几个不同的值:

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

然后,根据来源的类型,随心所欲!

于 2016-08-15T00:04:45.753 回答