ho ottimizzato il codice sopra leggermente per consentire matrici di oggetti che sono stati duplicati e tradotti intorno in una scena. Attualmente sto usando document.writeln per poi copiare e incollare manualmente in un documento.
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;
}
fonte
2013-02-22 15:50:42
Grazie! Penso che sarà estremamente utile. – user1507511