Aller au menu - Aller au contenu

Icône Formes avancées (2/2)

Mise à jour : 01/07/2010
525 visites depuis 7 jours, dont 9 sur ce chapitre classé 218/786
Ne vous inquiétez pas, ce ne sera pas si dur !
En fait, les trois objets que nous allons voir se ressemblent assez ; donc, une fois que vous aurez compris l'idée générale, le reste viendra tout seul !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Les prismes

Il est assez facile de comprendre ce qu'est un prisme : c'est simplement une surface plane (délimitée par une courbe) à laquelle on donne une épaisseur. Tout ce que l'on aura à faire, c'est donner à POV-Ray la forme de la courbe, et l'épaisseur du prisme.
Image utilisateur
En réalité, le plus compliqué est de donner la forme de la courbe à utiliser. Pour cela, il y a 2 méthodes pour le faire : linear_spline et cubic_spline.

linear_spline


La première méthode, la plus simple, consiste à donner une liste de points, qui seront reliés entre eux par des segments droits : c'est le cas pour la flèche de gauche de l'exemple. Cela revient en fait à faire un polygone (vous vous souvenez des polygones, hein ? ;) ).
Attention : pour que la courbe définie soit bien fermée, il faut que le premier et le dernier point que l'on donne soient les mêmes. Si ce n'est pas le cas, POV-Ray devrait fermer tout seul la courbe, mais je vous conseille de vous habituer à fermer vos courbes à chaque fois, puisque cette fermeture automatique ne marche qu'avec les linear_spline.

cubic_spline


Cette méthode est très pratique, puisqu'elle permet d'arrondir votre courbe : pour chaque point, le point précédent et le point suivant sont utilisés afin de déterminer la tangente de la courbe...
o_O Qu'est-ce que ça veut dire ? Que votre courbe est jolie. :D
En fait, c'est un peu plus compliqué que ça, vous pouvez aller voir la doc si vous le souhaitez... Mais vous n'avez absolument pas besoin de savoir comment ça marche !
Les cubic_spline utilisent 3 points pour calculer la tangente en chaque point. Par conséquent, les trois premiers et les trois derniers points de votre liste DEVRONT OBLIGATOIREMENT ÊTRE LES MÊMES !


En réalité, il y a deux autres types de courbes : quadratic_spline et bezier_spline. Mais on ne les utilise presque jamais, donc autant ne pas vous embrouiller l'esprit avec ! Surtout que vous devriez pouvoir tout faire avec les deux que je vous ai montrés...

Bon : vous avez compris comment on fait une courbe, maintenant on va créer le prisme proprement dit :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
prism {
  linear_sweep
  linear_spline
  0,
  1,
  10,
  < 0.2, -1.0>, < 0.2,  0.2>, < 1.0, -0.2>, < 1.0,  0.2>, < 0.2,  1.0>, 
  <-0.2,  1.0>, <-1.0,  0.2>, <-1.0, -0.2>, <-0.2,  0.2>, <-0.2, -1.0>
  pigment { rgb <0,1,0> }
}


Comme vous le voyez, le mot-clé pour créer un prisme est prism. Voyons ligne à ligne comment est fait ce prisme :
  • linear_sweep indique le type d'extrusion du prisme... Ici, les bords du prisme sont droits ; nous verrons plus tard comment changer cette valeur.
  • linear_spline : précise le type de courbe utilisée. Cela aurait aussi bien pu être cubic_spline.
  • 0 : c'est la hauteur de la base du prisme.
  • 1 : c'est la hauteur de l'extrémité du prisme.
  • 10 : c'est le nombre de points utilisés (en comptant le dernier point, identique au premier).
  • La longue série de points qui suit forme la courbe. Notez que le premier et le dernier point sont effectivement identiques... Notez également que toutes les coordonnées sont en 2 dimensions seulement : la courbe créée sera sur le plan Oxz, et le prisme prendra sa profondeur suivant l'axe des y...

Voici maintenant le même exemple, mais en utilisant cette fois cubic_spline :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
prism {
  linear_sweep
  linear_spline
  0,
  1,
  12,
  < 0.2, -1.0>, < 0.2,  0.2>, < 1.0, -0.2>,
 
  < 1.0,  0.2>, < 0.2,  1.0>, <-0.2,  1.0>, 
  <-1.0,  0.2>, <-1.0, -0.2>, <-0.2,  0.2>,
 
  <-0.2, -1.0>, < 0.2,  0.2>, < 1.0, -0.2>
  pigment { rgb <0,1,0> }
}


Comme vous pouvez le voir, il y a ici deux points supplémentaires, qui permettent de faire correspondre les trois premiers points aux trois derniers.

Conic_sweep


Utiliser conic_sweep au lieu de linear_sweep permet de donner de l'épaisseur à la courbe comme si c'était un "cône" : la taille de la courbe est réduite jusqu'à n'être plus qu'un point en <0,0,0>.
Lorsque vous utiliserez conic_sweep, il est conseillé de prendre comme hauteurs 0 et 1, puis d'appliquer les transformations nécessaires après : en effet, quelles que soient les hauteurs que vous donnerez, le prisme ne sera qu'un point en <0,0,0> et aura sa taille normale (définie par la courbe) à la hauteur 1.
De plus, il est conseillé de centrer sa courbe sur 0, car le "cône" formé aura sa pointe en <0,0,0>.

Voici un schéma pour bien expliquer comment fonctionne conic_sweep :
Image utilisateur

Si vous avez compris tout cela, c'est que vous connaissez tout sur les prismes. :D
Les autres objets, bien que très différents, utilisent un système de courbes très proche de celui des prismes : donc, si vous n'avez pas eu de problème jusque là, tout ira bien ! :)

Les lathe

Un lathe est un solide de révolution : prenez une courbe, faites-la tourner autour d'un axe, et vous obtiendrez un lathe ! En effet, créer un lathe est très simple : il suffit de donner la forme de la courbe à utiliser. Pas trop dur !

Ce qu'il y a de génial, c'est que les types de courbes sont exactement les mêmes que pour les prismes : linear_spline et cubic_spline ! La seule différence étant que la courbe n'a, ici, pas besoin d'être fermée.
Même si la courbe n'a pas besoin d'être fermée, il faut faire attention : pour les cubic_spline, 3 points sont toujours utilisés pour calculer les tangentes : par conséquent, le PREMIER et le DERNIER point de la liste n'apparaîtront PAS dans la courbe, et serviront uniquement à calculer les tangentes.

Une seule autre petite différence : si vous utilisez cubic_spline, des calculs très complexes devront être réalisés (des équations du 6e degré !!).
Il devient donc nécessaire de dire à POV-Ray d'utiliser un autre système de résolution, plus précis : pour cela, il suffit d'ajouter sturm après le dernier point de la liste.

A part ça, vous savez tout faire !

Code : C
1
2
3
4
5
6
7
lathe {
  cubic_spline
  6,
  <3.5,3>,<0.8,3.8>,<0.5,3>,<2.2,1.5>,<0.8,0>,<3.0,0>
  sturm
  pigment { rgb <0,1,0> }
}


Le code est assez simple à comprendre : cubic_spline donne le type de courbe, 6 est ici le nombre de points utilisés ; enfin, sturm est là car on utilise cubic_spline.

Si vous essayez sans sturm, vous verrez que cela marche quand même. Cependant, il peut y avoir des erreurs pour des formes plus complexes, donc utilisez sturm dès que vous avec cubic_spline. ;)

Image utilisateur

Les sphere_sweep

Voici le dernier objet utilisant les courbes : sphere_sweep est en fait défini par le passage d'une sphère, le long d'une trajectoire : cela donne un tube, un câble, ...

Je vous laisse deviner quelles méthodes permettent de définir la courbe... linear_spline et cubic_spline ? Gagné ! :D
Eh oui, c'est encore une fois les mêmes types de courbes. Ce n'est pas génial, tout ça ? :p

Tout comme pour les lathe, sphere_sweep n'a pas besoin d'être fermée, mais le premier et le dernier points n'apparaîtront pas dans la courbe...

Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
sphere_sweep {
  cubic_spline,
  11,
  < -10,1, 0>, 0.1
  < -8, 3, 0>, 0.2
  < -6, 4, 0>, 0.1
  < -4, 2, 0>, 0.2
  < -2, -3, 0>, 1
  < 0,  0, 0>, 0.2
  < 2,  -4, 0>, 0.1
  < 4,  3, 0>, 0.2
  < 6,  4, 0>, 0.1
  < 8,  -1, 0>, 0.2
  < 10, 0, 0>, 0.1
  tolerance 1.0e-4
}

Image utilisateur

Maintenant que vous avez l'habitude, ce code ne devrait pas vous poser de problème : d'abord le type de courbe, puis le nombre de points, et enfin la liste des points...
Hey ! Après chaque point, il y a une valeur : 0.1, 0.2, ... C'est quoi ???

AH ! :p Vous avez vu... :-°
Cette valeur permet de spécifier le rayon du câble à chaque point ; l'épaisseur entre deux points étant adaptée suivant un dégradé (avec linear_spline, ce dégradé sera linéaire et laissera visible les changements de rayons avec des cassures ; tandis que cubic_spline utilisera un dégradé plus doux...).

Le mot-clé tolerance, suivi de la valeur 1.0e-4 (c'est à dire 0.0001) permet de corriger certaines erreurs de calcul qui pourraient survenir.
Voilà, vous avez terminé la deuxième partie ! Le chapitre suivant vous proposera un petit TP afin de tout récapituler, mais vous connaissez déjà presque tout ce qu'il faut savoir ! Bravo !
Chapitre précédent Sommaire Chapitre suivant

Partager

Il n'y a pas encore de commentaire pour ce tuto.