Sélectionner une page

Fractales : Mandelbulber ou Mandelbulb3D ?

Il y a déjà bien (trop) longtemps que je me suis intéressé aux fractales en 3D et mes premiers essais ont été fait sur Mandelbulber, un générateur de fractales en trois dimensions capable d’explorer les fonctions trigonométriques, hypercomplexes, les Mandelbulbs et autre Mandelboxes. Mais ce logiciel « outsider » souffre depuis sa sortie d’un déficit d’image. Il n’est pas moins bon, très loin de là, mais il est moins utilisé, moins connu que son challenger Mandelbulb3D. Son groupe Facebook par exemple ne compte que 1544 membres alors que celui consacré à Mb3D pas loin de 13700… Autre indicateur : on trouve sur l’Internet une centaine de paramètres prédéfinis en .fract alors que ceux pour Mandelbulb3D se comptent par dizaines de milliers…

Alors, comme la plupart des fractalistes, j’ai été happé dans la mouvance Mandelbulb3D, « l’autre » logiciel prétendument d’un abord plus facile… Mais entre temps, Mandelbulb3D est mort, figé dans une ultime version qui n’évoluera plus, fossilisé en un dernier spasme dans son langage de programmation obsolète.

Krzysztof Marczak

Krzysztof Marczak

On a suivi les tentatives pour le ressusciter mais, même le grognon Andreas Maschke a dû jeter l’éponge (de Menger, bien entendu). « A dead piece of flesh » disait-il, dégoutté, à propos de ce logiciel… 🙂

Pendant ce temps, Mandelbulber a été entièrement réécrit en version 2 et nous en sommes aujourd’hui à la version 2.17 beta. Le fait qu’une minorité de personnes l’utilise augure pour moi de belles découvertes à faire, à condition de l’apprivoiser. En anglais (la version française est à traduire). Son programmeur polonais Krzysztof Marczak (aka Buddhi) ne compte d’ailleurs pas s’arrêter en si bon chemin, qui n’a cessé depuis les débuts de produire de belles images avec sa création (contrairement à certains programmeurs au gout artistique aussi sûr qu’une clé à molette… Inversé, le pas de la clé…).

Il suffit de visiter sa galerie sur DeviantArt pour s’en convaincre, site dont nous avons extrait ces quelques images.

Les atouts de Mandelbulber2 sont immenses mais je retiendrais surtout ses gages de pérennité. Il est écrit en C++, un langage de programmation orienté objet et très « moderne » et polyvalent. Et  ce grâce à l’environnement de développement multiplateforme Qt. Pas clair ce signe… Qt toi d’abord ? Un petit tour sur leur site web nous montre qu’il s’agit aujourd’hui d’une multinationale d’origine Finlando/norvégienne. Du lourd. Pas froid aux yeux !

Mandelbulber2 tourne donc indifféremment sur MacOSX Mojave, Windaube et bien sûr Linux/Debian sur lequel il a été développé : de la belle eau de Pologne !

Installer Mandelbulber sous Linux

Pour l’apprendre et pour les mêmes raisons que pour Gimp, et bien que la version Mac soit d’excellente facture, j’ai décidé de le faire tourner dans son environnement natif, sous Linux. Mandelbulber apparait bien dans la liste des programmes de MintLinux mais, calamitas, il s’agit de la version 2.01, très largement obsolète. N’écoutant que mon courage, j’allais sur le GitHub du programme et chargeais la dernière version stable (2.16) tar.gzippée.

Une fois décompactée, on tombe sur un installeur ! Sans y croire, je double clique sur « Install » en l’ouvrant dans un Terminal, qui m’explique bien gentiment (en mode texte) qu’il me manque « Qt environnement développement ». M’aurait étonné…

Direction Menu/Gestion de logiciel : on tape Qt et… Un tas de flegmons apparaissent, correspondant me semble-t-il au fameux environnement de développement. Voici ceux que j’ai installés, un peu au pif je dois dire. Mais toujours pas d’install possible… Les yeux injectés de sang, je lis et relis les instructions sur la page Github qui me renvoie au Read Me (il faut toujours lire les ReadMe’s). Bon, sang, mais c’est écrit : il faut encore installer des cochonneries !

