【发布时间】:2020-09-29 16:05:55
【问题描述】:
我在 ThreeJS 中加载了一个模型 .gltf,其中包含一个改变对象形状的关键帧动画(它是一个点级动画)。它工作正常,但阴影没有改变!
我玩过geometry.computeVertexNormals(),但是当我应用它时,我的模型变成了全黑。
有人可以帮我解决这个问题吗?
谢谢, 西蒙娜
【问题讨论】:
标签: javascript three.js shadow
我在 ThreeJS 中加载了一个模型 .gltf,其中包含一个改变对象形状的关键帧动画(它是一个点级动画)。它工作正常,但阴影没有改变!
我玩过geometry.computeVertexNormals(),但是当我应用它时,我的模型变成了全黑。
有人可以帮我解决这个问题吗?
谢谢, 西蒙娜
【问题讨论】:
标签: javascript three.js shadow
应该没有理由打电话给BufferGeometry.computeVertexNormals()。您可以通过执行以下操作启用阴影投射:
gltf.scene.traverse( function ( object ) {
if ( object.isMesh ) {
object.castShadow = true;
}
}
如果模型也应该接收阴影,请将属性 receiveShadows 也设置为 true。
您还需要在渲染器上启用阴影,正确配置灯光的阴影相机并确保地板具有可以接收阴影的材质(例如,不是MeshBasicMaterial)。像下面这样的例子可能是一个很好的方向:
https://threejs.org/examples/webgl_animation_skinning_blending
【讨论】: