具有形态属性的动画缓冲区几何不更新阴影
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);
我已将库中的 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);