3d 将三js纹理模型导出为带有.MTL文件的.OBJ

3d 将三js纹理模型导出为带有.MTL文件的.OBJ,3d,three.js,textures,webgl,.obj,3d,Three.js,Textures,Webgl,.obj,我希望能够像本例中那样导出obj文件 但是,我想导出.obj文件,其中包含.mtl纹理文件中相应的纹理(我看到过带有“usemtl someTextureNameFromMTL”的obj文件) 我见过,但出口商似乎只出口网格。我也发现,但这只是讨论进口商 我想实现的是制作一个3d可打印编辑器,它还可以导出纹理/颜色,因为已经有一个用于3d打印的.stl网格导出器。但是,我没有发现三个js的mesh+颜色/纹理导出器:(我对OBJExporter进行了一点扩展。它将返回一个包含.obj部分和.mt

我希望能够像本例中那样导出obj文件

但是,我想导出.obj文件,其中包含.mtl纹理文件中相应的纹理(我看到过带有“usemtl someTextureNameFromMTL”的obj文件)

我见过,但出口商似乎只出口网格。我也发现,但这只是讨论进口商


我想实现的是制作一个3d可打印编辑器,它还可以导出纹理/颜色,因为已经有一个用于3d打印的.stl网格导出器。但是,我没有发现三个js的mesh+颜色/纹理导出器:(

我对OBJExporter进行了一点扩展。它将返回一个包含.obj部分和.mtl部分的对象。我只是在没有测试的情况下写下了它,所以可能有bug,但我希望它是一个开始

我没有查找所有的mtl值,我只是使用了一些标准值,除了颜色和纹理信息。也许我以后会对其进行改进。您还需要了解mtl文件名。目前,我正在为obj部件写入一个静态名称。保存文件时,mtl文件需要与声明的obj文件中的名称相同。Otherwise 3ds max等不会阅读它

/**
*@author mrdoob/http://mrdoob.com/
*/
3.OBJExporter=function(){};
3.OBJExporter.prototype={
构造函数:3.OBJExporter,
解析:函数(对象){
var输出=“”;
var材料={};
var indexVertex=0;
var指数Vertexuvs=0;
var indexNormals=0;
var mtlFileName='objmaterial';//此值可能可以作为参数传递
输出+='mtllib'+mtlFileName+'.mtl\n';
var parseMesh=函数(网格){
var=0;
var nbVertexUvs=0;
var nbNormals=0;
var geometry=mesh.geometry;
var material=mesh.material;
if(三个几何体的几何体实例。几何体){
输出+='o'+mesh.name+'\n';
var顶点=geometry.vertices;
对于(var i=0,l=vertices.length;i};
以下是使用filesaver和JSZip进行保存的方法

var oexporter = new THREE.OBJExporter();
var result = oexporter.parse(scene);
zip.file('mymodel.obj', result.obj);
zip.file('objmaterial.mtl', result.mtl);
var zz=zip.generate({ type: 'blob' });
saveAs(zz, 'mymodel.zip');
但是,我的问题是,我在场景中加载了3D模型