В настоящее время я работаю с направленным светом для своей сцены. Маленький персонаж может передвигаться. Все тени работают. Но если я начну немного дальше работать с аватаром, тени на нем перестанут работать. Я думаю, что это может быть из-за угла света, но я не могу это изменить. Я могу нарисовать квадрат вокруг теневой/нетеневой области.
Вот мой код. Огромные числа были здесь для меня, чтобы проверить вещи
const dirLight = new THREE.DirectionalLight( 0xffffff, 1 );
dirLight.color.setHSL( 0.1, 1, 0.95 );
dirLight.position.set( - 1, 1.75, 1 );
dirLight.position.multiplyScalar( 30 );
dirLight.distance = 1200;
dirLight.focus = 1200;
dirLight.angle = Math.PI / 1;
scene.add( dirLight );
dirLight.castShadow = true;
dirLight.shadow.mapSize.width = 2048;
dirLight.shadow.mapSize.height = 2048;
const d = 100;
dirLight.shadow.camera.left = - d;
dirLight.shadow.camera.right = d;
dirLight.shadow.camera.top = d;
dirLight.shadow.camera.bottom = - d;
dirLight.shadow.camera.far = 35000;
dirLight.shadow.bias = - 0;
const dirLightHelper = new THREE.DirectionalLightHelper( dirLight, 10 );
scene.add( dirLightHelper );
Вот код земли, принимающей тени
const groundGeo = new THREE.PlaneBufferGeometry( 10000, 10000 );
const groundMat = new THREE.MeshLambertMaterial( { color: 0xffffff } );
groundMat.color.setHSL( 0.095, 1, 0.75 );
const ground = new THREE.Mesh( groundGeo, groundMat );
ground.position.y = - 33;
ground.rotation.x = - Math.PI / 2;
ground.receiveShadow = true;
scene.add( ground );
Я повторно использовал огромную часть кода из примера ThreeJS с фламинго https://threejs.org/examples/?q=light#webgl_lights_hemisphere
Вот также ссылка на imgur, где я просто поместил картинку, чтобы увидеть тени https://imgur.com/a/MGrc5cw
Спасибо