ThreeJS:对象不会在其他人身上投下阴影
ThreeJS : objects don't cast shadow on others
我正在使用 three v0.85.2
。
默认情况下,我的所有对象都配置为投射和接收阴影:
const mesh = new Mesh(geometry, material)
mesh.castShadow = meshConfig.castShadow
mesh.receiveShadow = meshConfig.receiveShadow
renderer
的 shadowMap
已启用。
似乎正确渲染了自阴影(下图中的绿色方块)。
但是投射到其他物体的阴影丢失了(红色方块)。
问题似乎出现在我所有的网格上。
我找不到让它们出现的方法。
DirectionalLightShadow,您可以在那里阅读在场景中使用 THREE.DirectionalLight()
时如何处理阴影。
您还可以尝试使用光源阴影相机的 .left
、.top
、.right
和 .bottom
属性。
var light = new THREE.DirectionalLight(0xffffff,1);
light.position.set(50, 500, 22);
light.target.position.set(300, 400, 200);
light.shadow.camera.near = 0.5;
light.shadow.camera.far = 5000;
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);
three.js r85
jsfiddle 例子
我正在使用 three v0.85.2
。
默认情况下,我的所有对象都配置为投射和接收阴影:
const mesh = new Mesh(geometry, material)
mesh.castShadow = meshConfig.castShadow
mesh.receiveShadow = meshConfig.receiveShadow
renderer
的 shadowMap
已启用。
似乎正确渲染了自阴影(下图中的绿色方块)。 但是投射到其他物体的阴影丢失了(红色方块)。
问题似乎出现在我所有的网格上。 我找不到让它们出现的方法。
DirectionalLightShadow,您可以在那里阅读在场景中使用 THREE.DirectionalLight()
时如何处理阴影。
您还可以尝试使用光源阴影相机的 .left
、.top
、.right
和 .bottom
属性。
var light = new THREE.DirectionalLight(0xffffff,1);
light.position.set(50, 500, 22);
light.target.position.set(300, 400, 200);
light.shadow.camera.near = 0.5;
light.shadow.camera.far = 5000;
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);
three.js r85
jsfiddle 例子