three.js动画:Skeleton / Skinning vs Morph

时间:2014-10-17 18:19:58

标签: animation three.js blender morphing skeletal-animation

因此,在对Morph和Skeletal动画进行一些实验(从Blender导出)后,我发现骨架文件比变形文件小近10倍。看起来很明显骨架是更好的选择,但我想知道是否有使用它的缺点。

具体来说,我怀疑需要更多的处理来动画骨骼而不是变形。什么时候比另一个更好?如果我动画100个模型而不仅仅是一个,那会有关系吗?如果骨架确实需要更多处理,并且我在线托管应用程序,那么带宽的减少(由于文件较小)是否值得在运行时需要额外的处理?

感谢您的任何意见。

1 个答案:

答案 0 :(得分:3)

实际上,骨骼动画需要更多的处理,因为骨骼'必须在每个帧中计算矩阵(在JS中)并上传到GPU。使用变形动画时,所有插值都可以在GPU端完成。所以这真的是一种记忆表现的交易。

当您同时播放许多动画时,处理确实会有一些成本。然而,与此同时,几种不同的变形动画将具有较大的文件大小。

如你所说。

所以这取决于案例。你应该注意一些细节:

  • 如果动画不太快或太复杂,可以使用每秒减少的帧存储变形动画,这样您将拥有较小的文件。
  • 骨骼动画具有骨骼信息,可用于将物品附加到模型中,例如:你有一个士兵模型,你想要附加不同的枪。使用变形动画,您无法执行此操作,因此您必须为士兵和每一支枪制作动画。
  • 您可以在同一个应用程序中实际使用这两种类型的动画,为每次使用选择最合适的动画。
  • 与MorphAnimMesh-es相反,SkinnedMesh-es目前不支持光线投射。如果你需要光线投射,例如选择对象时,您需要暂时使用变形动画。