我正在开发一款小型多人游戏,它有一个单皮肤玩家网格,许多玩家都在使用它。一些背景:我尝试通过 maya 和 blender collada 导出加载。两者似乎都引用了某种形式的动画数据,但我无法让它工作。我试过 Maya JSON 导出器,它只用一条材料线吐出微小的 1k 文件。最后,搅拌机 JSON 导出器工作了。对于那些也尝试加载蒙皮网格的人,我发现这非常有用:Model with bone Animation (blender export) animating wrongly in three.js
所以现在我有一个来自 JSON 加载器的geometry
对象和一个数组。materials
我可以设置skinning=true
材料,创建一个THREE.SkinnedMesh
,将其添加到场景中,通过添加动画THREE.AnimationHandler.add
(我不清楚AnimationHandler
实际做了什么),创建一个THREE.Animation
,调用play()
和update(dt)
。最后,我的场景中播放了一个网格和一个动画。
现在我想要的是这些...
许多实例- 我希望在我的场景中运行不止一个玩家模型。
- 我不希望多次加载相同的网格和动画数据。
- 动画时间应该是每个实例的(所以它们不会同步动画)。
我应该为同一个模型创建很多
THREE.SkinnedMesh
吗THREE.Animation
?从哪里THREE.AnimationHandler
进来?许多动画- 我希望能够单独播放空闲/运行周期。
AFAIK 只有一个动画关键帧时间线。Three.js 如何为我进行分区,还是我必须手动进行?
动画混合- 当一个角色停止运行并静止不动并带有空闲动画时,我不想要从一个到另一个的瞬间捕捉。我想暂停运行动画并将该状态混合回空闲动画。
目前这对于蒙皮网格(不是变形目标)是否可行?是否有关于此的示例或文档?
任何信息都将不胜感激,即使只是朝着正确的方向轻推。我不是在完整的教程之后,我想要一些关于这些特性的更高层次的信息。
我可以愉快地实现2和3,但我想要一些关于threejs 皮肤和动画框架的信息/描述性文档来帮助我入门。例如,这没什么好做的。
[编辑]
谢谢@NishchitDhanani,这个页面非常好,但没有提到多个动画或混合骨骼动画:http ://chimera.labs.oreilly.com/books/1234000000802/ch05.html#animating_characters_with_skinning
这个页面说多个动画仍然是一个当前的问题,但不多(在评论中讨论了一点): http ://devmatrix.wordpress.com/2013/02/27/creating-skeletal-animation-in-blender-and -将它导出到三个 js/
目前的答案是...
- 用了很多
THREE.SkinnedMesh
还是不确定THREE.AnimationHandler
。 - 不知道。也许有一种方法可以在
THREE.Animation
. - 未实施 AFAIK。我可能会尝试创建一个自定义着色器,它可以采用两个
THREE.Animation
s 并在它们之间进行插值。