ShaderMaterial在three.js上的阴影别名

时间:2015-07-24 15:24:56

标签: three.js shadow

这是我的问题的照片,就像你可以看到我的阴影在我的ShaderMaterial上是不平滑的,它是PhongMaterial的副本。

enter image description here

目前我已尝试在互联网上找到所有这些解决方案,但似乎没有任何效果:

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

说实话,我现在不知道该怎么做:/

所以任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:1)

可能是自阴影引起的。尝试设置一个较小的shadowBias值,如0.05或-0.05。

如果你的场景允许,尽可能减少shadowmap截头,改变shadowCamera选项的值,使其完全适合你想要的对象。

如果物体某点处的光线与法线之间的角度接近90度,则可以尝试根据坡度缩放偏差。存在一种称为斜率缩放偏差的方法,其根据光矢量和法向量之间的角度来进行缩放。公式是:

float slope_bias = bias * tan(acos(dot(normal,-lightDirection)));

我希望它有所帮助。