Javascript THREE.js在循环中加载相同的动画GLB仅播放最后加载的模型
我试图在一个循环中加载一群动画蝴蝶,出于某种原因,它们中只有一只,不管是第一只还是最后一只,我想这是因为我需要克隆gltf.scene,但克隆动画gltf时存在一个已知的错误 谢谢你的帮助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)
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);
}