Patch pour POVray

Section POV

Section POV, sous section patch

Warps

L'UV map est une belle idée, mais elle demande que tout les objet aient une fonction dédiée. Ce qui demande de modifier le code de chaque objet.

Au lieu de ça, j'ai écrit quelques warp (voir ce terme dans la documentation de Pov-Ray) pour avoir une déformation pour le tore (torus), la sphère (sphere), le cylindre (cylinder) et le cône (cone) (ce sont les formes de bases avec la box).

Le truc d'un warp est d'entrer avec les coordonnées d'un point et de resortir avec celles d'un autre.

Dans mes warps (à moins d'être inversé avec le mot-clef inverse), les coordonnés;es du point d'entrée sont dans le classique système cartésien (X,Y,Z) et les coordonnées du point de sortie (uniquement les coordonnées, le point est exactement le même (pas de turbulance ni d'autres bizarreries)) sont dans un système qui peut être soit sphérique, cylindrique, toroïdal ou conique. Mais biensür, comme le reste du code de Pov-Ray continue de considérer les trois nombres dans le systècartésien, l'effet est pour le moins intéressant.
la syntaxe
warp { sphere <origin>,<parameter> [inverse] }
warp { cylinder <origin>,<parameter> [inverse]}
warp { torus <origin>,radius ,<parameter> [inverse]}
warp { cone <origin>,radius ,<parameter> [inverse]}

La suite suppose un parameter à <1,1,1>, et une origin en <0,0,0>.

La déformation la plus facile à décrire est le cylinder : Vous prenez la moitié de l'univers, là où (x>=0). Vous n'en gardez qu'un volume infini limité par abs(z)<=1 et vous entourez l'axe des y passant par 0,0,0. Il y a un demi-plan de discontinuïté pour (x<0,z=0), à l'endroit oü les deux faces (z=1 et z=-1) se rencontrent.

La déformation sphèrique lui ressemble beaucoup, x et z sont simplement limité par abs()<=1, dans le demi-plan oü y>=0, et vous entourez un point/une sphè, en conservant la direction +x originale (comme pour la déformation cylindrique). Il y a un demi-plan de discontinuïté pour (x<0, z=0), à l'endroit oü les quatre faces se rencontrent... (en fait, deux des faces sont réduites à un point et ne rencontrent pas vraiment les autres).

La déformation torique est la même que la sphèrique, mais au lieu d'un point, il faut habiller un cercle complet (d'oü le paramètre radius additionnel). La discontinuïté est le disque à l'intérieur du cercle (x*x+z*z < r*r, y=0) et l'axe principale y (x=z=0) (Note: le volume initial n'est pas vraiment un cubique, car l'axe du tore limite l'espace).

La déformation conique est la plus difficile à expliquer. Elle ressemble à la cylindrique, sauf que c'est autour d'un cône. L'effet le plus voyant est que le plan (x,z) en <0,0,0> est en fait l'expension d'une ligne et non d'une surface. Ce plan fait également partie de la discontinuïté, tout comme le demi-plan oü (x<0, z=0). Le radius est le le rayon du cône unitaire pour y=1 (lorsque l'origine est <0,0,0>).

Les paramètres

Le but du vecteur origin est d'obtenir la déformation autour de ce point à la place du point <0,0,0>.

Le but du vecteur parameter est de multiplier les coordonnées par ce vecteur, permettant ainsi d'annuler une partie de la transformation (avec un 0 comme valeur), ou d'amplifier différement la transformation (lorsqu'il y a une limite, les limites normales sont entre -1 et 1; les longueurs vont de 0 à l'infini (ou presque)).

Un résumé rapide :

X cylinder x (longueur depuis l'axe)
Y ----------------> y (hauteur)
Z z (angle -1 à 1)
X sphere x (angle -1 à 1, élévation)
Y ----------------> y (longueur au centre)
Z z (angle -1 à 1, comme cylinder)
X torus x (angle -1 à 1, élévation depuis le cercle)
Y ----------------> y (longueur au cercle)
Z z (angle -1 à 1, comme cylinder)
X cone x (longueur dans le plan (x,z), divisée par la hauteur en valeur absolue)
Y ----------------> y (hauteur)
Z z (angle -1 à 1, comme cylinder)
(special pour cone: si Y == 0, x est mis à 0 )

Il n'y a pas de vecteurs d'orientation, si vous en avez besoin, vous pouvez toujours utiliser rotate/scale/translate sur votre motif en plus du warp. (origin et parameter étaient simples à faire, et sont plus simple a comprendre que l'equivalence avec translate/scale, mais je ne vais pas ajouter encore trois vecteurs et un point pour avoir un réferentiel complet)

Une chose simple à se souvenir est que le vecteur parameter est toujours appliqué APRÈS la conversion, donc que la plage [-1,1] devient [-n,n].

Le mot clef inverse permet d'obtenir la transformation inverse. L'expérience montre que l'application successive de l'inverse puis de la transformation donne en général peu de changement, alors que dans l'ordre inverse (transformation, puis inverse), le demi-univers non-utilisé est perdu.

  1. Fichier d'illustration de nouveaux warps

Téléchargement

au choix:
Section POV

Section POV, sous section patch