[SceneKit:从STL导入的导出网格会产生垃圾

问题描述 投票:0回答:1

我正在使用this gist将二进制STL 3d网格导入到SCNNode中,效果很好(我可以在SCNView中查看网格,看起来不错)。

但是,如果尝试使用MDLAsset.export(to: url)SCNScene.write(to: url)将(不变的)网格导出到STL或OBJ文件中,则生成的网格将损坏。

如果加载示例ship.scn场景,然后将其导出到STL,则一切看起来都很好。这使我认为上述要点如何创建SCNNode肯定有问题,但我不知道它是什么。

实际模型:enter image description hereSTL / OBJ导出结果:enter image description here

ios swift 3d scenekit scenekit-modelio
1个回答
0
投票

我自己弄清楚了。 SCNGeometryElement的构造函数允许为索引数据传递nil。尽管这对于在场景中显示网格很合适,但至少导出功能以及框架的其他部分可能依赖于所填充的数据,这与预期的相反,并非由构造函数自动完成的。所以你需要自己做。幸运的是,还有另一个构造函数可以简化此过程:

let indices = [UInt32](0..<UInt32(trianglesCounted * 3))
let countedTriangles = SCNGeometryElement(indices: indices, primitiveType: .triangles)
© www.soinside.com 2019 - 2024. All rights reserved.