2015-08-15 54 views
1

我知道有skinning_blending模型,但它具有gui控件(dat.gui與所有其他的三個js示例一樣),所以代碼變得太配合物,我不能讓簡單的方法類似,我發現了以前舊的版本threejs像這樣的:如何在three.js的最後一個版本中處理和播放骨骼動畫

   var loader = new THREE.JSONLoader(); 
       loader.load('../assets/models/simpleManMesh2.json', function (model, mat) { 

        var mat = new THREE.MeshLambertMaterial({color: 0xF0C8C9, skinning: true}); 
        mesh = new THREE.SkinnedMesh(model, mat); 


        // register the animation 
        THREE.AnimationHandler.add(model.animation); 

        var animation = new THREE.Animation(mesh, "saluuut"); 

        scene.add(mesh); 

        // start the animation 
        animation.play(); 

       }, '../assets/models'); 

對於這和同許多其他人,我得到了錯誤:

THREE.AnimationHandler.add()已被棄用。

所以我要求的是一個簡單的代碼(沒有任何gui控件),但它在最新版本中工作。最好的祝福。

回答

2

它剛纔是THREE.Animation()

loader.load('yourfile.json',function(geometry,materials){ 
    for(var i in materials)materials[i].skinning=true; 

    mesh=new THREE.SkinnedMesh(
     geometry, 
     new THREE.MeshFaceMaterial(materials) 
    ); 
    scene.add(mesh); 

    animation=new THREE.Animation(mesh,geometry.animations[0]); 

    animation.play(); 
}); 
+0

謝謝,但動畫不玩了,是隻​​顯示網格,並沒有提到任何錯誤。這裏是我的文件http://pastebin.com/7iNTjN4K和http://pastebin.com/nhfCTETm – Bardelman

+2

,因爲在'render'函數中你有'if(animmesh)THREE.AnimationHandler.update(clock.getDelta);' ,在上面粘貼的代碼中,您需要將'mesh'更改爲'animmesh',以便動畫更新。 – Atrahasis