Webgl 多个collada场景

Webgl 多个collada场景,webgl,three.js,Webgl,Three.js,我有两个collada文件(两个不同的场景:“01.dae”和“02.dae”)。 我希望首先显示01.dae,动画完成后立即在同一画布上加载和显示02.dae。 (我正试图修改“webgl\u loader\u collada\u keyframe.html”来实现这一点,但到目前为止还没有结果。) 我如何处理多个动画collada场景?一个源代码或任何提示或技巧将不胜感激 谢谢你的回答。我根据你的idae修改了我的代码,但不幸的是它不起作用。 你能看一下我的密码吗 这是我的密码:

我有两个collada文件(两个不同的场景:“01.dae”和“02.dae”)。 我希望首先显示01.dae,动画完成后立即在同一画布上加载和显示02.dae。 (我正试图修改“webgl\u loader\u collada\u keyframe.html”来实现这一点,但到目前为止还没有结果。)

我如何处理多个动画collada场景?一个源代码或任何提示或技巧将不胜感激


谢谢你的回答。我根据你的idae修改了我的代码,但不幸的是它不起作用。 你能看一下我的密码吗

这是我的密码:

    loader.load( 'pump.dae', function ( collada ) {


        model = collada.scene;
        animations = collada.animations;
        kfAnimationsLength = animations.length;
        model.scale.x = model.scale.y = model.scale.z = 0.125; // 1/8 scale, modeled in cm

        init();
        start();
        animate( lastTimestamp );
        setTimeout(loadSecond,3000);                
    } );


    function loadSecond()
    {           
    loader2.load( 'pump2.dae', function ( collada2 ) 
    {

        scene.remove( model );              
        model2 = collada2.scene;
        animations2 = collada2.animations;
        kfAnimationsLength2 = animations2.length;
        model2.scale.x = model2.scale.y = model2.scale.z = 0.125; // 1/8 scale, modeled in cm

        init2();
        start2();
        animate2( lastTimestamp2 );

        //alert("second loaded");

    } );
    }

正如你所看到的,我用

场景。移除(模型)

删除上一个场景

第一个场景显示,然后正确取消显示,但新的secene不会加载。你有idae吗?为什么


(注意:我不知道我的第一个场景实际有多长。)

如果知道动画有多长,可以使用setTimeout加载第二个模型

var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load('PATH TO MODEL', function colladaReady( collada){
    dae = collada.scene;
    skin = collada.skins[ 0 ];              
    dae.scale.x = dae.scale.y = dae.scale.z = 1;
    dae.updateMatrix();
    scene.add(dae);    
    render(); 
    setTimeout(loadSecond,3000);
});

function loadSecond(){
    var loader = new THREE.ColladaLoader();
    loader.options.convertUpAxis = true;
    loader.load('PATH TO MODEL', function colladaReady( collada){
        ///repeat model loading logic
}

setTimeout中的时间间隔等于动画的长度。

可以添加更多代码吗?从这里可以看出,您可能遇到了一些javascript变量范围问题,并复制了一些不需要复制的函数。例如,我认为您只需要运行init()一次,并且在装入器函数之外运行一次。此外,如果范围正确,您可以在每次需要时启动加载程序。我的代码有点长(但容易理解)。这就是我上传到这里的原因:你能看一下吗?!您应该启动计时器并等待30秒开始下载。谢谢我快速看了一下代码。我认为问题的根源在于你正在创造两个场景。您应该只有一个init()函数,在该函数的底部,您应该运行加载第一个模型并运行动画的代码。然后设置计时器并调用函数删除第一个模型,加载第二个模型并运行该动画。无需创建新场景或任何东西,只需加载模型并将其添加到原始场景中。如果这还不清楚,让我知道,我会为你做一个代码大纲。上周我尝试了好几次加载我的第二个场景。没有任何结果。我什么都试过了,但第二幕总是黑屏。如何加载第二个场景并运行动画?Shadill,几次尝试后,我都失去了知觉。你能给我发一份你刚才提到的代码大纲吗?