我正在开发一款小型多人游戏,它有一个单一的皮肤玩家网格,很多玩家使用它.一些背景:我尝试通过maya和blender collada export加载.两者似乎都参考了某种形式的动画数据,但我无法让它发挥作用.我已经尝试过maya JSON导出器,它只用一条物质线吐出很小的1k文件.最后,搅拌机JSON导出器工作.对于那些也试图加载蒙皮网格的人,我发现这非常有用:模型与骨骼动画(blender导出)在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 -exporting,其对三JS /
目前的答案是......
使用很多THREE.SkinnedMesh
但仍然不确定THREE.AnimationHandler
.
不知道.也许有一种方法可以手动修改开始/结束关键帧THREE.Animation
.
未实施AFAIK.我可能会尝试创建一个自定义着色器,可以使用两个THREE.Animation
s并在它们之间进行插值.
insominx.. 13
从版本67(2014年4月)开始,支持骨架动画混合和多个动画.您仍然需要SkinnedMesh
为每个模型创建一个.该AnimationHandler
负责更新(打勾)每一帧动画,所以你应该叫上更新,而不是手动每个Animation
.
请参阅新添加的示例:webgl_animation_skinning_blending.html或在此处查看我自己的几个:
基本字符控制器(时间扭曲速度混合)
时间扭曲速度混合