Aller au menu - Aller au contenu

Icône Un peu de 2D

Mise à jour : 01/07/2010
525 visites depuis 7 jours, dont 9 sur ce chapitre classé 218/786
Cette fois, nous allons voir quelques objets en 2 dimensions : des triangles, des disques, etc.
Ces objets sont, il est vrai, rarement utilisés (justement parce qu'ils sont en 2D). Mais on peut parfois avoir VRAIMENT besoin d'eux...
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

De la 2D ?

Tout d'abord, qu'est-ce que j'appelle un objet en 2D ?
C'est un objet sans épaisseur, exactement comme une feuille de papier. Cela veut dire que c'est une surface plane, et que lorsqu'on le regarde de côté, on peut ne pas le voir...

Puisque ces objets n'ont pas d'épaisseur, ils n'ont pas d'intérieur, et ne marchent donc pas dans les associations d'objets telles que difference ou intersection. Il peuvent cependant faire partie d'une union (ce qui peut être parfois pratique).

Il y a en tout 3 (ou 4 si on veut) objets en 2D que l'on peut utiliser :
  • le disque
  • le polygone
  • le triangle (et une variante utilisant les normales).

Le disque

Un disque, c'est... un disque. Un cercle plein. Un cylindre de hauteur nulle. Un disque, quoi !
Image utilisateur
(Cliquez pour voir l'animation)

Un disque se définit grâce à 3 propriétés : son centre, son inclinaison, et son rayon.
Le centre sera donné grâce à un simple vecteur de position, l'inclinaison grâce à un vecteur normal au disque, et le rayon avec une simple valeur.

Bon, passons aux choses sérieuses ! Le mot-clé pour faire un disque est disc. Le premier paramètre est le centre, le second est un vecteur normal au disque, et le dernier paramètre est le rayon du disque. Voici donc un exemple :
Code : C
1
2
3
4
5
disc {
        <0,1,0>
        <0.5,1,-1>
        1
}

Cela créera un disque de centre <0,1,0>, de vecteur normal <0.5,1,-1>, et de rayon 1 (pas trop dur à deviner ? ;) ).
Avec une petite texture de métal, voilà le résultat :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
disc {
        <0,1,0>
        <0.5,1,-1>
        1
        texture {
                pigment { rgb <0.66, 0.66, 0.66> }
                finish {
                        ambient 0.3
                        diffuse 0.7
                        brilliance 8
                        
                        specular 0.8
                        roughness 0.1

                        reflection 0.15
                }
        }
}

Ce qui donnera :
Image utilisateur


Il est également possible de spécifier une deuxième valeur de rayon. Dans ce cas-là, le disque aura un trou au milieu, avec pour rayon le deuxième spécifié :

Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
disc {
        <0,1,0>
        <0.5,1,-1>
        1
        0.5
        texture {
                pigment { rgb <0.66, 0.66, 0.66> }
                finish {
                        ambient 0.3
                        diffuse 0.7
                        brilliance 8
                        
                        specular 0.8
                        roughness 0.1

                        reflection 0.15
                }
        }
}

Image utilisateur

Le polygone

Bon, maintenant, on va apprendre à faire un polygone... vous savez ce que c'est qu'un polygone, hein ? C'est une figure géométrique à plusieurs côtés. C'est tout. Il peut en avoir 3 (c'est alors un triangle), 4 (un quadrilatère) ou n'importe quoi !

Le mot-clé pour créer un polygone est... polygon !!
La première chose à donner est le nombre total de points.
Attention ! Le premier point doit être identique au dernier pour que le polygone soit fermé. Prévoyez donc un point de plus que la forme n'en compte (4 points pour un triangle, etc...).

Ensuite, il suffit de donner les vecteurs des points, les uns à la suite des autres, en se souvenant de mettre le même point au début et à la fin.

Il est très important que les points soient coplanaires (qu'ils appartiennent tous à un même plan), car sinon POV-Ray ne pourra pas construire le polygone !! Pour cela, il est conseillé de faire le polygone à l'aide de vecteurs à deux dimensions (<x,y> par exemple), où la troisième dimension est automatiquement nulle (ou simplement des vecteurs <x,0,z> par exemple), puis d'utiliser une rotation pour bien positionner le polygone. De cette manière, vous serez certains que les points sont bien coplanaires !


Voici un exemple assez simple :
Code : C
1
2
3
4
5
6
7
8
9
polygon {
        5
        <-0.5,0,-0.5>
        <0.5,0,-0.5>
        <0.5,0,0.5>
        <-0.5,0,0.5>
        <-0.5,0,-0.5>
        pigment { rgb <1,0,0> }
}

Cela donnera un simple carré de 1 de côté.
Image utilisateur

Il est également possible de définir plusieurs sous-polygones au lieu d'un seul. Pour cela, il suffit de donner d'abord tous les points du premier sous-polygone (en le refermant), puis tous les points du second sous-polygone (en le refermant lui aussi), etc. Dans ce cas-là, le tout premier point et le tout dernier point peuvent être différents puisqu'ils appartiennent à deux sous-polygones différents.
Mais à quoi ça pourrait servir de définir plusieurs sous-polygones comme ça ?
Eh bien, l'intersection de deux sous-polygones donne un vide, l'intersection de trois polygones donne un plein, etc...
Donc, si l'on commence par faire un carré, puis que l'on ajoute un sous-polygone à l'intérieur, cela fera un trou dans le carré ^^ .
Le nombre de points, à donner au tout début, est bien le nombre total de points, et non le nombre par sous-polygones. D'ailleurs, les sous-polygones ne doivent pas forcément tous avoir autant de points !

Voici un exemple :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
polygon {
        10
        <-0.5,0,-0.5>
        <0.5,0,-0.5>
        <0.5,0,0.5>
        <-0.5,0,0.5>
        <-0.5,0,-0.5>
        
        <0,0,0.4>
        <0.4,0,0>
        <0,0,-0.4>
        <-0.4,0,0>
        <0,0,0.4>
        
        pigment { rgb <1,0,0> }
}

Image utilisateur

Évidemment, tous les sous-polygones DOIVENT être coplanaires.

Le triangle

Voilà la forme en 2D que vous utiliserez le plus souvent : le triangle. Seulement trois points, ce qui est assez pratique (car trois points sont toujours coplanaires).
Pour faire un triangle, rien de plus simple : le mot-clé est triangle, et il suffit de mettre les vecteurs des 3 points. Par exemple,
Code : C
1
2
3
4
5
triangle {
        <-0.5,0,0>
        <0.5,0,0>
        <0,1,0>
}


Si le triangle est assez simple, il existe une variante un poil plus complexe, permettant de modifier la normale apparente du triangle.
On ne peut pas modifier la normale dans la texture, tout simplement ?

Si, bien sûr que si... mais il existe un moyen bien plus simple pour bomber un triangle.
Ce type de triangle donne une normale différente à chaque sommet, et, au reste du triangle, des normales en fonction de ces trois-là.
Ainsi, si par exemple on écarte les normales du centre du triangle, les coins paraissent être penchés vers l'extérieur, et le triangle a l'air arrondi !
Voici un exemple :
Image utilisateur

Pour utiliser ce type de triangle, il ne faut plus écrire triangle, mais smooth_triangle. On indiquera alors le premier sommet, puis la normale de ce sommet, puis le second sommet, puis la normale du second sommet, puis le troisième sommet et enfin la normale de ce troisième sommet.
Voilà un exemple :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
smooth_triangle {
        <-0.5,0,0>
        <-0.5,0,-0.5>
        <0,1,0>
        <0,0.5,-0.5>
        <0.5,0,0>
        <0.5,0,-0.5>
        pigment {
                rgb <0.5,0.7,0.1>
        }
        finish {
                phong .9
        }
}

Image utilisateur


Je dois avouer que ces triangles restent assez peu utilisés...

Si vous souhaitez faire une union ne comportant que des triangles, il existe un meilleur moyen de faire cela : le mesh. Nous verrons cela dans le prochain chapitre.

Q.C.M.

Combien de paramètres prend un disque au minimum ?
Combien de points faudra-t-il définir dans un polygone pour faire un hexagone ?
Qu'est-ce qu'un smooth_triangle ?

Statistiques de réponses au QCM

C'était à peu près tout ce qu'il y avait à savoir sur les objets en 2 dimensions. Ces objets sont rarement utilisés, donc vous n'aurez pas forcément à vous en souvenir...
De plus, utiliser un mesh (vous verrez comment au prochain chapitre) apporte de nombreux avantages par rapport à une simple union de triangles...
Chapitre précédent Sommaire Chapitre suivant

Partager

2 commentaires pour "Un peu de 2D"
Note moyenne : 3.96 / 4 (24 votes)
Pseudo Commentaire
Hors ligne SaussageW # Posté le 18/08/2006 à 10:39:04
Avatar
Flux RSS

Ville : Vif
Pays : France métropolitaine

Je n'ai pas tout regardé en détail, mais ça m'a l'air d'être un très très bon tutorial qui serait presque à la hauteur des officiels!

Bon boulot en tous cas!

Un vrai geek, c'est un mec qui croit que dans 1km, il y a 1024 mètres.
http://zombieinc.naniesan.net
 
Hors ligne titi.be # Posté le 25/11/2006 à 00:01:42
Avatar

Apres un long moment avec les textures la 2D beaucoup plus court ca permet de réspirer
20 :)

Voir tous les commentaires