我有一个正在播放动画的 Three.js 项目,我想在不同的时间找到骨架骨骼的位置。
例如,如果我去:https://modelviewer.dev/examples/animation/index.html 并找到 Three.js 场景:
const modelViewer = document.querySelector("model-viewer");
const scene = modelViewer[Object.getOwnPropertySymbols(modelViewer)[14]];
然后我可以访问例如LowerArmR
在这种情况下动画的位置:
scene.children[0].children[0].children[0].children[0].children[1].children[0].skeleton.bones.find(b => b.name == "LowerArmR").position
如果我这样做,在动画的不同点,我总是得到相同的位置:
{x: 1.86264503820865e-10, y: 0.00575238140299916, z: -1.02445485428149e-9}
如何在动画期间访问当前骨骼位置?
如果我在人形化身动画上执行此过程,然后尝试绘制骨骼的位置,我只会得到 T 姿势,而不是每个给定时间的实际位置:
从这里我可以看到:
骨骼动画在 GPU 上处理,因此在运行时无法在 js 代码中完全访问这些数据。
也许有人知道一些解决方法,但据我所知,没有。
我正在寻找解决方法或规范的方法来做到这一点。