提问人:Beshoy FD 提问时间:7/2/2023 更新时间:9/13/2023 访问量:109
使用模型查看器播放多动画,使用混合器实例
Play multi animation with model viewer , using mixer instance
问:
我正在尝试在 Parellal 中播放多个动画,因为包不支持它,我正在尝试使用以下代码从场景访问混合器的实例
const $scene = Object.getOwnPropertySymbols(modelViewer).filter(symbol => symbol.description === 'scene')[0];
const scene = modelViewer[$scene];
console.log(scene);
const clips = scene.animations;
console.log(clips);
console.log(scene.mixer);
scene.mixer.clipAction(clips[0]).play();
我得到了混合器和场景的实例,但动画无法播放
我试过玩动画,但它根本不起作用
答:
0赞
Vincent
9/13/2023
#1
我或多或少尝试了相同的方法 - 使用像 three.js 这样的动画混合器在模型查看器中播放两个动画。 据我了解(和研究),这不可能开箱即用,需要实现(尽管这似乎并非不可能,因为模型查看器代码高度依赖于 three.js,因此可以扩展)。
但是,我找到了一种适用于某些用例的解决方法。 我有一个模型,有两个独立移动的部件(比方说一个带门和抽屉的餐边柜)。 在模型查看器中,我添加了两个滑块,第一个滑块控制门,第二个滑块控制抽屉。 在Blender中,我创建了一个3 * 3帧的动画,每个帧都显示了门和抽屉的打开角度和打开位置的不同组合。 导出到 glb 时,将所有动画打包为一个非常重要。 所以我得到这样的东西:
- 框架:开门 0% / 抽屉开 0%
- 框架:开门50%/抽屉开0%
- 框架:开门100%/抽屉开0%
- 框架:开门 0% / 抽屉开 50%
- 框架:开门 50% / 抽屉开 50%
- 框架:开门100%/抽屉开50%
- 框架:开门 0% / 抽屉开 100%
- 框架:开门 50% / 抽屉开 100%
- 框架:开门100%/抽屉开100%
滑块根据另一个滑块的当前值选择要显示的正确帧。 当然,您可以通过添加更多帧等来优化它。 但它工作得很好(而且特别流畅!),并且可以扩展到更多的对象,尽管它变得更加复杂。
评论