Экспорт сетки Three.js в виде OBJ или STL

Я хотел бы создать экспорт в виде ссылки OBJ или STL для параметрического объекта сетки Three.js. Так же, как опция экспорта наhttp://www.3dtin.com

Любой совет будет принят во внимание.

Ответы на вопрос(4)

THREE.saveGeometryToObj = function (geometry) {
var s = '';
for (i = 0; i < geometry.vertices.length; i++) {
    s+= 'v '+(geometry.vertices[i].x) + ' ' +
    geometry.vertices[i].y + ' '+
    geometry.vertices[i].z + '\n';
}

for (i = 0; i < geometry.faces.length; i++) {

    s+= 'f '+ (geometry.faces[i].a+1) + ' ' +
    (geometry.faces[i].b+1) + ' '+
    (geometry.faces[i].c+1);

    if (geometry.faces[i].d !== undefined) {
        s+= ' '+ (geometry.faces[i].d+1);
    }
    s+= '\n';
}

return s;
}
 21 янв. 2015 г., 15:49
У вас есть пример рабочего объекта геометрии, который работает с этим? Я получаю "длина не определена" но я пытаюсь сохранить буферную сетку тройной плоскости, так что, возможно, формат объекта другой?

чтобы учесть массивы объектов, которые были продублированы и перемещены в сцене. В настоящее время я использую document.writeln, затем вручную копирую и вставляю в документ.

var l = parent.length;
var j = 0;

while (l--) {

 var numVerts = parent[l].children[0].geometry.vertices.length;
 document.writeln(THREE.saveGeometryToObj(parent[l].children[0],j*(numVerts)));     

 j++;
}

THREE.saveGeometryToObj = function (geo,nums) {

geo.updateMatrixWorld();
var num = parseInt(nums);
var s = '';

for (i = 0; i < geo.geometry.vertices.length; i++) {

    var vector = new THREE.Vector3( geo.geometry.vertices[i].x, geo.geometry.vertices[i].y, geo.geometry.vertices[i].z );
    geo.matrixWorld.multiplyVector3( vector );


    s+= 'v '+(vector.x) + ' ' +
    vector.y + ' '+
    vector.z + '</br>';
}

for (i = 0; i < geo.geometry.faces.length; i++) {

    s+= 'f '+ (geo.geometry.faces[i].a+1+num) + ' ' +
    (geo.geometry.faces[i].b+1+num) + ' '+
    (geo.geometry.faces[i].c+1+num);

    if (geo.geometry.faces[i].d!==undefined) {
        s+= ' '+ (geo.geometry.faces[i].d+1+num);
    }
    s+= '</br>';
}

return s;

}

OBJExporter должно быть довольно легко. Просто используйте в качестве ссылкиOBJLoader, Через несколько недель я, вероятно, напишу это сам, если к тому времени никто этого не сделал.

 user150751107 июл. 2012 г., 20:09
Спасибо! Я думаю, что это будет чрезвычайно полезно.

За исключением этого, я не думаю, что вы найдете какие-либо библиотеки, предварительно созданные для этого. Я бы на самом деле спросил 3DTin, использовали ли они библиотеку или разработали ее самостоятельно.

Ваш ответ на вопрос