9.8.4 ¿Posibles soluciones?
1) Entonces, ¿Qué fue lo que hice para obtener la segunda imagen al
principio de esta página?
Sólo especifiqué los objetos sin sombra -shadowless-. Esto elimina
el problema de la superficie sombreando el punto equivocado.
Esto, por supuesto, tiene problemas severos. Puesto que el objeto no
proyecta ya ninguna sombra, probablemente no podrá usarse en cualquier
escena real (aunque el hacer las rocas sin sombra en la imagen ganadora
del IRTC mencionada anteriormente quizás habría ayudado mucho a la
imagen sin hacerla demasiado no realista).
Con mallas de triángulos suavizadas también se introduce otro
artefacto, que puede verse en la segunda imagen del comienzo de la
página. No conozco el mecanismo exacto de este artefacto pero es una
consecuencia diracta de que la malla sea sin sombra, pero puede que
tenga algo que ver con el hecho de que los triángulos suavizados están
doblemente iluminados (por las dos caras) en POV-Ray.
2) Quizás una versión futura de POV-Ray, o alguno de sus parches,
pueda presentar una manera de detener el autosombreado (sin dejar
de proyectar sombra sobre otros objetos).
Esto aliviaría el problema del objeto completamente sin sombra, y
que este objeto pudiera usarse en escenas reales proyectando sombra
sobre otros objetos y sin el artefacto de línea de sombra.
Sin embargo, esta solución es efectiva solamente en unos pocos
rangos de objetos (mayormente objetos convexos). Los objetos en donde
la sombra propia es esencial (imagine una taza de café, por ejemplo)
aún tendrá problemas.
3) Yo he propuesto este sofisticado algoritmo para librarse del
problema:
Al hacer pruebas de sobra de rayos, hagase lo siguiente:
- Hagase la prueba de sombra regular, que obtiene todas las
intersecciones del rayo con todas las superficies que están entre el
punto actual y lu fuente luminosa.
- Mirese si en el punto actual la normal del vector sin perturbar
apunta lejos de la fuente luminosa y si la normal perturbada del vector
apunta hacia la fuente luminosa.
- Si es así, se revisa si el punto de intersección más cercano al
rayo de sombra pertenece al objeto actual.
- Si es así, se elimina el punto de intersección de la lista.
Si queremos estar más seguros, podríamos revisar también si estamos
llegando hasta "dentro" de la superficie en este punto de intersección
más cercano, y sólo entonces eliminarlo. Puede que esto sea necesario
para superficies abiertas.
Este algoritmo eliminará el artefacto de línea de sombra sin
eliminar la sombra ni la propia sombra del objeto.
Pero tiene sus defectos, empero:
- Por ejemplo, si la cámara está dentro del objeto en cuestión (y
todas las fuentes de luz están fuera), esperaríamos tener una vista de
la superficie completamente sombreada. Sin embargo, si la superficie
tiene una normal perturbada, veremos algunas partes iluminadas de la
superficie. Sin embargo, creo que este problema es bastante irrelevante
en la gran mayoría de las escenas (y debería ser posible cancelar esta
solución de todas maneras).
- Tiene varios problemas que pueden ocurrir con objetos no-convexos
(gracias a Ron Parker por puntualizar esto). El objeto puede
proyectarse sombras con más de una superficie. Si las proyecta hacia sí
mismo desde el exterior (ej, una taza de café), no hay problema, pero
si se "proyecta sombra a sí mismo" desde dentro (ej, una taza de café
boca abajo) esta sombra será apreciada de una manera poco realista en
la superficie más esterior del objeto . Puede que no haya una manera
fácil de detectarla, que es otro de los casos.
- Otro problema similar al anterior es que si hay otro objeto
dentro del objeto que estamos calculando, ése otro objeto también
"proyectará una sombra" sobre la superficie (esto pudiera arreglarse
ignorando todos los obejtos dentro del objeto actual; es posible de
hacer de una manera bastante sencilla; sin embargo no funciona en todos
los casos).
- Todavía obtenemos el mismo artefacto en mallas de triángulos,
como se muestra en la segunda imagen del comienzo de la página. Sin
embargo, estoy seguro de que este problema pudiera arreglarse también
(aunque puede que esté equivocado, por supuesto).