Objets mous

Objets mous

Metaballs

Deux metaballs

Les metaballs sont une technique utilisée en infographie pour créer des formes organiques ou représenter des fluides. En français, on trouve également la dénomination « objets mous ». Les metaballs sont une variante des soft objects mais le nom s'est imposé dans la littérature et dans les logiciels. Ce concept a été inventé par Jim Blinn au début des années 80.

Chaque balle est définie comme un fonction mathématique à N dimensions. Les plus courantes sont en trois dimensions, on définit alors la fonction f(x,y,z)~. Cette fonction retourne un scalaire et permet de définir un champ scalaire. Une valeur de seuil est ensuite choisie pour délimiter la surface. Il est possible de mélanger plusieurs balles qui vont mutuellement s'influencer et contribuer aux valeurs du champ scalaire.

\sum_{i=0}^n \mathit{metaball}_i(x,y,z) \leq \mathit{seuil}

indique si le point (x,y,z)~ se trouve à l'intérieur du volume confiné par la surface.

Sommaire

Exemples de fonctions

Une fonction typique pour des metaballs est f(x,y,z) = \frac{1}{(x-x_0)^2 + (y-y_0)^2 + (z-z_0)^2}~, où (x_0, y_0, z_0)~ est le centre de la balle. La division rend cependant cette fonction assez lente à calculer. On peut utiliser à la place des approximations polynômiales.

Voilà quelques propriétés que peut avoir cette fonction :

  • si l'on cherche à faire des sphères, il faut que la fonction ne dépende que de la distance :  d = \sqrt{(x-x_0)^2 + (y-y_0)^2 + (z-z_0)^2}~.
  • si l'on cherche à créer une surface continue, il faut que la fonction soit continue.
  • si l'on cherche à créer une surface lisse (sans rupture de pente), il faut que la fonction soit à dérivée continue.
  • si l'on cherche à créer une surface avec des reflets continus, il faut que la fonction soit à dérivée seconde continue.

Pour pouvoir accélérer les calculs, il peut être intéressant d'avoir une fonction nulle au-delà d'une certaine distance, pour que les metaballs n'influent l'une sur l'autre qu'à une distance raisonnable. Dans ce cas pour avoir de jolies metaballs (continues, lisses et sans rupture des reflets) avec des polynômes, la fonction la plus simple est : f(x,y,z) = g(d) = (d_{max}^2 - d^2)^3~ si d < d_{max}, 0~ sinon.

Plusieurs méthodes existent pour afficher des metaballs. Elles dépendent du résultat désiré :

  • force brute discrète : on évalue un grand nombre de points (x,y,z) et on affiche le résultat en fonction de l'appartenance au volume
  • lancer de rayon : on projete un rayon dans la scène et on calcule les intersections avec la surface de l'objet
  • marching cubes : on divise la scène en une multitude de cubes. Chaque cube et ses valeurs du produit scalaire aux sommets sont analysés et des triangles sont générés en fonction de 256 configurations possibles.

Variantes

Une des nombreuses et des plus rapides méthode de calcul et d'affichage de metaballs 2D.

Les metaballs existent en deux dimensions, utilisant alors une superposition de sprites modifiés (addition et posterisation par exemple) ou l'algorithme des marching squares pour l'affichage de la surface pleine. Ces metaballs sont bien moins gourmandes à calculer que la version en trois dimensions, et permettent un plus grand nombre d'améliorations, pour un résultat bien évidemment moins réaliste. Un effet de bump peut être ajouté pour donner une impression de 3D.

Les metaballs étant calculées via la production d'un champ scalaire, des variantes sont apparues comme les metatores, metaplans, ainsi qu'une variété d'objets plus ou moins faciles à définir mathématiquement de manière implicite.

Les metaballs ressemblent à des sphères qui se mélangent doucement, mais en changeant la norme avec laquelle on travaille on peut obtenir des ellipsoïdes, des cubes, des parallélépipèdes rectangles ou des cylindres. Pour cela on peut utiliser les mêmes fonctions de la distance d~, mais en prenant non pas la distance euclidienne mais la distance associée à la norme 1 ou à d'autres normes qui vont alors déformer l'espace. Il est même tout à fait possible de mélanger dans un même champs des metaballs et des metacubes ou autre metavolume.

 \frac{1}{(x-1)^2 + (y-1)^2 + (z-1)^2} + \frac{1}{\max(|x|, |y|, |z|)^2} \leq seuil définit une metaball proche d'un metacube.

Références

  • Blinn, James F.  "A Generalization of Algebraic Surface Drawing." ACM Transactions on Graphics 1(3), July 1982, pp. 235–256.

Liens externes

  • Portail de l’informatique Portail de l’informatique
Ce document provient de « Metaballs ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Objets mous de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Moteur de jeu — Un moteur de jeu est un ensemble de composants logiciels qui effectuent des calculs de géométrie et de physique utilisés dans les jeux vidéo. L ensemble forme un simulateur en temps réel souple qui reproduit les caractéristiques des mondes… …   Wikipédia en Français

  • Game Engine — Moteur de jeux Un moteur de jeu est une application informatique (dite de type middleware) apportant les fonctionnalités principales au fonctionnement d un jeu vidéo, mais aussi une aide au développement ou à la portabilité du jeu. Les… …   Wikipédia en Français

  • Game engine — Moteur de jeux Un moteur de jeu est une application informatique (dite de type middleware) apportant les fonctionnalités principales au fonctionnement d un jeu vidéo, mais aussi une aide au développement ou à la portabilité du jeu. Les… …   Wikipédia en Français

  • Moteur De Jeu — Moteur de jeux Un moteur de jeu est une application informatique (dite de type middleware) apportant les fonctionnalités principales au fonctionnement d un jeu vidéo, mais aussi une aide au développement ou à la portabilité du jeu. Les… …   Wikipédia en Français

  • Moteur de jeu vidéo — Moteur de jeux Un moteur de jeu est une application informatique (dite de type middleware) apportant les fonctionnalités principales au fonctionnement d un jeu vidéo, mais aussi une aide au développement ou à la portabilité du jeu. Les… …   Wikipédia en Français

  • Moteur de jeux — Un moteur de jeu est une application informatique (dite de type middleware) apportant les fonctionnalités principales au fonctionnement d un jeu vidéo, mais aussi une aide au développement ou à la portabilité du jeu. Les fonctionnalités… …   Wikipédia en Français

  • Avida Dollars — Salvador Dalí Salvador Dalí Salvador Dalí photographié par Carl van Vechten, le 29 novembre 1939 …   Wikipédia en Français

  • Dalí — Salvador Dalí Salvador Dalí Salvador Dalí photographié par Carl van Vechten, le 29 novembre 1939 …   Wikipédia en Français

  • Salvador Dali — Salvador Dalí Salvador Dalí Salvador Dalí photographié par Carl van Vechten, le 29 novembre 1939 …   Wikipédia en Français

  • Salvador Domingo Felipe Jacinto Dalí Domènech — Salvador Dalí Salvador Dalí Salvador Dalí photographié par Carl van Vechten, le 29 novembre 1939 …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”