Correctifs pour POVRay

Section POV

Section POV - sous section correction

Superellipsoid

illustration
La manifestation soumise par Peter J. Holzer. En caméra orthographique, il y a une disparition.
En caméra normale, sans AA, le point au centre de l'image n'est plus sur l'objet.
En caméra orthographique, il y a des problèmes parfois : on voit directement l'intérieur de l'objet pour certains rayons.
Mais ils existent aussi en caméra normale.
La modification du code est la suivante : dans super.c, vers la fin de la fonction intersect_box(), juste avant la ligne

  return (TRUE)

Il y a deux (mauvaises) lignes :

 *dmin = tmin;
 *dmax = tmax;

La correction est simple : il suffit d'enlever les deux mauvaises lignes.

Non seulement cela résoud le problème avec une caméra orthographique, mais avec une caméra normale et une faible rotation de l'objet cela supprime également quelques points sombres (sans AA); Et en plus, cela permet une bien meilleure gestion des superellipsoïdes dégénérées (celles dont les paramètres sont plus petits que 1/10).


Tom Melly a signalé un problème avec cette modification pour un cas.

À cause du meilleur placement des points d'intersections, une erreur d'arrondi peut faire passer ces points dans le volume délimité par la superellipsoïde. Comme la recherche est bornée par ces deux points, ça provoque parfois des trous. Mais en éloignant un peu la boîte définissant ces bornes, tout rentre dans l'ordre.

Donc, au debut de super.c, il faut modifier :

#define MAX_VALUE  1.01
#define MIN_VALUE -1.01
Et voilà !
Section POV

Section POV - sous section correction