0

我试图使用简单的定向光和阴影材质来创建阴影,问题是阴影似乎可以正常工作,在一个盒子里,当模型在那个区域之外时它就消失了???

边界处的阴影图像

这是代码:

var light = new THREE.DirectionalLight(0xffffff, 0);
renderer.shadowMap.enabled = true;
light.position.x = 100;
light.position.y = 150;
light.position.z = 0;
light.castShadow = true;
scene.add(light);

plane.receiveShadow = true;
plane.material = new THREE.ShadowMaterial({color: 0, opacity:1});
4

1 回答 1

1

您必须配置内部阴影相机DirectionalLight才能获得正确的阴影。使用以下示例作为您自己的代码的模板。重要的部分是:

var d = 5;
directionalLight.castShadow = true;
directionalLight.shadow.camera.left = - d;
directionalLight.shadow.camera.right = d;
directionalLight.shadow.camera.top = d;
directionalLight.shadow.camera.bottom = - d;

directionalLight.shadow.camera.near = 1;
directionalLight.shadow.camera.far = 20;

此配置确定场景的哪个部分将通过定向光创建和接收阴影。请注意将截锥体设置得尽可能紧,以获得清晰的结果。

于 2018-08-12T09:37:14.297 回答