0

我正在尝试同时加载多件。要么只有一件正确出现,要么两件都出现,一件正确一件不正确。这是我的代码:

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 回答