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

除问题外,这非常有效:阴影在动画过程中不会更新,它始终使用动画第一帧中的阴影。

我还没有看到有关morphTargetInfluences属性的任何文档,所以我没有太多事情要做。

我不能真正发布代码,因为它在整个代码库中分布太多。

我只是希望外面有人对变形动画期间阴影如何更新有一些见识,也许可以为我指出有关研究此问题的正确方向。

最佳答案

我已经找到了问题,并且可以解决!

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

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

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

10-04 19:21