Javascript 3.js暗疮的成因及修复方法

Javascript 3.js暗疮的成因及修复方法,javascript,three.js,model,Javascript,Three.js,Model,为了让所有阴影都被渲染,我将shadow.camera.top/bottom/left/right设置为平行光(投射阴影),但它会导致阴影痤疮。 我尝试使用shadow.bias,但仍然不对。是什么导致暗疮?如何修复 这是我的密码 light=新的三方向灯(0xffffff); 光。位置。设置(38,82,1); light.castShadow=true; //light.shadow.bias=-0.001; light.shadow.mapSize.width=2048; light.s

为了让所有阴影都被渲染,我将
shadow.camera.top
/
bottom
/
left
/
right
设置为平行光(投射阴影),但它会导致阴影痤疮。 我尝试使用
shadow.bias
,但仍然不对。是什么导致暗疮?如何修复

这是我的密码

light=新的三方向灯(0xffffff);
光。位置。设置(38,82,1);
light.castShadow=true;
//light.shadow.bias=-0.001;
light.shadow.mapSize.width=2048;
light.shadow.mapSize.height=2048;
light.shadow.camera.near=0.1;//和照相机一样
light.shadow.camera.far=1000;//和照相机一样
light.shadow.camera.top=120;
light.shadow.camera.bottom=-120;
light.shadow.camera.left=120;
light.shadow.camera.right=-120;
场景。添加(灯光);

谢谢

shadow.bias
设置为
-0.0005
似乎可以移除阴影瑕疵。但是,阴影的质量仍然不好,因为阴影的边缘看起来非常块状


考虑将属性
renderer.shadowMap.type
设置为
THREE.PCFSoftShadowMap
,这将显著提高阴影质量。减少阴影摄影机截锥体的大小,只在某个“焦点”区域投射阴影,这可能也是一个好主意。另一个选项是将高质量照明烘焙到光照贴图中,然后将其应用于城市材质的
光照贴图
属性。您也可以将阴影贴图的分辨率提高到
4096 x 4096
,但这会对性能产生影响,尤其是在移动设备上。

您能用一个例子来说明这个问题吗?调整
灯光、阴影、偏差
没有任何帮助时,这很奇怪。顺便说一句:阴影摄影机不必使用与实际摄影机相同的
near
far
值来渲染场景。我建议您使用
THREE.CameraHelper
来可视化阴影摄影机,并使平截头体尽可能紧密。您可以像so
scene.add(new THREE.CameraHelper(light.shadow.camera))那样创建辅助对象。这是我的密码。:)由于没有从后端正确加载JSON文件(我可以在网络选项卡中看到状态为“挂起”),因此小提琴似乎不起作用。你能在这里共享JSON文件吗?然后我可以做一个本地测试
to
light1.shadow.camera.left=-side
light1.shadow.camera.right=-side
to
light1.shadow.camera.right=side。看起来好多了。我认为用3DsMax或搅拌机烘焙是最好的解决方案。:)