ThreeJS 开启阴影正确做法:

1. 渲染器启用阴影 renderer.shadowMap.enabled = true;
2. 灯光产生阴影 light.castShadow = true;
3. 物体遮挡阴影 obj.castShadow = true;
4. 地面显示阴影 obj.receiveShadow = true;

无阴影效果

ThreeJS 阴影条纹BUG

有阴影效果,产生了许多条纹

ThreeJS 阴影条纹BUG

产生原因

1. 将四方块设置为 不接收阴影 obj.receiveShadow = false; 可避免条纹,但四方块上就没有投影效果了。
2. 将材质的 let material = new THREE.MeshLambertMaterial( { color: color, side: THREE.DoubleSide } ); side属性去掉也可以正常。
3. 或者将材质的投影面设置为背面也可解决 let material = new THREE.MeshPhysicalMaterial( { color: color, side: THREE.DoubleSide, shadowSide: THREE.BackSide } );

正确阴影效果

ThreeJS 阴影条纹BUG

总结:

材质的 sideshadowSide 设置对阴影产生影响,需特别注意;

ThreeJS 阴影条纹BUG

相关文章:

  • 2021-05-27
  • 2022-02-26
  • 2021-12-26
  • 2022-01-15
  • 2021-11-17
  • 2022-01-18
猜你喜欢
  • 2022-12-23
  • 2022-01-22
  • 2022-01-06
  • 2021-05-20
  • 2022-01-23
  • 2021-04-23
相关资源
相似解决方案