【问题标题】:How to handle and play a skeletal animation in three.js in its last version如何在three.js的最新版本中处理和播放骨骼动画
【发布时间】:2015-08-16 00:17:09
【问题描述】:

我知道有 skinning_blending 模型,但由于它具有 gui 控件(dat.gui 与所有其他 threejs 示例一样),因此代码变得过于复杂,我无法获得我发现的简单方法对于以前的旧 Threejs 版本,例如:

                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 控件),但在最新版本中有效。最好的问候。

【问题讨论】:

    标签: three.js skinning skeletal-animation


    【解决方案1】:

    现在是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();
    });
    

    【讨论】:

    • 谢谢,但是动画没有播放,只显示了网格,没有提到任何错误。这是我的文件pastebin.com/7iNTjN4Kpastebin.com/nhfCTETm
    • 因为在您的render 函数中您有if(animmesh)THREE.AnimationHandler.update(clock.getDelta);,所以在您粘贴的上面的代码中您需要将mesh 更改为animmesh 以便动画更新。
    猜你喜欢
    • 1970-01-01
    • 2013-02-11
    • 2014-10-16
    • 2023-03-23
    • 1970-01-01
    • 2013-12-24
    • 2014-12-15
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多