8

パラメトリック Three.js メッシュ オブジェクトの OBJ または STL リンクとしてエクスポートを作成したいと考えています。http://www.3dtin.comのエクスポート オプションと同じように

アドバイスをいただければ幸いです。

4

4 に答える 4

8

メッシュを .obj 形式で取得するには、次の単純な関数を使用します。

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;
}
于 2013-01-23T14:09:13.310 に答える
4

a を書くのOBJExporterはとても簡単なはずです。OBJLoaderを参照として使用するだけです。数週間のうちに、それまでに誰も書いていなければ、おそらく自分で書くでしょう。

于 2012-07-07T15:14:13.140 に答える
1

まず、python OBJ -> three.js コンバーターを調べます。

それを除けば、これを行うために事前に構築されたライブラリを見つけることはないと思います。実際に 3DTin に、ライブラリを使用したのか、社内で開発したのかを尋ねます。

于 2012-07-06T20:12:35.100 に答える
0

上記のコードを微調整して、シーン内で複製および変換されたオブジェクトの配列を使用できるようにしました。私は現在 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;

}

于 2013-02-22T15:50:42.300 に答える