我正在使用一个 json 文件,其中包含从搅拌机导出的一个对象和 2 个动画(例如:walk 和 lift_arm)。我可以单独播放动画,也可以同时播放两个动画。没关系,但是当他们一起玩时(在完成
anim1.play()
和anim2.play()
之后同时玩),似乎每个人都只玩了一半,就好像时间线会以两倍的速度运行一样。为什么会这样?
我知道这个问题很旧,但 ChatGPT 才将我指向相关页面。
据我了解,您的问题与 Blender 如何导出数据有关。
此代码将从相应的 Three.js 动画轨道中删除不发生更改的关键帧。 然后您就可以同时播放动画了。
如果您还有一个没有休息姿势的动画或包含您的休息姿势的动画(我的解决方案需要它来解决这个特定问题),那么您需要将 isStatic 初始化为 false 并反转for 循环中最里面的 if 条件,其中 isStatic 设置为 true。然后,您可以在那里进行检查,并且仅当轨道中的任何帧等于您的休息姿势轨道时才更改 isStatic。
...
const anyFrameEqual = ...
let isStatic = false
for (...) {
for (...) {
if (anyFrameEqual && !formerCondition) {
isStatic = true;
break;
}
}
...
}
...
此代码需要注意的是,您的关键帧必须更改才能保持在轨道上。因此,一个武装动画将使另一只手臂进入模型的默认姿势,这可能是 T 形姿势。