有关我的代码,请参见this JS fiddle。正如你所看到的,在物体和阴影之间有一个间隙。这对聚光灯没有问题。有人知道我该怎么解决这个问题吗?
关键代码片段:
//MATERIAL
var material = new THREE.MeshLambertMaterial();
var terrainMaterial = new THREE.MeshStandardMaterial();
//GEOMETRY
var geometry = new THREE.BoxGeometry(100, 100, 100, 10, 10, 10);
var terrainGeometry = new THREE.PlaneGeometry(10000, 10000, 100, 100);
var mesh = new THREE.Mesh(geometry, material);
mesh.position.z = -500;
mesh.position.x = -100;
mesh.position.y = -50;
scene.add(mesh);
var terrain = new THREE.Mesh(terrainGeometry, terrainMaterial);
terrain.rotation.x = -90 * (Math.PI / 180);
terrain.position.y = -100;
scene.add(terrain);
// pointlight
var light = new THREE.PointLight(0xffffff, 2.0, 1200);
scene.add(light);
var pointLightHelper = new THREE.PointLightHelper(light);
scene.add(pointLightHelper);
light.position.y = 100;
light.target = mesh;
light.castShadow = true;
light.shadow = new THREE.LightShadow( new THREE.PerspectiveCamera( 100, 1, 500, 1000 ) );
light.shadow.bias = 0.0001;
light.shadow.mapSize.width = 512;
light.shadow.mapSize.height = 512;
scene.add(light);
mesh.castShadow = true;
terrain.receiveShadow = true;
发布于 2018-05-29 09:39:55
“阴影相机”实际上是6个透视相机,每个都有一个90度的视野(fov)。因此,如果你想修改阴影相机,你一定不能改变fov。
light.shadow = new THREE.LightShadow( new THREE.PerspectiveCamera( 90, 1, 500, 1000 ) );
three.js r.92
发布于 2018-05-29 09:09:56
尝试使用较小的偏移值。试着将灯光移近或移开,看看这是如何改变事情的。尝试将阴影分辨率调到1024或2048...
https://stackoverflow.com/questions/50574569
复制相似问题