Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用three.js避免未照明面上的阴影_Javascript_Three.js_Shadow - Fatal编程技术网

Javascript 如何使用three.js避免未照明面上的阴影

Javascript 如何使用three.js避免未照明面上的阴影,javascript,three.js,shadow,Javascript,Three.js,Shadow,使用three.js时,背向聚光灯的面似乎仍然会接收由该面和聚光灯之间的其他网格造成的阴影。我们怎样才能避免这种阴影 例如,见。在本例中,我们有一个简单的场景,其中包含聚光灯、环境光、立方体、球体和摄影机。聚光灯的阴影摄影机的平截体设置为可见 正如我们所看到的,球体在距离球体最远的立方体面上投射阴影,但这看起来是错误的,因为该面远离聚光灯,并且没有被聚光灯照亮。我想避免这种情况 请注意,这个JSFIDLE是我想要实现的简化版本。在实际的代码中,网格形状更复杂,摄影机也会四处移动,因此,无论是关闭

使用three.js时,背向聚光灯的面似乎仍然会接收由该面和聚光灯之间的其他网格造成的阴影。我们怎样才能避免这种阴影

例如,见。在本例中,我们有一个简单的场景,其中包含聚光灯、环境光、立方体、球体和摄影机。聚光灯的阴影摄影机的平截体设置为可见

正如我们所看到的,球体在距离球体最远的立方体面上投射阴影,但这看起来是错误的,因为该面远离聚光灯,并且没有被聚光灯照亮。我想避免这种情况

请注意,这个JSFIDLE是我想要实现的简化版本。在实际的代码中,网格形状更复杂,摄影机也会四处移动,因此,无论是关闭阴影还是减少阴影摄影机,我都不能选择Rafar

以下是我认为代码中最相关的部分。有关完整代码,请参阅上面指向JSFIDLE的链接

sphereMesh.castShadow = true;
...
cubeMesh.receiveShadow = true;
...
light.castShadow = true;
light.shadowCameraVisible = true;
light.shadowCameraNear = 200;
light.shadowCameraFar = 1000;
light.shadowCameraFov = 30;
light.shadowBias = 0;
light.shadowDarkness = 0.5;
light.shadowMapWidth = 2048;
light.shadowMapHeight = 2048;
...
scene.add(new THREE.AmbientLight(0x404040));
...
var renderer = new THREE.WebGLRenderer();
...
renderer.shadowMapEnabled = true;
renderer.shadowMapType = THREE.PCFShadowMap;

中的第三个数字似乎说明了相同的问题,但它不是该问题的要点,我在该问题的答案中找不到我问题的答案。

重复的。另请看:@WestLangley:它们确实是同一个问题,显然我没有找到。谢谢你的指点!