1

2つのcolladaファイルがあります(2つの異なるシーン:「01.dae」と「02.dae」)。アニメーションが終了した直後に01.daeを最初に表示したいのですが、同じキャンバスに02.daeをロードして表示したいと思います。(これを行うために「webgl_loader_collada_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");

    } );
    }

..。

ご覧のとおり、コードを次のように拡張しました

scene.remove(モデル);

前のシーンを削除します。

最初のシーンが表示されてから適切に消えますが、新しいseceneはロードされません。なぜイダエがありますか?

(注:最初のシーンが実際にどれくらいの長さかはわかりません。)

4

1 に答える 1

0

アニメーションの長さがわかっている場合は、setTimeout を使用して 2 番目のモデルをロードできます。

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 の時間間隔は、アニメーションの長さと同じです。

于 2012-08-07T19:49:28.037 に答える