루프의 모든 큐브가 그림자를 드리 우지 않는 이유는 무엇입니까?
모든 큐브가 그림자를 투사해야하는 방향 조명으로 작업합니다. 그러나 어떤 이유로 5 열 정도 후에 중지됩니다.
let dirLight = new THREE.DirectionalLight(0xFFFFFF, 1.5);
dirLight.position.set(300, -300, 400);
dirLight.castShadow = true;
scene.add(dirLight);
dirLight.shadow.mapSize.width = 512;
dirLight.shadow.mapSize.height = 512;
dirLight.shadow.camera.near = 0.5;
dirLight.shadow.camera.far = 1000;
let cubeGeometry = new THREE.BoxGeometry(1, 3, 1);
let cubeMaterial = new THREE.MeshLambertMaterial({
color: 0xf54242
});
function drawCubes() {
for (let c = 0; c < 25; c++) {
for (let r = 0; r < 10; r++) {
for (let t = 0; t < 2; t++) {
let cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
cube.position.x = c * 1.3;
cube.position.y = r * 3.02;
cube.position.z = t * 1.01;
cube.castShadow = true;
cube.receiveShadow = true;
scene.add(cube);
}
}
}
}
drawCubes();
방향성 그림자 카메라의 기본 절두체가 너무 작기 때문에 그림자가 잘립니다. 다음과 같이 시도하십시오.
const d = 50;
dirLight.shadow.camera.left = - d;
dirLight.shadow.camera.right = d;
dirLight.shadow.camera.top = d;
dirLight.shadow.camera.bottom = - d;
THREE.CameraHelper
섀도우 카메라를 디버그하는 데 사용할 수도 있습니다 . 조정에 매우 유용합니다. 그림자 품질은 절두체에 따라 크게 달라집니다. 절두체가 촘촘할수록 그림자가 더 선명 해집니다.
scene.add( new THREE.CameraHelper( dirLight.shadow.camera ) );
three.js R109
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다