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:

  1. 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.
  2. 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.
  3. Si es así, se revisa si el punto de intersección más cercano al rayo de sombra pertenece al objeto actual.
  4. 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:

  1. 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).
  2. 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.
  3. 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).
  4. 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).