Aller au menu - Aller au contenu

Icône TP : Une météorite

Mise à jour : 01/07/2010
525 visites depuis 7 jours, dont 14 sur ce chapitre classé 218/786
Voici un TP assez abstrait pour vous faire pratiquer les boucles.
L'objet à réaliser est en théorie une météorite, mais d'un point de vue artistique et imagé... :-°
Donc si vous trouvez que c'est moche, tant pis ! :p
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Présentation

Je vous montre tout de suite le résultat final (j'en ai fait une animation pour mieux comprendre la structure)
ICI (Attention : image GIF de ~7mo)
Oui, je sais, ce n'est pas très beau... :-° Mais dites-vous que c'est abstrait, et que cela vous aidera beaucoup... enfin, un peu au moins.
Voici donc la structure :
  • Une sphère de rayon 0.9 composée de petites sphères de métal de rayon 0.05.
    Ces sphères sont placées de manière un peu spécifique pour bien quadriller la sphère, je vous l'expliquerai après.
  • Une sphère de rayon 1 composée de 4 hélices rouges : ce sont évidement 4 sphere_sweep (de rayon 0.02), elle-même créées par des boucles.
  • Une boule de verre, au centre, de rayon 0.3
  • Une source de lumière, au centre.
  • Un socle de marbre : c'est un cube de 20 de largeur, 20 de longueur, 11 de hauteur, centré en 0 horizontalement et de sommet en y = 1, auquel on a enlevée une boule de rayon 4.02 , placée en <0,3,0>. Voici un petit schéma explicatif :

Image utilisateur


Le bloc de marbre



Le bloc de marbre n'a rien de spécial si vous avez compris comment créer la forme. J'ai utilisé une texture de marbre présente dans textures.inc : White_Marble.

Les sphères métalliques



Maintenant, étudions la répartition des sphères métalliques.
Elles sont placées en étages :
Image utilisateur
Il y a 11 étages en tout, en comptant les deux sphères aux extrémités (tout en haut et tout en bas).
Il reste à déterminer le nombre de sphères présentes sur chaque étage. Je pourrais vous demander de le calculer, mais ce n'est pas évident, surtout sans certaines notions mathématiques.
Voici donc le nombre de sphères par étage :
Code : Autre
1
1 + jmax * sin(radians(i))

où (jmax + 1) est le nombre de sphères maximal par étage (c'est à dire à l'équateur), et i l'angle total entre la verticale et l'étage en cours...
Le sinus (sin) est une fonction trigonométrique (on commence à l'étudier en 3e) et la fonction radians permet de transformer la valeur de i, qui est en degrés, en radians, ce dont a besoin la fonction sin. Ces deux fonctions sont comprises par POV-Ray, donc vous pouvez les utiliser. :D
Voici un autre schéma pour mieux expliquer cela :
Image utilisateur
Ces j sphères sont alors régulièrement espacées sur l'étage.

Avec des boucles, cela devrait être relativement facile d'arriver au résultat. ^^


Les sphere_sweep



Ici, cela risque d'être un petit peu plus compliqué...
En effet, pour bien placer notre sphere_sweep, il va falloir mettre beaucoup de sphères pour arriver à un résultat précis, sans oublier d'utiliser cubic_spline pour avoir une courbe arrondie et gracieuse :) . Je vous propose d'utiliser 30 sphères environ par sphere_sweep.
Chacune des 4 hélices effectuera 3 tours complets entre le haut et le bas de la sphère.
Il faudra donc deux boucles : une pour créer les 30 sphères, et une pour créer les 4 sphere_sweep.
Voici une des hélices, séparée :
Image utilisateur


La boule de verre



Rien de particulier en ce qui concerne cette boule de verre... utilisez une texture de verre (que vous pouvez chercher dans textures.inc, Glass par exemple ^^ ) et un indice de réfraction de 1.5, et cela ira.

La source de lumière



Ici encore, rien de sorcier : c'est une simple source de lumière située en <0,0,0>.
Afin d'éclairer un peu mieux la scène, je lui ai donné la couleur rgb <1.5,1.5,1.5> : du blanc un peu plus fort.

Indices...

Vous allez peut-être rencontrer des difficultés si vous essayer tout de suite, en particulier pour créer le sphere_sweep. Voici donc quelques fonctions présentes dans POV-Ray qui pourraient vous aider :
  • sin et cos : ces deux fonctions trigonométriques sont bien connues des lycéens. :D
    Elles prennent comme argument un angle en radians. Si vous voulez utiliser un angle en degrés, la fonction radians transformera un angle exprimé en degré vers un angle en radians.
  • vrotate permet de faire "tourner" un point...
    Par exemple, dans le sphere_sweep, vous ne pouvez pas utiliser rotate sur chaque sphère séparément. Par contre, vous pouvez utiliser vrotate pour modifier les centres des sphères...

Voici un exemple d'utilisation de vrotate :
Code : Autre
1
2
3
4
sphere {
  vrotate(<0,1,0>, <0,0,10>)
  1
}

Ici, vrotate fait effectuer au premier vecteur (<0,1,0>) une rotation décrite par le second vecteur (10° selon l'axe z).
Dans ce cas-ci, on aurait pu utiliser un simple rotate pour déplacer la sphère, mais dans le cas d'un sphere_sweep, ce n'est plus possible...

Voilà, vous avez tout ! Maintenant, à vous de jouer ! ;)

Réalisation

Je vous l'accorde, ce TP n'est pas très facile, en particulier parce que l'on voit difficilement quoi faire...
Voici donc la correction !

Le support de marbre



Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
difference {
  box {
    <-10,-10,-10>
    <10,0,10>
  }
  sphere {
    <0,3,0>
    4.02
  }
  texture {
    White_Marble
  }
}

En principe, pas de surprises jusque là.


Les sphères métalliques



Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#declare i = 0;
#declare imax = 10;
#declare jmax = 10;

#while (i <= imax)
  // Cette boucle décrit tous les étages
  #declare j = 0;
  #declare jmax_temp = int(1 + jmax * sin(radians(i/imax * 180)));
  // (l'angle depuis la verticale est ici i/imax * 180)

  #while (j < jmax_temp)
    // On crée ici toutes les sphères de l'étage.
    sphere {
      <0,0.9,0>
      0.05
      texture { Chrome_Metal }
      rotate <0, 0, i/imax * 180>
      rotate <0, j/jmax_temp * 360, 0>
    } 
    #declare j = j+1;
  #end

  #declare i = i+1;
#end

Comme vous avez vu, on utilise la fonction int pour être certain que le nombre de sphères pour chaque étage est bien un entier. A part ça, vous devriez comprendre le reste : on utilise des rotate pour bien placer les sphères...

Les sphere_sweep



Voici déjà le code pour une hélice :
Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#declare kmax = 30;                         
sphere_sweep {
  cubic_spline
  kmax+3,                                             
  #declare k = -1;

  #while (k <= kmax+1)
    vrotate(
       vrotate(<0,1,0>, <0,0,k/kmax*180>),
       <0,k/kmax*360*3, 0>),
    0.02
    #declare k = k+1;
  #end
    
  pigment { Red }
}

k varie entre -1 et kmax+1, car la première et la dernière sphère n'apparaissent pas.
On utilise vrotate deux fois de suite, pour effectuer les deux rotations successives.

Enfin, il ne reste plus qu'à faire la boucle pour créer les 4 hélices :
Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#declare l = 0;
#declare lmax = 4;

#while (l < lmax)  
  #declare kmax = 30;                         
  sphere_sweep {
    cubic_spline
    kmax+3,                                             
    #declare k = -1;

    #while (k <= kmax+1)
      vrotate(
         vrotate(<0,1,0>, <0,0,k/kmax*180>),
         <0,k/kmax*360*3, 0>),
      0.02
      #declare k = k+1;
    #end
      
    pigment { Red }
    rotate <0,l/lmax*360, 0>      
    scale 1.1
  }
  #declare l = l+1;
#end


La boule de verre



Code : Autre
1
2
3
4
5
6
sphere {
  <0,0,0>
  0.3
  texture { Glass }
  interior { ior 1.5 }
}


La source de lumière



Code : Autre
1
2
3
4
light_source {
  <0,0,0>
  White * 1.5
}

J'ai utilisé la couleur White, définie dans colors.inc, que j'ai multipliée par 1.5 afin d'obtenir une lumière un peu plus vive.


Ajoutez une caméra (par exemple en <0,2,-3>), n'oubliez pas d'inclure textures.inc et colors.inc et le tour est joué !
Ca y est, vous avez fait votre météorite ! :D
Si vous n'êtes pas découragé, vous pouvez toujours l'améliorer : par exemple, changer la texture du sphere_sweep ou du socle en marbre, ajouter des éléments, ... vous êtes libre. ^^

Dans le prochain chapitre, nous verrons un point très intéressant de POV-Ray : les animations...
Chapitre précédent Sommaire Chapitre suivant

Partager

1 commentaire pour "TP : Une météorite"
Note moyenne : 3.96 / 4 (24 votes)
Pseudo Commentaire
Hors ligne Tuetuopay # Posté le 05/11/2010 à 22:39:40
Avatar

Ville : Paris
Pays : France métropolitaine

Bon tp, mais le lien vers l'animation du résultat est mort ...

Voir tous les commentaires