同时播放同一对象的多个动画

问题描述 投票:0回答:1

我正在使用一个 json 文件,其中包含从搅拌机导出的一个对象和 2 个动画(例如:walk 和 lift_arm)。我可以单独播放动画,也可以同时播放两个动画。没关系,但是当他们一起玩时(在完成

anim1.play()
anim2.play()
之后同时玩),似乎每个人都只玩了一半,就好像时间线会以两倍的速度运行一样。为什么会这样?

animation three.js timeline
1个回答
0
投票

我知道这个问题很旧,但 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 形姿势。

© www.soinside.com 2019 - 2024. All rights reserved.