Ceci grâce à la « simple » commande suivante, à taper dans le Terminal : sudo apt-get install build-essential libqt5gui5 qt5-default libpng16-16 \libpng-dev qttools5-dev qttools5-dev-tools libgomp1 libgsl-dev \libsndfile1-dev qtmultimedia5-dev libqt5multimedia5-plugins liblzo2-2 \liblzo2-dev

Une minute de silence, le temps que vous appréciez bien la concision de cette commande (avec les « anti slashs » et les espaces vicieux de rigueur)… Où vont-ils chercher des trucs pareils ?!?

Toujours est-il que je copie/colle donc cette commande dans le terminal et, miracle, un processus se lance et les lignes d’instructions défilent, faisant visiblement appel à des ressources internet. C’est long. Le temps de mirer l’écran déformé à travers ses larmes en se disant que c’est sans doute la dernière fois qu’on le voit allumé…

Il faut de temps en temps s’identifier comme administrateur, bien entendu en mode « aveugle » (rien, mais rien ne s’inscrit à l’écran. Pour éviter qu’un petit copain lise le mot de passe par dessus votre épaule, sans doute ? Bonjour l’ambiance)… Enter, enter, Y, Enter… Rien ne se passe mais çà a l’air fini.

Je retourne dans le dossier de l’installeur, double-clique « Install et » Yesss, cette fois c’est parti ! MakeFile et tout le tralala : La version se retrouve bien à jour, même si j’ai perdu son icône dans la bagarre…

La comédie des drivers de cartes graphiques

Au contraire de Mandelbulb3D, Mandebulber est une application qui tourne en 64 bits et qui offre la possibilité d’utiliser la carte graphique pour calculer les rendus plutôt que la mémoire CPU. Ce qui permet des gains de vitesse de facteur 10 ! Fon da men tal ! Par exemple, cette illustration de l’auteur a été rendue en 2h40 ce qui aurait demandé 95 heures en CPU. Sans parler de l’animer à raison de 25 images par secondes… Pratiquement, cela veut dire qu’on dispose d’un preview « temps réel » lors des explorations de fractales. Les habitués de la fenêtre du « navigateur » (écrite en braille) de Mb3D apprécieront…

Alors, forcément, sur Mac, cela ne marche pas ! Je m’explique. Traditionnellement, le Mac n’est pas destiné aux « bidouillages » du monde PC. C’est un système fermé mais parfaitement conçu où tout est en principe prévu. Ainsi en va-t-il de la gestion des cartes graphiques et de leurs fameux « drivers » (pourris). Mais bien entendu, les fabricants de cartes sont toujours à la traîne et les drivers pour Mac OSX Mojave pas disponibles. En fait, c’est un peu plus compliqué que cela et résulte d’une guerre d’influence entre Mac et en l’occurence NVidia. Le premier ayant prévenu le second depuis déjà plusieurs versions qu’ils ne supporteraient plus le protocole OpenCL. Pas nouveau…

Alors, la fonctionnalité tant attendue fonctionne, disons, sur une jambe. Quant à installer les drivers NVidia sur Linux c’est sans doute possible mais je n’ai pas les nerfs d’acier pour tenter cela sur une émulation d’un Mac flambant neuf. J’essayerais à l’occasion sur un de mes PC étiques, qui ne pourront pas tomber plus bas… Les fonctions précises accessibles par l’OpenCL sont décrites sur le site officiel.

Prise en main

Premier arrêt : les préférences où il vous est possible de choisir entre plusieurs thèmes, typos, etc. C’est important. De même, l’interface est entièrement dockable et dedockable pour la rendre conforme à vos méthodes de travail et non pas « collée aux fesses » et jamais à la bonne taille de l’écran comme dans Mb3D

Comme toujours avec ce type de logiciel, mieux vaut se faire la main en utilisant des paramètres existants plutôt que de vouloir tout créer de zéro. Pour ce faire, plusieurs possibilités s’offrent à nos yeux ébahis :

Au sein du logiciel lui même : File/Load examples, comme son nom l’indique. Tous les exemples bénéficient d’un preview mais leur calcul est parfois long à la première ouverture.

On peut aussi copier des paramètres sur divers sites et importer le presse papier dans Mandelbulber avec la commande Alt/O :

Mandelbulber.org,

Google (avec un rien de recherche booléenne),

Google deviant art ou encore télécharger cette

collection de paramètres au format .fract…

Ensuite, il faut se jeter à l’eau et explorer les différents réglages disponibles. Voici un premier et bien partiel tour d’horizon…

Les primitives

 

