我有一个gltf文件,它是从Blender导出的,具有6个动画和20个变形目标。当那是场景中唯一蒙皮的gltf对象时,一切都很好玩-我可以在骨骼动画(跑步,走路,闲置等)之间切换,并获取所有变形动画(用于面部表情)在计时器上循环或由事件触发。是的。
问题是当我引入第二个皮肤对象(例如NPC)时。从那时起,很多怪异现象开始发生。
例如,当变形目标对象打开/关闭播放器对象的循环表达式时,附近的NPC模型将缩小并在关闭周期中消失,然后在打开周期中再放大。另一个示例,在初始化时,NPC对象可能会随机变成另一个已加载对象(树或建筑物)的实例,或者偶尔变成某个随机对象的迷你版本(正常比例为10%),然后在附近快速弹跳。不可预测和不一致的方式。我不知道发生了什么。
我认为可能与加载多个混音器有关,但这就是文档状态应做的事情:“当场景中的多个对象被独立设置动画时,每个对象可以使用一个AnimationMixer。”除非我读错了?
我正在使用:
npcMixer = new THREE.AnimationMixer(npc);
与我为玩家所做的几乎一样:
playerMixer = new THREE.AnimationMixer(player);
这是一种错误/错误的方法吗?
也许值得一提:当导出并作为单个文件访问时,我的播放器和NPC的FBX版本可以很好地协同工作。然后,我花了很多时间转换为GLTF,因为它更快,并且可以将所有动作打包到一个文件中,FBX导出器似乎不支持(如果我对FBX能够在其中导出多个动作不正确的话)一个单独的文件要在three.js上下文中播放,请告诉我!)。
Three.js r98
搅拌器2.79
谢谢您的建议。