Three.js: プログラムでモデルのクローンを作成する方法

作成日 2012年02月20日  ·  3コメント  ·  ソース: mrdoob/three.js

こんにちは、ティーポットなどのdaeモデルをプログラムにロードしたいのですが、シーンに10個のティーポットを入れたいのですが、次のようにクローン関数を使用しますが、オブジェクトはその親を参照しているようで、それからそれ自体を参照しています。クローンを作成できません。オブジェクトのコピーを10個作成するにはどうすればよいですか?

var dae;
var dae = [];
var loader = new THREE.ColladaLoader();
    loader.options.convertUpAxis = true;
    loader.load( 'teapot.dae',function colladaReady( collada ) {
        dae = collada.scene;
        for(var i = 0;i < 10;++i){
            daes[i] = clone(dae);
        }
    });
}
function clone(obj){
    if(obj == null || typeof(obj) != 'object')
        return obj;
    var temp = new Object();//obj.constructor(); // changed
    for(var key in obj)
        temp[key] = clone(obj[key]);
    return temp;
}
Question

最も参考になるコメント

何年も閉鎖されているスレッドには投稿しないでください。 代わりに新しい問題を開き、 daeファイルとそれぞれのthree.jsコードを提供します。

全てのコメント3件

あなたはこのようなことをすることができるはずです:

var geometry = collada.scene.children[ 0 ].geometry;
var material = collada.scene.children[ 0 ].material;

for ( var i = 0; i < 10; i ++ ) {
    var mesh = new THREE.Mesh( geometry, material );
    mesh.position.set( i * 100, 0, 0 );
    scene.add( mesh );
}

それはうまくいきませんでした、私は同じ問題に遭遇します。
これは私のcollada.sceneオブジェクトです
image

何年も閉鎖されているスレッドには投稿しないでください。 代わりに新しい問題を開き、 daeファイルとそれぞれのthree.jsコードを提供します。

このページは役に立ちましたか?
0 / 5 - 0 評価