三个JS中的动画

Ser*_*kov 3 javascript blender three.js

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

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

码:

var mixer = new THREE.AnimationMixer( player );
mixer.addAction( new THREE.AnimationAction( player.geometry.animations[0] ) );

mixer.update( 1000 );
Run Code Online (Sandbox Code Playgroud)

Mar*_*ben 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 );

}
Run Code Online (Sandbox Code Playgroud)

每个导出的动画都存储在数组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)
  • "应用修饰符"按钮,而导出总是导致我扭曲
  • 导出时仅选择网格(不是骨架或骨骼)

我的导出设置:
搅拌机三js骨架出口选项

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