Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 多个ColladaLoader加载失败。它是线程安全的吗?_Three.js - Fatal编程技术网

Three.js 多个ColladaLoader加载失败。它是线程安全的吗?

Three.js 多个ColladaLoader加载失败。它是线程安全的吗?,three.js,Three.js,我试图同时加载多个工件。要么只有一件正确显示,要么两件都正确显示,一件正确,一件不正确。这是我的密码: 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);

我试图同时加载多个工件。要么只有一件正确显示,要么两件都正确显示,一件正确,一件不正确。这是我的密码:

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);
});

原因是ColladLoader不是线程安全的,因此不能对同一对象进行多个load()调用。只需像这样创建一个ColladLoader的新实例,所有这些都应该可以工作

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);
});