具有形态属性的动画缓冲区几何不更新阴影

Animated buffergeometry with morphattributes not updating shadow

我已将库中的 MD2 代码转换为使用 THREE.BufferGeometry 而不是 THREE.Geometry 以大大改善内存占用。为此,我只需在加载完成后将模型转换为 THREE.BufferGeometry。我还必须修改 MorphBlendMesh 代码以使用 morphTargetInfluences.

的属性

这很好用,除了问题:阴影在动画期间不更新,它总是使用动画第一帧的阴影。

我还没有看到关于 morphTargetInfluences 属性的任何文档,所以我没有太多要继续的内容。

我真的无法 post 代码,因为它在整个代码库中分散得太多了。

我只是希望外面的人可能对变形动画期间阴影如何更新有一些见解,并且可能会为我指明正确的方向来研究这个问题。

我找到了问题,并找到了解决方法!

着色器渲染器中的代码在决定设置 'usemorphing' 标志之前检查 geometry.morphTargets 是否具有非零长度。转换后的 buffergeometry 没有 .morphTargets 字段,因为对于 buffergeometries,此信息似乎已移至 .morphAttributes

我的破解方法是添加一个伪造的 .morphTarget 列表,如下所示:

Buffergeometry.morphTargets = [];
Buffergeometry.morphTargets.push(0);