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