Suivez-nous sur X
|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
En pratique : POV-Ray - Piscine pour oiseaux
(Article écrit par Régis Hervagault et extrait d'Amiga News - avril 1993)
|
|
La dernière fois, nous avions vu les rudiments de
la modélisation par script. Le but de ce nouvel exemple commenté est d'approfondir ces
connaissances en abordant un véritable exercice de modélisation par CSG ("Constructive Solid Geometry").
Voici donc... une piscine pour oiseaux d'inspiration gréco-romaine (rien que ça !).
Description
Nous allons commencer par créer le monde extérieur qui sera basé sur le principe du premier
exemple : une sphère creuse de taille infinie (notre ciel) coupée diamétralement par
un plan (le sol terrestre).
Nous nous placerons dans l'hémisphère supérieur auquel il faudra ajouter un éclairage et
le positionnement de l'observateur. Ceci correspond à la partie 1 de notre listing qui
peut resservir comme base de travail pour créer d'autres scripts.
Passons à la partie 2 qui se charge de notre monument : un objet composite
(lui-même constitué d'objets de nature différente) que l'on va construire en trois étapes... et sans truelle !
Les piliers
Pour cela, on commence par apprendre à POV ce qu'est un pilier : l'opération "Union"
d'un cube à la base, surmonté d'un cylindre vertical et d'un autre cube au sommet de
ce cylindre pour supporter le toit.
Désormais, il nous suffit de référencer l'objet "pilier" pour que POV comprenne
qu'il s'agit de l'ensemble de ces trois primitives. On va dupliquer quatre fois
ce pilier pour le placer aux coins de notre piscine.
Les fondations
Elles seront représentées par un gros bloc rectangulaire de granit sur lequel on
va déposer un petit carré réfléchissant avec des ondulations pour simuler la
surface ridée de l'eau. Ceci convient bien si l'on considère que la piscine est pleine
à ras-bord.
Pour ceux qui ont le temps, voici un petit exercice intéressant : utilisez l'opération
"Difference" pour soustraire le cube qui délimite la surface de l'eau aux
fondations. Cela va creuser un véritable trou, et après, vous pourrez baisser
le niveau de l'eau pour que la piscine soit à moitié remplie.
Le toit
Enfin, il nous reste à couvrir le tout pour abriter nos futurs baigneurs. Cette pyramide
s'obtient en réalisant l'opération "Intersection" de cinq plans correctement orientés
puis en réalisant une translation de l'ensemble vers le haut. N'oublions pas que ces créations d'objets
sont effectuées à l'origine du repère tridimensionnel et qu'il faut donc les déplacer vers la
position souhaitée après les avoir agrandis à la taille souhaitée.
Pour finir
Voilà, notre bâtiment est prêt à être installé dans un jardin (je vous laisse le soin d'ajouter
les éléments qui donneront une touche bucolique à l'ensemble).
Le listing ne comporte pas de difficulté particulière si vous avez la documentation de POV
à portée de la main. La définition de la pyramide ainsi que celle du cylindre utilisé
dans les piliers se trouvent dans les fichiers Include fournis avec POV.
Cependant, pour rendre mes scripts indépendants, j'évite d'y inclure ces fichiers dans
leur entier, je préfère insérer directement les définitions nécessaires.
En effet, ces Include contiennent de nombreuses déclarations qui sont inutiles pour une
scène précise et qui ralentissent considérablement l'analyse du script avant le calcul
de l'image.
En modélisation par CSG, il est important d'avoir une idée claire de ce que l'on souhaite
créer et de bien visualiser la façon dont on va le décomposer en primitives. L'écriture
du script n'est alors qu'un problème de mise en forme respectant la syntaxe de POV.
L'augmentation de complexité de cette scène par rapport à notre premier exemple conduit
à un temps de calcul plus important et il vous faudra être patient... une trentaine
d'heures sur A500 pour une image en 320x512 et autant pour du 640x512 sur A1200.
|