首页 > Web开发 > 详细

ThreeJS 阴影条纹BUG

时间:2020-01-16 11:48:27      阅读:318      评论:0      收藏:0      [点我收藏+]

ThreeJS 开启阴影正确做法:

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

无阴影效果

技术分享图片

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

技术分享图片

产生原因

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 } );

正确阴影效果

技术分享图片

总结:

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

技术分享图片

ThreeJS 阴影条纹BUG

原文:https://www.cnblogs.com/zjfree/p/12199783.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!