0

複数のピースを同時にロードしようとしています。1つのピースだけが正しく表示されるか、両方のピースが表示され、1つは正しく、もう1つは正しくありません。これが私のコードです:

var loader = THREE.ColladaLoader();

loader.load('model.dae', function colladaReady(result) {
    var piece = result.scene.children[0];
    piece.position.set(-100, 0, 0);
    scene.add(piece);

    renderer.render(scene, camera);
});

loader.load('model2.dae', function colladaReady2(result2) {
    var piece2 = result2.scene.children[0];
    piece2.position.set(100, 0, 0);
    scene.add(piece2);

    renderer.render(scene, camera);
});
4

1 に答える 1

0

その理由は、ColladaLoaderはスレッドセーフではないため、同じオブジェクトに対して複数のload()呼び出しを行うことができないためです。このようにColladaLoaderの新しいインスタンスを作成するだけで、すべてが機能するはずです。

var loader = THREE.ColladaLoader();

loader.load('model.dae', function colladaReady(result) {
    var piece = result.scene.children[0];
    piece.position.set(-100, 0, 0);
    scene.add(piece);

    renderer.render(scene, camera);
});

/*** Line added here! ***/
var loader2 = THREE.ColladaLoader();

loader.load('model2.dae', function colladaReady2(result2) {
    var piece2 = result2.scene.children[0];
    piece2.position.set(100, 0, 0);
    scene.add(piece2);

    renderer.render(scene, camera);
});
于 2012-10-06T03:43:02.753 に答える