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 平面几何体网格在threeJS r86中未接收阴影_Javascript_Three.js - Fatal编程技术网

Javascript 平面几何体网格在threeJS r86中未接收阴影

Javascript 平面几何体网格在threeJS r86中未接收阴影,javascript,three.js,Javascript,Three.js,我目前正在学习WebGL和ThreeJS(r86),在THREE.PlaneGeometrymesh对象上投射阴影时遇到困难。下面是与我的场景中的照明相关的代码片段 var light = new THREE.DirectionalLight(0xffffff); light.position.set(0,5,5); light.target.position.set(0,0,0); light.shadow.camera.near = 0.1;

我目前正在学习WebGL和ThreeJS(r86),在
THREE.PlaneGeometry
mesh对象上投射阴影时遇到困难。下面是与我的场景中的照明相关的代码片段

    var light = new THREE.DirectionalLight(0xffffff);
    light.position.set(0,5,5);
    light.target.position.set(0,0,0);
    light.shadow.camera.near = 0.1;       
    light.shadow.camera.far = 1000;      
    light.shadow.camera.left = -500;
    light.shadow.camera.bottom = -500;
    light.shadow.camera.right = 500;
    light.shadow.camera.top = 500;
    light.castShadow = true;
    scene.add(light);

这里有一个例子来说明我的问题。我确保对场景中的所有对象都将
obj3D.receiveShadow
obj3D.castShadow
设置为true,但
THREE.PlaneGeometry
网格不会渲染任何阴影效果。非常感谢您的帮助。

首先,您需要在渲染器上添加启用阴影贴图。在您的示例中,将阴影贴图属性指定为“true”,这是错误的

renderer.shadowMap.enabled = true;
用作地板的平面向后旋转,并且是双面材质。这不是很推荐,因为着色器将删除它,但计算可能会丢失或出现错误

替换这个

floor.rotation.x += Math.PI/2;
使用此选项可以在真实曲面上投影阴影

floor.rotation.x -= Math.PI/2;
用户阴影贴图大小为2的数字幂

light.shadow.mapSize.width = 2048;
light.shadow.mapSize.height = 2048;
阴影贴图的摄影机边界非常大。用小一点的


非常感谢。它正按照我的预期工作。我没有意识到飞机的后部与着色器有关。