我已将库中的MD2代码转换为使用THREE.BufferGeometry
而不是THREE.Geometry
来大大改善内存占用。为此,我只需在加载完成后将模型转换为THREE.BufferGeometry
。我还必须修改MorphBlendMesh
代码以使用morphTargetInfluences
。
除了问题之外,效果很好:阴影在动画期间不会更新,它总是使用动画第一帧的阴影。
我还没有看到关于morphTargetInfluences
属性的任何文档,所以我没有太多可以继续下去。
我无法发布代码,因为它在代码库中分布太多。
我只是希望有人可以对变形动画期间阴影如何更新有所了解,并且可能指出我如何研究这个问题的正确方向。
答案 0 :(得分:0)
我找到了问题,并找到了解决方法!
着色器渲染器中的代码在决定设置geometry.morphTargets
标志之前检查'usemorphing'
是否具有非零长度。转换后的缓冲区几何图形没有.morphTargets
字段,因为此信息似乎已移至.morphAttributes
缓冲区域。
我的黑客解决方法是添加一个假的.morphTarget
列表,如下所示:
Buffergeometry.morphTargets = [];
Buffergeometry.morphTargets.push(0);