2012-06-20 21 views
6

Tengo un avión verde y un cubo rojo sobre él. La luz es una luz direccional.¿Por qué la sombra está en el lugar equivocado? (Three.js)

shadow

¿Por qué es la sombra en el lugar equivocado? Código: http://jsfiddle.net/pD8dn/


Editar:

Si cambio la light.shadowBias entonces la sombra en el avión es correcta, pero la sombra es en el cubo incorrecto:

shadow

http://jsfiddle.net/pD8dn/4/

Gracias de antemano,

+2

¿Puede dar su código? –

+0

@ EmilVikström Aquí está: http://jsfiddle.net/pD8dn/ – eqiproo

Respuesta

6

Este es uno de los artefactos más comunes para los mapas de sombras, se llama "Peter Panning".

Una solución es añadir un poco pequeño sesgo para las pruebas de profundidad:

light.shadowBias = 0.001; 

valor exacto del sesgo necesita ajustarse para cada escena (y por desgracia a veces no va a ser capaz de deshacerse de todos artefactos en todas partes, sintonizar mapas de sombras es más arte que ciencia).

Esto es lo que funciona para su ejemplo:

http://jsfiddle.net/pD8dn/2/

+0

gracias, pero todavía con errores. Edité la pregunta – eqiproo

+3

Sí, eso es lo que quise decir, con shadowmaps es necesario jugar con los parámetros (resolución, tamaño y posición del tronco trunco, sesgo) y encontrar un equilibrio entre los diferentes tipos de artefactos. Tenga en cuenta que el sesgo puede ser muy sensible a pequeñas variaciones, experimentar con él y ver los efectos. – alteredq

+0

Si tengo objetos más grandes y más pequeños también en mi escena, entonces no puedo encontrar una buena solución. ¿Es un error en Three.js? Porque en las demostraciones de otras bibliotecas 3D no he encontrado un error como este. – eqiproo

Cuestiones relacionadas