Three.js:点光源更改距离

Three.js:点光源更改距离,three.js,distance,lighting,Three.js,Distance,Lighting,我用three.js制作了一个场景,其中我使用了点光源 var distance = 10000; var intensity = 10; var decay = 0; var hex = 0xFFFFFF; var light1 = new THREE.PointLight(hex, intensity, distance, decay); 我想使用阴影,所以我添加了 light1.shadow.camera.near = 200; light1.shadow.camera.far = 10

我用three.js制作了一个场景,其中我使用了点光源

var distance = 10000;
var intensity = 10;
var decay = 0;
var hex = 0xFFFFFF;
var light1 = new THREE.PointLight(hex, intensity, distance, decay);
我想使用阴影,所以我添加了

light1.shadow.camera.near = 200;
light1.shadow.camera.far = 10000;
light1.shadow.camera.fov = 90;
light1.shadow.bias = -0.00022;
light1.shadow.mapSize.width = 1024;
light1.shadow.mapSize.height = 1024;
在这里之前,一切都很完美。但是,只要我在下一行中包括:

light1.castShadow = true;
然后距离明显地从
10000
变为
1000

如果我调用从
light1
到控制台的距离,它仍然是
10000

即使它与画布中的距离不同。
(我已将其更改为约50位数字,距离不变)


关于如何解决此问题有何建议?

您可以尝试通过
THREE.Texture()
创建阴影,这样阴影将是一个独立的元素,并且不应影响
点光源的位置

var shadowTexture = new THREE.Texture(canvas);
shadowTexture.needsUpdate = true;
var shadowMaterial = new THREE.MeshBasicMaterial({map: shadowTexture, opacity: 0.5});
var shadowGeo = new THREE.PlaneBufferGeometry(100, 100, 100, 1);

// Locate the position of the shadows
mesh = new THREE.Mesh(shadowGeo, shadowMaterial);
mesh.position.y = 0;
mesh.rotation.x = - Math.PI / 2;
scene.add( mesh );
我将阴影应用于
平面几何体
,因为我假设阴影投射在场景上。在任何情况下,还可以查看场景中的阴影