2017-08-22 36 views
1

我在某些fbx模型上遇到动画问题。如果我有,例如一个持续20秒的动画,模型将保持静止19秒,然后所有的变化将在最后一秒左右发生。在其他fbx模型上,动画运行正确。 ,我使用运行动画的代码是如下: 的Loader.load方法回调是:FBX动画与三个js无法正常运行

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

任何想法?谢谢!

回答

2

从以往的经验,我可以告诉你的是,FBX ASCII导出过程(至少针对Autodesk Maya中)并不总是给任何

  1. 正确的开始和结束在Maya中设置或时间
  2. 给一组数字,三个j不能正确导入。

你最终得到的是 - 如你所描述的 - 很多时间在没有任何事情发生的动画中。据我所见,最终通常会落后,但它一定也可以在一开始。

您可以手动修复fbx文件,但只需添加一个函数将开始时间设置为第一帧的时间(如果第一帧是问题,则从第二帧开始)就可能更容易。

我有这个地方的代码,让我找到它,然后我将它添加到这个答案。