2016-06-17 2 views
3

У меня проблема с тенями. Вот изображение этой проблемы я столкнулся:Артефакты в тени, используя стандартный MeshPhongMaterial

An image is waaay better than a thousand words

enter image description here

Я не могу понять, почему есть эти строки там, он должен быть полностью освещен! Я не понимаю, почему фактические тени кажутся действительно гладкими, а границы хороши для того, что я пытаюсь сделать, но тогда у меня эти линии повсюду.

Моя конфигурация света:

var dirLight = new THREE.DirectionalLight(0xfeffaf, 1); 
dirLight.position.set(dimensions.middlePoint.x, 
    dimensions.middlePoint.y + (dimensions.lengthY/2), 
    dimensions.middlePoint.z + dimensions.lengthZ); 
dirLight.target.position.set(
    dimensions.middlePoint.x, 
    dimensions.middlePoint.y, 
    dimensions.minZ); 
dirLight.castShadow = true; 
dirLight.shadowDarkness = 0.4; 
dirLight.shadowMapWidth = 1024; 
dirLight.shadowMapHeight = 1024; 
dirLight.shadowCameraNear = 1; 
dirLight.shadowCameraFar = dimensions.lengthY * 2; 
dirLight.shadowCameraLeft = - dimensions.lengthX/2; 
dirLight.shadowCameraRight = dimensions.lengthX/2; 
dirLight.shadowCameraTop = dimensions.lengthY/2; 
dirLight.shadowCameraBottom = -dimensions.lengthY/2; 
dirLight.shadowBias = 0.0000005; 
scene.add(dirLight); 

И тогда мой визуализации конфигурации:

threeRender = new THREE.WebGLRenderer({ antialias: true }); 
threeRender.shadowMap.enabled = true; 
threeRender.shadowMap.renderReverseSided = false; 
threeRender.shadowMapSoft = true; 
threeRender.shadowMapType = THREE.PCFSoftShadowMap; 

Пожалуйста, дайте мне знать, как я могу это исправить, как хорошо, как указал мне в правильном направлении ее фиксации , Большое спасибо.

+0

См. Http://stackoverflow.com/questions/34778864/strange-behaviour-of-shadowing-in-threejs/34779433#34779433 – WestLangley

+0

@WestLangley большое спасибо. С тех пор я много читаю, и я столкнулся с этой проблемой [github] (https://github.com/mrdoob/three.js/issues/6420). Это было реализовано? Могу ли я попробовать? Кажется, он справляется с производительностью и акне/петтер-панорамированием, поэтому вы можете себе представить, почему я хотел бы попробовать. – tfrascaroli

+0

Я считаю, что это было реализовано. Почему вы не проверяете и не подтверждаете? – WestLangley

ответ

3

Увеличьте значение вашего shadowBias. Артефакт известен как тень акне:

enter image description here

См this link для более подробной информации.

+0

О, ничего себе, я думал, что это было наоборот, и продолжал уменьшать его! Одна вещь: теперь я не получаю никаких теней: S – tfrascaroli

+0

Увеличьте разрешение shadowMap (ширина и высота), уменьшите теневое усечение (shadowCameraXXX ...). ShadowCameraNear должен быть как можно большим. – user80667

+0

Ссылка, которую вы предоставили, имеет огромную помощь. Я понятия не имел, как назвать проблему, это была моя первая проблема (я не мог ее правильно найти). Ваше решение было правильным, хотя просто подталкивание значения не совсем помогло, поскольку тени исчезли. Я отрицал это (-0.006), и теперь все выглядит просто великолепно. Большое вам спасибо, я принимаю ваш ответ. – tfrascaroli

Смежные вопросы