如何改变three.js对象投射阴影的强度?

时间:2013-12-19 07:50:15

标签: three.js

如何改变three.js中物体投射阴影的强度?目前,半透明材料会产生与不透明物体一样强烈的阴影。显然,我希望半透明的人不会投下如此强烈的阴影。

2 个答案:

答案 0 :(得分:3)

使用WebGLRenderer在three.js中投射阴影时,从灯光的角度来看,对象被视为实心和非半透明。

通过将light.shadowDarkness设置为[0,1]范围内的值,您可以在每个灯光的基础上控制阴影强度。

three.js r.64


编辑:自from.js r.74起不再支持light.shadowDarkness。您可以为场景添加环境光以进行补偿。

three.js r.75

答案 1 :(得分:0)

在同一位置创建两个点光源,一个投射阴影,另一个不投射阴影。通过使阴影光变暗,​​可以创建柔和的阴影。

在下面的示例中请注意,两个指示灯均处于-100,200,200的位置。从该位置发出的光的总强度为0.9,但投射阴影的光仅为0.2。

var shadowLight = new THREE.PointLight(0xffffff, 0.2);
shadowLight.position.set(-100,200,100);
shadowLight.castShadow = true;
shadowLight.shadow.mapSize.width = 2048;
shadowLight.shadow.mapSize.height = 2048;
scene.add(shadowLight);

var light = new THREE.PointLight(0xfffff3, 0.7);
light.position.set(-100,200,100);
scene.add(light);