Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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 使用三个js时FBX动画无法正常运行_Javascript_Three.js_Fbx - Fatal编程技术网

Javascript 使用三个js时FBX动画无法正常运行

Javascript 使用三个js时FBX动画无法正常运行,javascript,three.js,fbx,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.

我对一些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();
    }
var clock=new THREE.clock();
var混频器=[];
功能(对象){
object.position.set(0,0,0);
object.mixer=new THREE.AnimationMixer(对象);
混合器。推送(对象。混合器);
console.log(对象);
对于(var a=0;a
动画代码是:

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);
}
function animate(){
请求动画帧(动画);
对于(变量i=0;i

有什么想法吗?谢谢

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

  • 在Maya或中设置的正确开始和结束时间
  • 给出一组threejs无法正确导入的数字
  • 正如你所描述的,你最终得到的是在动画中的很多时间里什么都没有发生。就我所见,它通常在结尾处尾随,但肯定也可能在开头

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


    我在某个地方找到了这个问题的代码,让我找到它,然后将它添加到这个答案中。

    我遇到了同样的问题。当我从Maya导出动画时,需要一个接一个地排列动画,以便它们不会全部重叠。例如,剪辑1 1 1-10、剪辑2 11-33等。从第1帧开始将所有剪辑放入diff轨迹会导致所有动画彼此重叠,因此这不是一个选项(除非我不知道正确的导出工作流)。所以我想唯一的选择是创建一个函数,在片段的开始帧开始动画。你知道怎么做吗?我打算亲自试一试,但不知道你是否有手边的脚本。谢谢希望您已经找到答案-最初没有找到您的帖子。根据您的最终目标,您可以通过使用animation.startAt()将某些剪辑延迟开始播放,从而为要开始播放的剪辑设置不同的偏移量,或者您可以尝试分别启动每个剪辑,在上一个剪辑的结尾处使用类似以下事件触发它们:mixer.addEventListener('finished',function(e){…});有关这些方面的详细信息,请参见: