vers l'index général de l'aide

triangle et smooth_triangle

objectif

Créer des triangles sans épaisseur.

compatibilité

POV-Ray 2.0 +sup.

syntaxe

triangle {
          Point_1, // vecteur
          Point_2, // vecteur
          Point_3  // vecteur
        (..modificateurs d'objets..)
        (..transformations..)
        (..matériau..)
        }

Rien de bien compliqué, le triangle est la surface comprise entre les trois points donnés. Si les trois points sont alignés (= font partie d'une même droite), POV-Ray ne pourra pas matérialiser le triangle et vous signalera un 'triangle dégénéré', sans toutefois empêcher le rendu de la scène.

un triangle !

Il est également possible de spécifier un vecteur de normale à chaque coin du triangle, ce qui a pour effet de "tordre" visuellement le triangle, mais sans changer sa géométrie réelle. Seuls l'ombrage, les highlights et les réflexions seront modifiés. Par défaut, ces vecteurs de normale sont perpendiculaires à la surface du triangle.

smooth_triangle {
          Point_1,   // vecteur
          Normale_1, // vecteur
          Point_2,   // vecteur
          Normale_2, // vecteur
          Point_3    // vecteur
          Normale_3, // vecteur
        (..modificateurs d'objets..)
        (..transformations..)
        (..matériau..)
        }

exemple

Voici un exemple très simple de smooth_triangle , qui montre très clairement comment la "fausse" normale des coins affecte l'apparence du triangle.

//les éléments classiques...
#include "colors.inc"
camera {location <100,100,100> direction z*1 look_at <0,0,0>}
light_source {<40,50,30> White*2}

//la petite macro pour faire les flèches
#macro Fleche (Pt1,Pt2,Rayon) 
union { cylinder {Pt1,Pt2,Rayon}          
        cone {0,Rayon,(vnormalize(Pt1-Pt2))*(Rayon*20),Rayon*3 translate Pt2} 
        no_shadow }
#end
//déclaration des coins et des normales correspondantes
#declare P1=<20,-20,70>;  
#declare N1=<0,.5,1>;
#declare P2=<70,0,-40>;   
#declare N2=<.1,.5,0>;
#declare P3=<-50,40,-20>; 
#declare N3=<0,1,0>;
//le triangle
smooth_triangle {P1,N1,P2,N2,P3,N3 pigment {YellowGreen} finish {phong .9}}
//les flèches
object {Fleche (0,vnormalize(N1)*5,.1) pigment {OrangeRed} scale 10 translate P1}
object {Fleche (0,vnormalize(N2)*5,.1) pigment {OrangeRed} scale 10 translate P2}
object {Fleche (0,vnormalize(N3)*5,.1) pigment {OrangeRed} scale 10 translate P3}

Et le résultat :

un triangle adouci..

CSG

Dépourvus d'épaisseur, et donc d'intérieur/extérieur, les triangles ne fonctionnent bien qu'avec les unions.

remarques

Dans le cas où on associe plusieurs smooth_triangle , la normale de deux ou trois coins qui se rencontrent doit être la même. Plus précisément, elle doit être, pour bien faire, égale au produit des trois normales individuelles. Mais, à de rares exceptions près, ce ne sont pas des ajustements que l'on fait "à la main", et d'excellents utilitaires s'en chargeront à votre place !

Les triangles peuvent être efficacement associés dans une entité appelée mesh , ce qui, lorsqu'on a uniquement des triangles, est bien mieux qu'une union. Voyez la page consacrée aux mesh pour plus de détails.

Rédacteur: Fabien Mosen