我在Blender有一个基本的漫步动画,我试图导出到THREE.js . 它在Blender播放中看起来不错:
现在,在使用THREE.js导出器导出后,它在浏览器中看起来像这样:
几何形状被打破,而不是在所有身体部位,但肯定有一些问题 . 我不知道现在该做什么,我尝试导出了几个选项已选中/未选中,没有运气 .
我也阅读了这篇文章中的解释,我想我遵循了所有必需的步骤,但仍然得到了这个奇怪的动画:
http://unboring.net/workflows/animation.html#preview
https://github.com/mrdoob/three.js/pull/8412#issuecomment-210675561
https://github.com/mrdoob/three.js/issues/6050
我目前用来加载JSON模型/动画的代码是这样的:
var loader = new THREE.JSONLoader();
var action = {}, mixer;
loader.load(path + '/dino.json', function (geometry, materials) {
materials.forEach(function (material) {
material.skinning = true;
});
character = new THREE.SkinnedMesh(
geometry,
new THREE.MeshFaceMaterial(materials)
);
scene.add(character);
/* ANIMATION */
mixer = new THREE.AnimationMixer(character);
action.walk = mixer.clipAction(geometry.animations[ 3 ]);
action.walk.setEffectiveWeight(1);
action.walk.enabled = true;
/* Update/render functions */
onUpdateFcts.push(function(delta, now){
mixer.update(delta);
});
action.walk.play();
});
我使用Blender 2.78c和THREE.js r84,Blender导出工具包含在此版本中 .
1 回答
我找到了一些关于类似动画问题的有趣链接:
Model with bones animation (blender export) animating incorrectly in three.js
http://dev.mothteeth.com/2012/10/threejs-blender-exporting-skeletal-animations/
Blender exports a three.js animation - bones rotate strangely
在阅读了所有这些建议之后,我成功地导出了动画网格,没有此工作流程后的可视化工件:
通过网格周围的骨骼创建骨架骨骼 . 完成并在对象模式下,首先选择网格,然后选择骨架,按CTRL P>使用自动权重 . 这会在网格上生成骨架修改器 . 根据我的阅读,在导出之前不需要删除骨架修改器 .
您必须具有默认姿势,如休息位置 . 这必须是在Blender上选择的那个 . 此外,必须在该默认姿势中选择播放帧0 .
我在所有涉及的骨骼的每个姿势的开始和结束处创建了关键帧,这似乎很重要 .
您必须取消选择所有内容并仅选择网格,而不是骨架 . 这必须在对象模式下完成 .
我的导出设置:
注意:我必须说这是我跟随的工作流程,没有运气 . 这次差异是我首先删除了每个顶点组,也删除了电枢修改器(不是电枢本身)并重新创建了第一个顶点组的所有步骤 . 现在,一旦导出动画网格就足够了!