三个JS中的动画

时间:2015-10-29 14:38:29

标签: javascript three.js blender

有一个带动画的模型。在引入新的动画系统之后,我没有让它运行。也许我设置出口是错的?我附加文件:

https://www.sendspace.com/file/etv0sl

代码:

center

2 个答案:

答案 0 :(得分:6)

新系统适用于动画片段(如果我正确,则为r74)。 下面是我的Blender导出的JSON模型样本。

var mixer;
var actions = {};
var loader = new THREE.JSONLoader();

loader.load( "webgl/models/model.json", function ( geometry, materials ) {

    model = new THREE.SkinnedMesh( geometry, materials, false );
    for(var x=0;x<materials.length();x++) materials[x].skinning = true;
    mixer = new THREE.AnimationMixer(model );

    //idle
    actions.idle = mixer.clipAction(geometry.animations[0]);
    actions.idle.setLoop(THREE.LoopRepeat);
    actions.idle.clampWhenFinished = true;
    actions.idle.play();

    //walk
    actions.walk = mixer.clipAction(geometry.animations[1]);
    actions.walk.setLoop(THREE.LoopRepeat);
    actions.walk.clampWhenFinished = true;

    scene.add( model );

}

每个导出的动画都存储在数组geometry.animations中。 在我的示例中,我明确知道哪个索引是哪个动画,但也很容易通过名称手动映射:(geometry.animations[x].name)。

在动画循环中,您必须定期更新调音台 if(typeof mixer != "undefined") mixer.update(delta);

http://yomotsu.net/blog/2015/10/31/three-r73-anim.html

获取了我的信息

还有关于动画动作的关于源代码:https://github.com/mrdoob/three.js/blob/ab93512c7a44bd98e669592b3db441c04a2057f4/src/animation/AnimationAction.js

从Blender出口有很多可能的陷阱,特别是在 使用骨架网格动画(!=变形)。

  • 所有骨骼/骨架/网格的比例值应该精确为“1”和 永远不会再被触摸:) (关键帧也应该只有键控设置LocRot)
  • “应用修饰符”按钮,而导出总是让我扭曲
  • 导出时仅选择网格(不是骨架或骨骼)

我的导出设置:
blender three js skeletal export options

希望有助于未来的探险家:)

答案 1 :(得分:0)

这个:

map

应该是这个

if(typeof mixer != "undefined") mixer.update(delta);