Dans le précédent didacticiel, nous avons vu comment tirer parti des Champs de Hauteur pour créer des paysages, histoire de nous changer des primitives habituelles de KPovModeler, plus appropriées à la modélisation d'objets artificiels ou manufacturés. Nous allons voir maintenant quels usages nous pouvons faire de la primitive Blob. Même si elle devrait plutôt être réservée à un usage « cartoonesque », cette primitive permet de modéliser aussi bien des arbres, des vaches ou les pingouins qui nous sont si chers.
Les Blobs sont idéaux pour la modélisation organique, et même si elles sont très limitées en quantité (on ne compte pour l'instant que des sphères et des cylindres, et j'ignore s'il est prévu d'en ajouter d'autres à POV-Ray) elles permettent d'obtenir des résultats assez intéressants, souvent impossible à reproduire simplement avec les autres primitives et la CSG classique. En effet, les Blobs s'assemblent un peu à la façon de gouttes de mercure, avec une jonction grossière mais progressive de leurs frontières. Il est à noter que lorsqu'ils sont mis en oeuvre seuls, les blobs sphériques apparaissent comme de simples sphères. Pour leur part, les blobs cylindriques apparaissent avec les extrémités arrondies, ainsi qu'en témoigne l'illustration suivante, qui montre un Blob constitué de trois blobs sphériques (un vert, un bleu et un rouge) et un blob cylindrique (jaune), incliné sur le côté.
Comme d'habitude avec toutes les primitives de KPovModeler, il y a deux façons privilégiées d'insérer un blob dans votre scène.
En utilisant le menu: Insertion > Primitives de Solides Finis > Blob
En utilisant la barre d'outils: cliquez sur l'Icône
Les Blobs suivent une hiérarchie clairement établie. L'objet que vous venez d'insérer se comportera un peu à la façon d'un objet Fusion (voir le didacticiel Modéliser un tournevis en utilisant la "Constructive Solid Geometry") du point de vue de l'application des Matériaux et des Transformations. Il s'agit donc d'une simple opération booléenne à laquelle vous devrez associer des composantes choisies parmi Blob Sphérique et Blob Cylindrique pour que des volumes concrets soient définis et pris en compte par le moteur de rendu. Ces composantes s'insèrent de façon très conventionnelle:
En utilisant le menu: Insertion > Primitives de Solides Finis > Blob sphérique
En utilisant la barre d'outils: cliquez sur l'Icône
et
En utilisant le menu: Insertion > Primitives de Solides Finis > Blob cylindrique
En utilisant la barre d'outils: cliquez sur l'Icône
Bien sûr, chacun de ces éléments peut se voir appliquer des transformations (échelle, translation, rotation, matrice) indépendantes ou communes selon qu'elles soient placées en tant qu'enfant ou parent dans l'arbre des objets. D'ailleurs, un Blob père, ou un Blob enfant (une composante sphérique ou cylindrique) sont toujours insérées dans KPovModeler avec les trois transformations de base. Bien sûr, les transformations appliquées au Blob père sont répercutés sur toutes les composantes filles (ce qui est bien pratique pour déplacer ou redimensionner votre objet dans la scène), tandis que les transformations appliquées aux composantes n'affectent que celles-ci à défaut de toute autre (ce qui vous permet d'en contrôler plus précisément l'aspect).
De même, les matériaux et textures peuvent être appliqués soit au Blob père, soit aux Blobs enfants. Dans le premier cas, tous les blobs auront la même coloration. Dans le second, la couleur de transition entre un blob et une autre sera interpolée de façon à ce qu'elle soit progressive. Cela permet de réaliser des effets potentiellement très intéressants.
Ainsi, l'arbre des objets pour l'illustration d'introduction se présenterait de la façon suivante:
On peut aisément y voir la hiérarchie établie entre le Blob générique et chacune de ses composantes. On note en particulier que chaque composante s'est vue attribuer un Pigment propre, et que le cylindre jaune a également un objet de Transformation de plus que les autres.
Pour bien utiliser les Blobs, il est nécessaire de comprendre que chacun d'eux génère à partir de son centre (pour un blob sphérique) ou de son axe (pour un blob cylindrique) une sorte de champ de force à l'intensité décroissante, variant donc entre sa valeur nominale (le paramètre Force, ci-après) au centre ou sur l'axe du Blob et zéro. Bien entendu, les champs de force de plusieurs blobs s'attirent ou se repoussent, et l'intensité du champ à un endroit donné résulte de la puissance et de la distance de tous les champs environnants. Il est alors envisageable de tracer tous les points du champ de force d'une même intensité donnée, à la manière d'une ligne de niveau sur un plan topographique. En fait, déterminer une valeur de Seuil revient à fixer la ligne de niveau qui vous intéresse, et donc à régler le volume finalement affiché par le moteur de rendu. Ceci étant compris, étudions brièvement les différents paramètres qui entrent en ligne de compte dans l'utilisation des Blobs.
Il est étonnant de constater combien certains outils peuvent être très appropriés à certaines applications, et très peu performants avec d'autres. En fait, les Blobs sphériques semblent avoir été créés spécialement pour la modélisation des oeufs au plat, tellement l'exercice se montre facile! Ce qui suit est une transposition pour KPovModeler du modèle d'oeuf au plat écrit pour POV3.1 par Christian Perle (christian.perle@tu-clausthal.de), code dont je m'inspire librement. Voici l'arbre des objets que nous devrions obtenir au final, afin de mieux appréhender le cheminement de ce qui suit.
Commencez par ouvrir une nouvelle scène dans KPovModeler (Fichier > Nouveau
) et supprimez l'élément Boîte qui apparaît par défaut (version 1.0) au centre de la scène en le sélectionnant dans l'arbre des objets et en appuyant sur la touche Suppr ou l'icône symbolisant la poubelle . Sélectionnez l'élément Caméra et modifiez les paramètres suivants:
Caméra:
Localisation: x = 0 y = 3 z = -6
Direction : x = 0 y = 0 z = 3.5
Inutile de changer le paramètre Regarde vers dont les composantes par défaut nous conviennent parfaitement.
Sélectionnez maintenant l'objet Lumière dans l'arbre des objets. Gardez tous les paramètres par défaut afin d'obtenir un point de lumière de couleur blanche, à l'exception de celui-ci:
Lumière:
Localisation: x = -5 y = 6 z = -8
Entrons maintenant dans le vif du sujet, les Blobs! Dans l'arbre des objets, sélectionnez l'objet scène, et ajouter une nouvelle Union en tant que Dernier Fils:
En utilisant le menu: Insertion > Géométrie de Solide Constructive > Union
En utilisant la barre d'outils: cliquez sur l'Icône
Insérez maintenant un nouveau Blob en tant que Premier Fils:
En utilisant le menu: Insertion > Primitives de Solides Finis > Blob
En utilisant la barre d'outils: cliquez sur l'Icône
Modifiez tout de suite la valeur du Seuil à 0.6, ce qui permet de spécifier la taille effective du Blob à 60% de la taille de son noyau. Nous allons maintenant insérer 4 composantes de Blob Sphérique. Chacune aura un Rayon de 1 et une Force d'attraction de 1. Le centre de chaque composante sera toutefois défini comme suit:
En utilisant le menu: Insertion > Primitives de Solides Finis > Blob Sphérique
En utilisant la barre d'outils: cliquez sur l'Icône
Sphère #1:
Centre: x = -0.4 y = 0 z = -0
Sphère #2:
Centre: x = 0.6 y = 0 z = -0.5
Sphère #3:
Centre: x = 0 y = 0 z = -0.2
Sphère #4:
Centre: x = 0.2 y = 0 z = 0.5
Dans l'arbre des objets, sélectionnez l'objet changer d'échelle et appliquez les paramètres suivants:
Changer d'échelle:
x = 1 y = 0.1 z = 1
Cela a pour effet d'aplatir les Blobs cylindriques, les transformant pratiquement en disques. Il ne nous reste plus qu'à donner un matériau à nos blobs pour obtenir le blanc de l'oeuf. Dans l'arbre des objets, sélectionnez le Blob et ajoutez en tant que Dernier Fils un Pigment, une Normale et une Finition.
En utilisant le menu: Insertion > Textures > Pigment, Normal, puis Finition
En utilisant la barre d'outils: cliquez successivement sur les Icônes , et
Dans l'arbre des objets, sélectionnez le Pigment et ajoutez-lui une Couleur pleine: que vous réglez de manière à obtenir une couleur blanche:
En utilisant le menu: Insertion > Textures > Couleur pleine
En utilisant la barre d'outils: cliquez sur l'Icône
Couleur:
rouge = 1 vert = 1 bleu = 1
Sélectionnez maintenant la Normale et ajoutez-lui un Motif que vous réglerez sur Bosses:
En utilisant le menu: Insertion > Textures > Motif
En utilisant la barre d'outils: cliquez sur l'Icône
Normale:
Taille de la bosse: 0.5
Motif:
Profondeur: 0.3
Enfin, sélectionnez la Finition et réglez tout simplement le paramètre suivant pour donner au blanc de l'oeuf sa patine gélatineuse:
Finition:
Phong: 1
A ce stade, à la couleur près, vous avez déjà obtenu jolie flaque de liquide sur une surface parfaitement lisse, avec un effet de bord des plus satisfaisants. Il ne nous reste plus qu'à créer le jaune d'oeuf et le tour sera joué. Dans l'arbre des objets, sélectionnez l' Union et insérez en tant que Dernier fils une Sphère de Rayon 1.
En utilisant le menu: Insertion > Primitives de Solides Finis > Sphère
En utilisant la barre d'outils: cliquez sur l'Icône
Cliquez sur le signe + en face de la sphère dans l'arbre des objets afin de faire apparaître les objets de Transformation par défaut, et appliquez les modifications suivantes:
Changer d'échelle:
x = 0.4 y = 0.1 z = 0.4
Translater:
x = 0 y = 0.05 z = -0.1
Enfin, pour achever l'exercice, insérez immédiatement un Pigment et une Finition, puis, avec le Pigment sélectionné dans l'arbre des objets, insérez une Couleur pleine.
En utilisant le menu: Insertion > Textures > Pigment, Finition et ensuite Couleur pleine avec le Pigment sélectionné
En utilisant la barre d'outils: cliquez successivement sur les Icônes , et ensuite avec le Pigment sélectionné
Finition:
Phong: 1
Couleur:
rouge = 1 vert = 0.7 bleu = 0.1
Le rendu final nous montre que le résultat est plutôt satisfaisant, alors qu'il est plutôt facile à obtenir.
Dans le cadre de l'exercice suivant, qui nous permettra de mettre en oeuvre à la fois des Blobs Sphériques et Cylindriques, vous remarquerez qu'il est possible de reprendre cette approche pour modéliser une ampoule et même, avec un peu d'imagination, un modeste verre à pied. Ce didacticiel m'a été inspiré par Olivier Boyaval (olivierb@linuxgraphic.org) alors que je préparais une petite image de voeux à l'attention des visiteurs de linuxgraphic.org à l'approche de Noël 2002. Il me paraît suffisamment pédagogique pour être adapté ici, car il reprend des notions vues dans les précédents didacticiels, en particulier les déclarations d'objets (voir le didacticiel Travailler le Verre) et l'usage de la CSG (voir le didacticiel Modéliser un tournevis en utilisant la "Constructive Solid Geometry"). Comme précédemment, je vous livre ici l'arbre des objets que nous allons obtenir.
Commencez par ouvrir une nouvelle scène dans KPovModeler (Fichier > Nouveau
) et supprimez l'élément Boîte qui apparaît par défaut au centre de la scène en le sélectionnant dans l'arbre des objets et en appuyant sur la touche Suppr ou l'icône symbolisant la poubelle . Sélectionnez l'élément Caméra et modifiez les paramètres suivants:
Caméra:
Localisation: x = 0 y = 1.5 z = -3
Direction : x = 0 y = 0 z = 1.5
A nouveau, inutile de changer le paramètre Regarde vers dont les composantes par défaut nous conviennent parfaitement.
Sélectionnez maintenant l'objet Lumière dans l'arbre des objets. Gardez tous les paramètres par défaut afin d'obtenir un point de lumière de couleur blanche, à l'exception de celui-ci:
Lumière:
Localisation: x = -30 y = 30 z = -30
Avec l'objet scène sélectionné dans l'arbre des objets, insérez une Déclaration en tant que Dernier Fils, et renommez-la Blob_boule, par exemple.
En utilisant le menu: Insertion > Déclaration
En utilisant la barre d'outils: cliquez sur l'Icône
Il ne nous reste « plus » qu'à définir l'objet déclaré. Pour cela, insérez maintenant un objet Blob en tant que Premier Fils, puis une composante Sphère et une composante Cylindre.
En utilisant le menu: Insertion > Primitives de Solides Finis > Blob, puis Blob Sphérique et Blob Cylindrique
En utilisant la barre d'outils: cliquez successivement sur les Icônes , et .
Ajustez les paramètres des Blobs père et fils comme suit:
Blob:
Seuil: 0.6
Sturm: coché
Blob sphérique:
Rayon: 1
Force: 1
Forme cylindrique:
Fin1: x = 0 y = 0 z = 0
Fin2: x = 0 y = 2 z = 0
Rayon: 0.15
Force: 1
Et enfin communiquez à la Déclaration l'échelle souhaitée:
Changer d'échelle:
x = 2 y = 2 z = 2
Maintenant que nous avons la forme générale de notre boule de Noël, nous allons utiliser la CSG pour générer l'enveloppe réelle de la boule. Insérez en tant que Dernier fils de la scène une nouvelle Déclaration que nous nommerons cette fois Boule_noel.
En utilisant le menu: Insertion > Déclaration
En utilisant la barre d'outils: cliquez sur l'Icône
Ajoutons maintenant successivement une Intersection (en tant que Premier Fils), une Différence (en tant que Premier fils de l'Intersection), un Lien objet (en tant que Premier Fils de la Différence) puis un autre Lien objet et enfin une Boîte (en tant que Dernier Fils de l'Intersection). La séquence d'icônes à cliquer est la suivante: , , , et . Sélectionnez dans l'arbre des objets le premier Lien objet et cliquez sur le bouton Sélectionner pour choisir dans la liste des Prototypes la Déclaration Forme_boule que nous avons créé précédemment. Faîtes exactement de même pour le deuxième Lien objet, mais appliquez en plus le changement de paramètres suivant:
Changer d'échelle:
x = 0.9 y = 0.9 z = 0.9
Enfin, sélectionnez la Boîte dans l'arbre des objets et modifiez sa géométrie de la façon suivante:
Boîte:
Angle 1: x = -1 y = -1 z = -1
Angle 2: x = 1 y = 0.5 z = 1
L'enveloppe de la boule de Noël a très simplement été créée en définissant le volume commun à notre Blob de base pour l'enveloppe extérieure, le Blob de base légèrement sous-dimensionné pour l'enveloppe intérieure, et la boîte pour arrêter l'extrémité de la boule, grâce à l'opération Intersection de la CSG. Il ne nous reste plus qu'à mettre en place l'objet ainsi déclaré dans notre scène au moyen d'un Lien objet, en tant que Dernier fils de celle-ci, et en choisissant Boule_noel comme Prototype (bouton Sélectionner).
En utilisant le menu: Insertion > Primitives de Solides Finis > Lien Objet
En utilisant la barre d'outils: cliquez sur l'Icône
Une fois ceci fait, insérons un Pigment (et une Couleur pleine, fille de celui-ci) et une Finition.
En utilisant le menu: Insertion > Textures > Pigment, Finition et ensuite Couleur pleine avec le Pigment sélectionné
En utilisant la barre d'outils: cliquez successivement sur les Icônes , et ensuite avec le Pigment sélectionné
Finition:
Diffusion: 0.3
Spéculaire: 0.6
Réflexion: rouge = 0.8 vert = 0.8 bleu = 0.8
Métallique: coché
Couleur:
rouge = 0.8 vert = 0.8 bleu = 1
Nous pouvons maintenant observer le résultat, au terme d'un ultime rendu. Bien sûr, il manque encore à modéliser l'extrémité avec son petit anneau en plastique par lequel vous attacherez votre boule à votre sapin, mais il vous suffit d'un cône tronqué grâce à la CSG et d'un tore en guise d'anneau pour que le tour soit définitivement joué.
L'usage des Blobs se révèle facile et rapide, surtout à l'usage, mais souvent difficile et imprévisible lorsque vous souhaitez modéliser des objets complexes. En effet, pour ceux-ci, vous risquez d'être amené à effectuer de nombreux rendus intermédiaires à mesure que vous ajoutez des composantes à votre Blob, car il ne vous sera pas toujours facile d'anticiper les champs de force mis en oeuvre, et encore moins la valeur de Seuil à retenir pour avoir l'apparence souhaitée. Pour cette raison, il vous faudra sans doute composer votre objet organique à l'aide de multiples Blobs pères, chacun avec un Seuil spécialement spécifié, et faire montre de beaucoup de patience. Les résultats peuvent toutefois être payants, ainsi qu'en témoigne le script Blob Man People écrit par Peter Houston et disponible sur http://objects.povworld.org/ qui permet de composer et de donner une posture à des personnages modélisés à l'aide de Blobs. Bien sûr, le résultat n'est pas d'un très grand réalisme, mais il convient parfaitement à des scènes « cartoonesques ». Malheureusement, ce script n'est pour l'instant pas encore directement exploitable sous KPovModeler, à l'instar de la plupart des objets du même site qui demandent quelques efforts et adaptations pour intégrer une scène composée avec KPovModeler. Mais les auteurs de KPovModeler travaillent à améliorer les fonctions d'imports et d'exports, alors gageons que ce n'est qu'une question de temps!