这是我的问题的照片,就像你可以看到我的阴影在我的ShaderMaterial上是不平滑的,它是PhongMaterial的副本。
目前我已尝试在互联网上找到所有这些解决方案,但似乎没有任何效果:
groundGeometry.computeFaceNormals();
groundGeometry.computeVertexNormals();
groundGeometry.verticesNeedUpdate = true;
renderer.shadowMapType = THREE.PCFShadowMap; //And all options possible
renderer.shadowMapCullFace = THREE.CullFaceBack; //And the other one
renderer = new THREE.WebGLRenderer({ antialias : true });
我也玩我的SpotLight的不同参数(也尝试使用定向灯:
shadowMapWidth
shadowMapHeight
shadowCameraLeft
shadowCameraRight
shadowCameraBottom
shadowCameraTop
shadowCameraNear
shadowCameraFar
shadowBias
说实话,我现在不知道该怎么做:/
所以任何帮助都会非常感激!
答案 0 :(得分:1)
可能是自阴影引起的。尝试设置一个较小的shadowBias值,如0.05或-0.05。
如果你的场景允许,尽可能减少shadowmap截头,改变shadowCamera选项的值,使其完全适合你想要的对象。
如果物体某点处的光线与法线之间的角度接近90度,则可以尝试根据坡度缩放偏差。存在一种称为斜率缩放偏差的方法,其根据光矢量和法向量之间的角度来进行缩放。公式是:
float slope_bias = bias * tan(acos(dot(normal,-lightDirection)));
我希望它有所帮助。