Infographie 3D - Projet

mer. 01 septembre 2004

Projet POV-Ray - Sea, shells and sun

Objectif : création d'une scène photo-réaliste suivant les contraintes du sujet et les possibilités offertes par POV-Ray 3.5, en particulier les isosurfaces.


Introduction

L'objet pincipal de ce projet est le coquillage. Sa modélisation fera appel aux isosurfaces. Afin de le mettre en valeur, on l'intégrera dans une scène côtière comportant de l'eau, un rivage, divers objets (roches, poissons, végétaux, épave, ...) et une illumination réaliste. Le choix de la mise en scène (rivage, subaquatique, ...) appartient à l'auteur de l'image.


Les isosurfaces appliquées à la modélisation des coquillages

Tout ce qui suit est tiré du livre "Open Geometry" de Georg Glaeser et Hellmuth Stachel, édition Springer.

On distingue plusieurs types de surfaces en fonction du type de trajectoire et de courbe génératrice. On étudie par la suite les différentes trajectoires adaptées à la modélisation d'une coquille.

Les surfaces spiroïdales

Déplacement hélicoïdal : soit un axe a dans l'espace euclidien 3D, ce déplacement est la combinaison d'une rotation autour de a à vitesse angulaire constante et d'une translation le long de a à vitesse également constante. La relation qui lie l'angle a de rotation et la longueur l de la translation peut s'écrire :

$ p Î R*, l = p.a

On constate que la courbe résultante s'inscrit sur la surface d'un cylindre de révolution d'axe a.

helice

Déplacement spiralé : soit le même axe a et un point fixe O sur a (point asymptotique), une spirale est une famille continue de rotations élastiques, chacune d'entre elles étant le produit (commutatif) d'une rotation autour de a et d'une homothétie de centre O, ce que l'on peut écrire :

$ p Î R*, s = epa

s est appelé facteur d'"élasticité".

Une trajectoire spiralée est contenue dans un cône de révolution d'axe a et de sommet O. Sa projection normale à un plan P contenant O, perpendiculaire à a, est une spirale logarithmique.

spirale

Surface spiralée : elle est obtenue en appliquant un déplacement spiralée (a, O, p) à une courbe k (qui ne doit pas être elle-même une spirale).

Approche analytique : nous décrivons ci-dessous les courbes et les surfaces spiroïdales dans un système de coordonnées cartésien.

Courbe passant par P(x0, y0, z0) :

x(a) = epa(x0 cos a - y0 sin a)

y(a) = epa(x0 sin a + y0 cos a)

z(a) = z0 epa

Surface paramétrée par la courbe (x(u), y(u), z(u)) :

x(u,a) = epa(x(u) cos a - y(u) sin a)

y(u,a) = epa(x(u) sin a + y(u) cos a)

z(u,a) = z(u) epa

Exemple d'application :

Une ellipse comme courbe génératrice,soient r et s les demi-longueurs de l'axe primaire et secondaire, on a :

x(u) = s + s cos u

y(u) = 0

z(u) = r sin u

(avec u Î [0, 2p], r = 35, s = 25 et p = 0,4 par exemple image de gauche)

On pourra aussi mettre à profit ses connaissances sur les courbes splines en les utilisant comme courbe génératrice (les deux images de droite).

escargot coquilllage_spline shell

Les surfaces hélispiroïdales

Surfaces à la fois hélicoïdales et spiroïdales, elles s'expriment comme la combinaison d'une rotation d'angle a autour d'un axe a et d'une dilatation proportionnelle (non exponentielle) à p (facteur de proportion) pa par rapport à un point fixe O Î a.

Soient O(0, 0, s) et p, la trajectoire d'un point (r0, j0, z0) en coordonnées cylindriques est décrite par le paramètre temporel t :

r = p.t.r0

j = j0 - 1/p + t

z = s + p.t (z0 - s)

L'équation paramétrique d'une rotation autour d'un axe a, d'un angle 1/p - j0 s'écrit :

x(t) = p.t.r0 cos t

y(t) = p.t.r0 sin t

z(t) = s + p.t (z0 - s)

helispiroide ex_helispi


Matériel supplémentaire

  • ShellyLib : a small library to create shapes of seashells and snails runs on Linux, Win95-Vista and MacOSX.

exemple1 exemple2 exemple3