Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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
Javascript THREE.js在循环中加载相同的动画GLB仅播放最后加载的模型_Javascript_Three.js - Fatal编程技术网

Javascript THREE.js在循环中加载相同的动画GLB仅播放最后加载的模型

Javascript THREE.js在循环中加载相同的动画GLB仅播放最后加载的模型,javascript,three.js,Javascript,Three.js,我试图在一个循环中加载一群动画蝴蝶,出于某种原因,它们中只有一只,不管是第一只还是最后一只,我想这是因为我需要克隆gltf.scene,但克隆动画gltf时存在一个已知的错误 谢谢你的帮助 let mixer = []; const butt_loader = new THREE.GLTFLoader(); for(var i=0;i<40;i++){ butt_loader.load('butterfly_rigged.glb', function (gltf)

我试图在一个循环中加载一群动画蝴蝶,出于某种原因,它们中只有一只,不管是第一只还是最后一只,我想这是因为我需要克隆gltf.scene,但克隆动画gltf时存在一个已知的错误

谢谢你的帮助

let mixer = [];
    const butt_loader = new THREE.GLTFLoader();
    for(var i=0;i<40;i++){
    butt_loader.load('butterfly_rigged.glb', function (gltf) {
    var butt_scale = 1;

        var model = gltf.scene;
        model.position.z = -3 - Math.random()*7;
        model.position.x = 6*Math.random();
        model.position.y = 6*Math.random();
        model.scale.x = butt_scale*Math.random();
        model.scale.y = butt_scale*Math.random();
        model.scale.z = butt_scale*Math.random();

        model.rotation.y = -Math.PI/4;
        model.rotation.z = 0.1;
        model.rotation.x = Math.PI/4;
        butt_scene.add(model.clone());

        mixer.push(new THREE.AnimationMixer(model));
        gltf.animations.forEach((clip) => {
        mixer[mixer.length-1].clipAction(clip).play();
        }); 
    });
    }
    var butt_clock = new THREE.Clock();
    function render_butt(){
    for(var i=0;i<mixer.length;i++){
        if(mixer[i]!=null) mixer[i].update(butt_clock.getDelta());
    }
    requestAnimationFrame( render_butt );   
    butt_ren.clear();
    butt_ren.render( butt_scene, butt_camera );
    }
    render_butt();
let mixer=[];
const butt_loader=new THREE.GLTFLoader();
对于(var i=0;i{
混合器[mixer.length-1]。剪辑操作(clip.play();
}); 
});
}
var butt_clock=新的三个时钟();
函数render_butt(){
对于(var i=0;i这部分:

    for(var i=0;i<mixer.length;i++){
        if(mixer[i]!=null) mixer[i].update(butt_clock.getDelta());
    }

for(var i=0;iI)获取此错误然后:three.js:24759 Uncaught TypeError:无法在render\u的WebGLRenderer.render(three.js:24585)的projectObject(three.js:24813)的projectObject(three.js:24759)的projectObject(three.js:24813)中读取未定义的属性“frame”(index.html:597)@BinkyNichols那么最好提供一个可编辑的工作实时代码示例。(代码片段、jsfiddle、codepen等)克隆一组蒙皮动画角色并为其设置动画。
    var delta = butt_clock.getDelta();
    for(var i=0;i<mixer.length;i++){
        if(mixer[i]!=null) mixer[i].update(delta);
    }