On retrouve dans ce menu les fractales 3D et 4D classiques (on apprécie le preview des formes), diverses transformations à appliquer (mode hybrid) et quelques « primitives » : plan, sphère, cube… Ces dernières sont insérables à la souris (plans d’eau par exemple) ce qui est beaucoup plus intuitif que les réglages par coordonnées de Mandelbulb3D. Mais, disons-le, l’offre « fractale » est beaucoup moins pléthorique que dans Mb3D. Il n’y a par exemple pas de fractales dIFS… Mais il y a tout de même déjà largement de quoi faire !

Il est possible de combiner jusqu’à 9 primitives et fractales et selon les modes « hybridation » mais aussi « booléen ».

Eh oui, je réalise seulement maintenant que les stupides appellations de M3bD : Alternate, Interpolate, DECombinate ne sont autres que les opérations booléennes de base ! La dernière avec son lot de variables…). Encore fallait-il faire le rapprochement. Merci Mandelbulber !

Il en est hélas ainsi un peu partout dans Mb3D où quantité de concepts 3D sont renommés à la « mord moi l’nomme » apportant la plus grande confusion à l’interface… Dans Mandelbulber on dispose de la terminologie exacte ou tout au moins de celle admise le plus généralement dans le monde de la 3D et non des appellations fantaisistes et particulièrement confuses qui induisent l’utilisateur en erreur dans ce monde fractal qui n’a pas besoin de çà pour être complexe. Ainsi, dans Mandelbulber, la réflection, c’est la réflection, la spécularité, l’occlusion ambiante, idem. Croyez-moi, ça change la vie !

Les coupes

Vous savez que j’aime couper les fractales en quatre, et c’est bien entendu possible dans Mandelbulber. Le réglage se situe dans l’onglet « Rendering Engine » (oui, nul n’est parfait…) puis dans la section « Limits ». Une fois qu’on a trouvé, çà va…

Les matériaux

C’est l’un des points forts du logiciel qui se comporte comme la plupart des logiciels 3D avec tout le confort moderne : réflexion, Fresnel, indice de réfraction, occlusion ambiante, placage de textures avec normales, déplacement, etc. Comme toujours, attention avec la fonction « déplacement » qui est toujours très avide de mémoire et a tôt fait de « planter » les systèmes… Notons qu’il est possible de sauvegarder sa bibliothèque de matériaux et surtout d’appliquer des matériaux différents sur les différentes fractales utilisées, une fonction unique et qui, comme tous les réglages de Mandelbulber est animable !

Fait son apparition également l’aide contextuelle, fort bien faite, selon la position de la souris : ici, l’explication du placage de texture « déplacement ». Reste un petit avantage Mb3D : la possibilité d’essayer différentes textures à plaquer, sans avoir à recalculer toute la fractale. Mais avec le preview OpenCL de Mandelbulber, cet avantage disparait au profit du « multi-texturage »…

La navigation

Comme toujours, dans ce genre de logiciels, il est fondamental de bien maîtriser les mouvements de caméra. On peut utiliser la souris pour réaliser les différents mouvements ou des combinaisons de touches :

    • Shift+Up or Q / Shift+Down or Z: Move Camera Forward / Backward
    • Shift+Left or A / Shift+Right or D: Move Camera Left / Right
    • W / S: Move Camera Up / Down
    • Up / Down / Left / Right: Rotate Camera
    • Ctrl+(Left / Right): Roll Camera Left / Right

Quand on clique dans un champs de coordonnées, on fait apparaître un panneau de commande assez explicite (multiplié par 2, divisé par 2, zéro, reset, curseur d’ajustement fin…) qui permet de modifier très facilement les valeurs. Un outil d’autant plus précieux qu’il est présent dans tous les champs de valeur du logiciel ! Un seul apprentissage pour un usage général et intuitif : génial !

L’angle de champs de la caméra est bien sûr réglable : normal, grand angle, dôme, fisheye, panorama 360 °…

Consulter le tutoriel vidéo de l’auteur pour être à l’aise avec les mouvements de caméra !

Les éclairages et ambiances

Dans Mandelbulber on dispose seulement d’une lumière principale et de 4 lumières personnalisables avec les ombres réglables indépendamment (au lieu de 6 dans Mb3D). Chaque lumière peut-être volumétrique et l’on dispose également de plusieurs fonctions de brouillards et de lueurs indépendants. Tout cela en temps réel par pointage direct à la souris ! Enfin ! Ceci est particulièrement pratique pour régler le brouillard, et les lumières volumétriques (réalistes, avec « rayons) au lieu des interminables essais/erreurs paramétriques nécessaires dans Mandelbulb3D.

