我有两个collada文件(两个不同的场景:"01.dae“和"02.dae")。我想首先显示01.dae,在动画完成后,我想在相同的画布上加载和显示02.dae。(我试图修改"webgl_loader_collada_keyframe.html“来实现这一点,但到目前为止还没有结果。)
我怎么能处理多个科拉达动画场景?一个源代码或任何提示或窍门将不胜感激!
谢谢你的回答。我修改了我的代码,基于你的科,但不幸的是,它不起作用。你能看一下我的密码吗?
这是我的代码:
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(模型);
移除前一幕。
第一个场景显示,然后正确地断开,但是新的场景不加载。你有科吗?为什么?
(注:我不知道我的第一幕真实是多长时间。)
发布于 2012-08-07 19:49:28
如果您知道动画的长度,可以使用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中的时间间隔等于动画的长度。
https://stackoverflow.com/questions/11815060
复制相似问题