FBX动画与三个js无法正常运行

时间:2017-08-22 07:43:33

标签: javascript three.js fbx

我在某些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);
}

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:3)

根据经验,我可以告诉你,fbx ascii导出过程(至少对于Autodesk Maya)并不总是给出

  1. 在Maya或
  2. 中设置的正确开始和结束时间
  3. 给出了一组三js无法正确导入的数字。
  4. 你最终得到的是 - 正如你所描述的 - 在动画中很多时候都没有发生。就我所见,它通常在结尾处落后,但它当然也可以在开头。

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

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