Ci-dessous quelques essais, avec une seule lumière volumétrique centrale, les ombres portées et une texture métal « mate » : 1| Une éponge de Menger avec quelques rotations. 2| La même « habillée » par une texture de déplacement, en niveau de gris. 3| La même enfin avec une texture importée de Mb3D utilisée cette fois dans le canal de diffusion…

Rendu et animation

Mandelbulb3D est codé en 32 bits et calcule les images avec le CPU (processeur). Il en résulte la lenteur congénitale et des difficultés à rendre des images de grande taille. On doit passer pour cela par une fonction un  peu tarabiscotée qui rend un patchwork de petites images à assembler… Rien de tout cela avec Mandelbulber puisque nous avons déjà dit qu’il fonctionne en 64 bits et qu’il tire le meilleur parti du rendu GPU (carte graphique) en OpenCL. Pour ceux qui ont la chance de… 😉

Mais le Graal c’est la fonction Netrender : le rendu en réseau. En clair, la possibilité de partager les temps de calcul entre plusieurs machines proches ou distantes. Comme les applis 3D pro. Encore une fois, avec l’OpenCL, il s’agit là de fonctionnalités orientées production. Il devient possible de réaliser des films de qualité sans y passer des mois…

Mandelbulber cave

De plus, il s’agit de rendu progressif, qui permet d’avoir un aperçu rapide de l’image finale (de moins en moins pixelisée) pour corriger les éventuelles erreurs. Et non pas un rendu qui est calculé ligne à ligne : l’image se dévoile peu à peu, puis vient la passe ombres, puis l’occlusion ambiante, puis les reflexions et transparences, puis la profondeur de champ… Zzzzz comme dans Mb3D. Z’êtes endormis ? Moi aussi !

Notons que la profondeur de champ se règle à la souris, une fois encore de manière plus « naturelle » que dans Mb3D… Il existe plusieurs modes et qualité de rendu, dont le fameux QMC « Quasi Monte Carlo » pour des rendus encore plus réalistes. Enfin, des fonctions de post production existent : De quoi travailler l’image rendue en terme de gamma, saturation, contraste, brillance et HDR.

Je n’ai pas exploré en profondeur les fonctions d’animation mais il me semble que tout y est (tous les paramètres de la fractale sont animables indépendamment par un clic droit/menu) et on peu synchroniser les animations avec une bande son synchro…

Importer ?

La question que tout le monde se pose maintenant est la suivante : est-il possible d’importer les fractales crées dans Mb3D dans Mandelbulber ? Ou tout au moins « traduire », exporter ou importer les paramètres ? Et la réponse que tout le monde se prend en pleine gueule est : non ! Il suffit de comparer les codes respectifs de deux fractales côte à côte pour se rendre compte du fossé… Mais sinon, franchement, par une nuit sans lune, à qui feriez-vous le plus confiance ?

La seule solution consiste à importer manuellement les primitives (reproduire dans Mandelbulber celles utilisées dans Mb3d) et reproduire les rotations  (il existe un bout de code pour faire çà)… Idem pour la caméra, les éclairages et les ambiances. Par contre, les textures et matériaux peuvent être importées sans problèmes. Les résultas sont variables, entre « approchant » et « fractalovomi »…

En appliquant ces techniques, j’ai essayé de créer dans Mandelbulber une vallée des hippocampes décente ou tout au moins une vallée des éléphants. Mais je me suis énervé en cours de route et déchiré violemment le papier millimétré. Miracle, au centre de la déchirure, dans la fermeture éclair : mes chers éléphants ! 😉

Je vous tiendrais au courant de mes progrès dans la maîtrise de ce logiciel plus complexe et complet qu’il n’y paraît…

En résumé

Comme toujours les deux logiciels présentent des points forts et des points faibles mais pour ma part, c’est Mandelbulber qui est largement en tête, surtout pour les animations, si on utilise au mieux toutes ses fonctionnalités. Et qu’on dispose de l’accélération OpenCL : utilisateurs de MacOS, passez votre chemin… 🙁

Publié le Mar 3, 2019

Voir le site pro ?

Tous les tableaux

Tous les articles

0 commentaires