ios - SceneKit:已从 STL 导入的导出网格导致垃圾
问题描述
我正在使用这个 gist将二进制 STL 3d 网格导入 SCNNode,它工作正常(我可以在 SCNView 中查看网格,它看起来不错)。
但是,如果我尝试将(未更改的)网格导出到 STLMDLAsset.export(to: url)
或SCNScene.write(to: url)
OBJ 文件中,则生成的网格会损坏。
如果我加载示例ship.scn
场景然后导出到 STL,一切看起来都很好。这让我觉得上面提到的 gist 如何创建 SCNNode 一定有问题,但我不知道它是什么。
解决方案
我自己想通了。SCNGeometryElement 的构造函数允许为索引数据传递 nil。虽然这对于在场景中显示网格很好,但至少导出功能和可能框架的其他部分依赖于填充的数据 - 这与人们所期望的相反 - 不是由构造函数自动完成的。所以你需要自己做。幸运的是,还有另一个构造函数使这更容易:
let indices = [UInt32](0..<UInt32(trianglesCounted * 3))
let countedTriangles = SCNGeometryElement(indices: indices, primitiveType: .triangles)
推荐阅读
- javascript - 如何将一些对象键仅推送到反应js中的另一个数组中
- python-3.x - 在 Keras (Python) 中使用神经网络进行样本外预测
- python - 安装opencv时出现错误
- gatsby - 将优惠券添加到 Stripe Checkout 或 allow_promotion_codes: true on redirectToCheckout
- python - 同时运行异步任务
- java - 带有 Spring Boot 2.3 的 Jpos Q2 服务器
- r - 按组和列之间查找最小值
- solr - Solr zookeeper 状态问题(null:java.io.UncheckedIOException: java.net.SocketException: Connection reset)
- amazon-web-services - health-check-grace-period-seconds 覆盖默认值还是仅将值应用于命令?
- matlab - 将 Matlab 函数转换为 Simulink 函数时出现问题