我已经看到了很多有关如何将ThreeJS或整个场景从ThreeJS导出到OBJ文件的示例。从此处的MrDoob示例开始:https://threejs.org/examples/#misc_exporter_obj
但是由于这样的前进多维数据集:https://threejs.org/examples/webgl_marchingcubes.html不是THREE.Mesh的实例,将其当前几何图形导出到Obj文件的解决方法是什么?然后将其材料扩展为一个mtl文件,如以下问题所述:Export a three js textured model to a .OBJ with .MTL file
编辑
据我所知,可以使用行进多维数据集提供的generateGeometry()
函数导出元球当前状态的副本。下面是一个使用filesaver.js和JSZip.js将几何图形和材料导出为zip中的两个文件的示例。 THREE.OBJExporter
来自ThreeJS的原始obj导出程序的修改版,如上所述(Export a three js textured model to a .OBJ with .MTL file):
function exportToObj(the_object){
var zip = new JSZip();
var the_exporter = new THREE.OBJExporter();
var result = the_exporter.parse(the_object);
zip.file("Blob.obj", result.obj);
zip.file("Blob.mtl", result.mtl);
zip.generateAsync({type:"blob"}).then(function (blob) {
saveAs(blob, "Blob.zip");
});
}
$(document).on('keyup',function(e) {
if (e.which == 13){ // enter key to export to OBJ
var TempMesh = new THREE.Mesh(effect.generateGeometry(),effect.material);
//effect is of the type: new THREE.MarchingCubes()
exportToObj(TempMesh);
}
});
这样,如果为材质提供了颜色,则它将导出到.mtl文件中。但是最后丢失的部分可能是例如如何正确转换shaderMaterial?也许另存为纹理?