我正在开发一个应用程序,用于创建用户脸部的3d网格。我成功生成了用户脸的数据。
我希望以.dae格式以编程方式保存这些数据,这样我就可以导出我的.dae文件,在像blender这样的3d软件中编辑它,然后在我的iphone中进一步导入它并在sceneview中显示该文件。
长话短说我想以编程方式保存.dae格式的数据。我无法在互联网上找到任何关于此的内容。
如果还有其他办法,请告诉我。
答案 0 :(得分:3)
SceneKit在iOS中本身不读取或写入DAE格式。 (SceneKit仅在macOS中读取/写入DAE。当您在应用程序的捆绑资源中发送DAE时,Xcode会在构建时将其转换为iOS优化格式。)
将网格导出到iOS的常见文件格式的最佳选择是Model I/O。该框架支持多种格式,但不支持DAE。如果你只是想输出由ARKit生成的ARFaceGeometry
网格物体,你真的不需要比OBJ更复杂的格式,而模型I / O就是这样做的。
要点:
从顶点/索引数据创建MDLMesh
。这对于顶点和纹理坐标数据需要MDLMeshBuffer
,对于三角形索引数据需要MDLSubmesh
es。或者,如果您已在SceneKit中使用网格物体,请将其转换为MDLMesh(scnGeometry:)
。
Export资产到文件。您为写入资产而提供的URL的文件扩展名确定了导出的文件格式,因此如果要编写OBJ文件,请使用“.obj”文件名。
答案 1 :(得分:2)
您可以尝试以下代码:
let scene2 = sceneView.scene
let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let timeInterval = Date().timeIntervalSince1970 * 1000
let filename = String(format: "test_%d.dae", timeInterval)
let exportUrl = documentsPath.appendingPathComponent(filename)
scene2.write(to: exportUrl, options: nil, delegate: nil, progressHandler: nil);