我在某些fbx型号上遇到动画问题。如果我有,例如持续20秒的动画,模型将保持静止19秒,然后所有更改将在最后一秒左右发生。在其他fbx模型上,动画正确运行。 我用来运行动画的代码如下: loader.load回调是:
var clock = new THREE.Clock();
var mixers = [];
function(object){
object.position.set(0,0,0);
object.mixer = new THREE.AnimationMixer(object);
mixers.push(object.mixer);
console.log(object);
for (var a = 0; a < object.animations.length; a++){
var action = object.mixer.clipAction(object.animations[a]);
action.play();
console.log(action);
}
scene.add(object);
animate();
}
动画代码是:
function animate() {
requestAnimationFrame(animate);
for(var i = 0; i < mixers.length; i++){
mixers[i].update(clock.getDelta());
}
render();
stats.update();
}
function render() {
if (mixer) {
mixer.update(clock.getDelta());
}
renderer.render(scene, camera);
}
有什么想法吗?谢谢!
答案 0 :(得分:3)
根据经验,我可以告诉你,fbx ascii导出过程(至少对于Autodesk Maya)并不总是给出
你最终得到的是 - 正如你所描述的 - 在动画中很多时候都没有发生。就我所见,它通常在结尾处落后,但它当然也可以在开头。
你可以手动修复fbx文件,但是添加一个函数可以更容易地将开始时间设置为第一帧的时间(如果第一帧是问题,则从第二帧开始)。 / p>
我在某个地方有代码,让我找到它,然后我将它添加到这个答案。