Masques africains, maquillages de clown et petits mickeys

Toujours résolu à animer des petits mickeys et en particulier leurs expressions faciales, j’ai déjà essayé d’appliquer une texture sur un visage tout plat, mais ça restait peu crédible. Au prix de pas mal de travail de maillage et en prétendant s’inspirer de masques africains, il n’est pas trop difficile d’ajouter au visage un nez et des arcades sourcilières, dont on augmente la lisibilité avec un maquillage de clown, ce qui suffit à nous ramener dans la troisième dimension, après quoi on peut se limiter à modifier la texture en appliquant grossièrement des traits noirs sur un fond blanc. Alors, on peut vraiment travailler très vite, tout spécialement si on a recours à la technique des calques, ce que je fais avec Krita. La précision des traits n’est pas essentielle, on peut considérer que les imperfections ajoutent un petit côté artisanal bienvenu dans des images 3D par nature très géométriques.

Si je commence à assez bien maîtriser cette technique, hélas ça ne corrige ni mon daltonisme ni mon goût de chiottes… mais comme dit la Carmen de Bizet, je daigne m’en contenter.

Motifs végétaux et personnages chez Sweet Home 3D

Blender n’est pas seul au monde, il existe beaucoup d’autres logiciels de 3D nettement moins puissants mais aussi beaucoup plus faciles à prendre en main, comme par exemple celui que je vais évoquer ici, « Sweet Home 3D ».

Pour être honnête, je ne l’ai strictement jamais manipulé ni même installé, j’ai seulement vu quelques vidéos de démonstration et visité leur site web (http://www.sweethome3d.com/) pour me faire une idée — a priori, ça n’est pas assez polyvalent pour ce que je souhaite faire, mais ça a l’air de pouvoir être un outil pédagogique intéressant pour permettre à des élèves du secondaire de se familiariser avec la 3D en élaborant des scènes représentant des intérieurs de maisons, avec des portes, des fenêtres, du plancher, du carrelage, des meubles, des escaliers, des bibelots.

C’est sans doute très bien pour des débutants en milieu scolaire — détail non dépourvu d’intérêt, c’est un logiciel libre — mais moi, je m’en fiche quand même un peu. Cela dit, le projet a un aspect très sympathique: son abondante bibliothèque d’objets tout prêts et libres de droits, qu’on peut intégrer bien évidemment dans Sweet Home 3D… mais aussi dans Blender si on se donne un peu de mal. Bon, un peu plus qu’un peu. Si on se donne vraiment du mal, en fait.

Ce sont des objets généralement réalistes (ils n’ont pas l’aspect « cartoon » que l’on trouve très souvent dans les collections de bazars libres de droits, et du coup il est possible d’en mettre plusieurs dans une même scène sans que ça ait un aspect trop incongru), et ils sont fournis dans un format relativement courant, celui d’Alias Wavefront.

Il s’agit d’un format Ascii que j’ai longtemps trouvé très inutilement compliqué (au lieu de se contenter comme tout le monde de faire des inventaires de coordonnées cartésiennes, il impose de calculer et d’inscrire ce qu’on appelle des normales, c’est-à-dire, si j’ai bien compris, une façon de noter l’orientation d’un plan 2D dans un espace 3D, ce qui par la suite peut simplifier les calculs de rendu; c’est beaucoup trop complexe pour que j’y comprenne quelque chose, mais ça n’est pas si difficile que ça à calculer quand on se fait aider par Wikipédia… enfin, bref, j’y suis parvenu mais surtout ne me demandez pas de vous expliquer comment).

Bref, ce format Alias Wavefront utilisé par la bibliothèque d’objets libres de droits de Sweet Home 3D n’est vraiment pas inutilisable quand on sait écrire des moulinettes de conversion (ça tombe bien, c’est ma spécialité), et par ailleurs c’est un des rarissimes formats que Blender 2.8 gère assez correctement en import comme en export — sous réserve toutefois qu’on ait appris comment remettre en place les textures quand elles ont disparu pour une raison X ou Y au cours du processus d’importation ou des manipulations subséquentes — si vous connaissez une fonction standard de Blender qui permet de remettre en place les textures sans y passer cinq heures, indiquez-la moi, mais à ma connaissance cette manipulation absolument indispensable avec les objets texturés n’est guère réalisable qu’à l’aide d’un petit script Python que je ne suis parvenu à écrire que très récemment, misère et putréfaction… mais maintenant que je l’ai écrit ça m’a bien débloqué, et en particulier ça m’a permis de récupérer dans Blender la jolie collection d’objets texturés que je me propose de vous montrer maintenant.

Dans la bibliothèque de Sweet Home 3D, on trouve très principalement des meubles et des éléments d’architecture, mais moi j’aime nettement mieux les concocter moi-même que de ne rien pouvoir changer à ceux déjà élaborés par les copains avec leur goût de chiottes, alors que le seul goût de chiottes que je supporte, c’est le mien. Donc, je n’ai pas du tout touché aux meubles ni aux motifs architecturaux, qu’on peut élaborer avec des calculs et des listings comme j’aime faire, je me suis au contraire focalisé sur les bazars qu’on ne peut guère concocter qu’à la mimine avec un talent graphique dont le Bon Dieu ne m’a pas pourvu et qui donnent quand même un aspect plus vivant à des scènes presque exclusivement consacrées à la gloire de la géométrie et du théorème de Pythagore comme je sais faire.

Je publie donc dans la vidéo ci-dessus ma collection de motifs végétaux et de personnages, récupérés depuis Sweet Home 3D.

Mises à jour, je vous hais

Mais put@#% de bor£$µ, ils testent leur soft avant de faire des mises à jour, chez Blender?

Gestion des ombres entre Blender 2.80 et 2.81

En haut, c’est un rendu Eevee de la version 2.80; médiocre, mais acceptable. En bas, c’est un rendu Eevee de la version 2.81 (que je croyais, bien naïvement, a priori plus déboguée que la précédente). Visez-moi ce friselis ridicule au bord du toit, et surtout constatez que cette ombre friselée n’apparaît même pas là où elle devrait être, mais environ 15 cm trop bas…

Même merdouille d’affichage sous la caisse du camion: non seulement l’ombre est friselée, mais en plus elle est trop bas. Je les boufferais!

Ils sont au courant, les mecs de Blender, qu’il y a des gens qui essayent de produire des images avec leur soft? Grrr!

Vingt smileys en seulement quinze ans

Ca m’aura seulement demandé une quinzaine d’années, mais je commence enfin à pouvoir donner vie à des petits Mickeys dans Blender.

Ce qui me débloque enfin, c’est d’avoir surmonté deux obstacles: primo, réussir à faire bouffer à Blender des objets tout texturés (parce que je persiste à penser que son éditeur UV est une horreur); deuxio, avoir enfin compris comment paramétrer un rendu d’images avec un petit script Python.

Quinze ans à se prendre la tête avec l’immonde et imbitable interface de Blender… Est-ce que ça en valait vraiment la peine? Je n’en jurerais pas… mais enfin je commence enfin à m’amuser, et je ne l’ai pas volé.

De la scie sauteuse dans Blender

Je ne sais pas si vous êtes comme moi assez vieux pour qu’on vous ait offert ce genre de joujoux quand vous étiez petits:

Joujoux fabriqués à la scie sauteuse

Mais bon, moi, j’ai eu ce genre de jouets, et depuis que je suis tout petit l’une de mes ambitions est d’arriver un jour à les fabriquer moi-même. Drôle d’idée voire affligeante perversion témoignant d’un effarant manque de maturité… mais c’est comme ça, j’ai toujours eu envie de fabriquer mes propres joujoux. Eh bien, figurez-vous qu’à cinquante-neuf ans révolus et grâce à plein plein de logiciels libres (LibreCAD, Inkscape, Gimp, Krita, Blender et surtout Python)… eh bien j’y arrive enfin, et j’en suis si fiérot que je crois nécessaire de vous en faire profiter:

Bon, je ne suis pas sûr que vous allez comprendre grand-chose à la vidéo ci-dessus, mais c’est quand même censé être une vidéo explicative. 😀 Ayez la bonté de ne pas trop m’en vouloir si c’est un peu cryptique, car c’est lié à mon côté surdoué (qui ne se manifeste pas souvent, oh que non): parfois, quand je suis touché par ma muse informatique, je fais des trucs tellement compliqués que deux jours après les avoir abandonnés je n’ai plus la moindre idée de comment diable j’avais pu m’y prendre pour y arriver, et c’est quand même énervant. Alors, il faut absolument que je prenne des notes avant qu’il soit trop tard, et cette vidéo est une forme de prise de notes (les Post-it du troisième millénaire sont devenus un peu compliqués, c’est l’époque qui veut ça).

Tous vos sarcasmes sont bienvenus, ils glisseront sur moi comme l’eau sur la peau d’un canard, intimement convaincu que je suis que c’est seulement la jalousie qui vous fera parler: z’êtes même pas capables d’en faire autant, bande de blancs-becs.

Blender 2.8, triomphe et désastre

J’ai mis mon nez dans Blender 2.8, et on ne m’avait pas menti: par bien des côtés, c’est carrément un autre logiciel que Blender 2.79.

L’interface (qui, il faut bien l’admettre, a toujours été une abomination) a été revue sur quantité d’aspects, et généralement de façon pertinente: l’usine à gaz bordélique est devenue une usine à gaz bien rangée… mais ça ne change rien au fait que tout le savoir-faire que vous aviez pu développer pour vous orienter dans le bordel devient du jour au lendemain obsolète.

OK, c’est pour notre bien… mais il faut quand même être conscient que ça a une conséquence épouvantable: TOUS les tutoriels disponibles sur le web et YouTube deviennent aux trois quarts obsolètes eux aussi, et donc chaque fois que vous vous direz « oh, merde, je vais pas y passer six mois, en posant poliment ma question à Google je vais bien finir par savoir où est caché ce foutu réglage qu’il faut absolument que je modifie »… eh bien, faites comme à l’entrée de l’Enfer de Dante: abandonnez toute espérance: si, vous allez bel et bien devoir vous retaper au minimum minimorum des journées entières d’apprentissage, et pour certains réglages, ces journées entières seront des semaines entières, et pour certains autres ces semaines entières seront des mois entiers; au terme desquels, n’en doutez pas, Blender accouchera d’une version 2.9, ou 3.0… qui vous forcera une fois de plus à passer des journées, des semaines et des mois à retrouver vos repères.

En plus, il n’y a pas que l’interface qui a été revue: les moteurs de rendu aussi, et de fond en comble. Très bon côté des choses: les bugs d’affichage insupportables que j’avais dénoncés ici ont pour la plupart disparu. Très mauvais côté des choses: tous les réglages minutieux que vous aviez pu mettre au point jusqu’à la version 2.79… sont inadaptés à la version 2.8, et vous allez devoir retravailler TOUS vos éclairages. Oui, TOUS — sauf à continuer de travailler avec la version 2.79 jusqu’à ce qu’elle plante parce qu’elle ne sera plus maintenue; désastre sans doute lointain, mais inéluctable.

Les nouveaux moteurs de rendu sont beaucoup, beaucoup, beaucoup mieux que les précédents. Sur certaines vidéos de démonstration, c’est absolument bluffant. Mais il y a un mais… Des tas d’effets « moches mais lisibles » (en particulier sur les reflets et transparences) que vous aviez pu identifier par le passé… ont été remplacés par d’autres beaucoup moins moches mais 1) vous devrez vous retaper des tonnes de réglages; 2) ce sera beaucoup beaucoup plus beau, mais ça demandera peut-être, sur des scènes simples, des temps de réponse sensiblement moins enthousiasmants que par le passé. « Quand c’est mieux, ça coûte plus cher », disait ma grand-mère.

Et puis il y a des petites cochonneries inacceptables: les textures mises en place avec la version 2.79 ne sont plus en place avec la version 2.8, il faut les remettre (pourquoi? mystère); les scripts Python pouvaient être découpés en plusieurs modules, ils doivent désormais être d’un seul tenant; les convertisseurs X3D sont beaucoup moins élaborés qu’avant (ils paument les couleurs et les textures), et « c’est pas un bug, it’s a feature« : c’est complètement normal, ce n’était pas développé par l’équipe de Blender, c’était des contributions de bénévoles, donc à vous de leur demander de recommencer à bénévoler pour adapter à 2.8 le boulot qu’ils avaient fait pour les versions antérieures. J’ai tendance à trouver cette façon de faire un peu cavalière…

Le progrès consiste à remplacer ce qui ne marchait pas vraiment mal par ce qui ne marche pas vraiment bien… Et Blender progresse comme ça. On aime, on n’aime pas, mais faut faire avec — et dans x mois, quand vous devrez vous adapter à la version 2.9 ou à la 3.0, vous verrez que vous la regretterez, cette version 2.8 contre laquelle vous aviez pesté quand elle vous a forcé à abandonner la 2.79…

« If you can meet with Triumph and Disaster and treat those two impostors just the same », comme disait Kipling… alors vous aimerez Blender 2.8. Dans le cas contraire, je crois que les développeurs de Blender ne se donneront même pas la peine de vous sourire d’un air désolé. Blender, ça se mérite, voilà, et si t’es pas content, ça se mérite quand même.

Blender a un rendu nul, mais il dépote

Bon, qui aime bien châtie bien: j’ai déjà consacré assez d’énergie à dire du mal du moteur de rendu de Blender pour concéder qu’il a pour lui un argument massue: l’extrême brièveté de ses temps de réponse. Quand j’avais produit avec POV-Ray l’animation que vous pouvez voir ci-dessus, ça m’avait pris sept heures, avec dix fois moins de pixels, donc pour une qualité similaire à ce que vous voyez il m’aurait fallu environ 70 heures. Eh bien, maintenant que j’ai compris comment manipuler Python dans Blender, je lui ai fait refaire la même quantité d’images dans une meilleure définition. Les cadrages et la fréquence des images sont absolument inchangés: j’ai fait lire et convertir à Blender, grâce à un script Python, les très longues listes de paramétrages qui m’avaient servi pour l’animation POV-Ray, et que j’avais conservées. Soit dit en passant, la possibilité de faire tourner Python dans Blender, et surtout de faire varier sa configuration grâce à des fichiers de paramétrages calculés hors de son interface immondément pas pratique… ça change complètement la vie, et Blender passe immédiatement grâce à cela du statut d’épouvantable usine à gaz à celui de logiciel surpuissant et indispensable.

Bref. Ce nouveau calcul de l’animation m’a pris trois quarts d’heure, c’est-à-dire… environ 90 fois moins de temps que le travail équivalent avec POV-Ray. Honnêtement, même si Blender oblige à être beaucoup plus soigneux pour obtenir des images lisibles, je dois admettre que cela me fait pratiquement renvoyer POV-Ray aux oubliettes, au moins pour les calculs d’animation — POV-Ray reste intéressant pour le calcul d’images fixes très fouillées.

Par ailleurs, Blender permet aussi d’effectuer des prévisualisations de l’animation directement à la vitesse de diffusion du rendu final, et même si c’est avec un rendu très médiocre, c’est bien sûr une bénédiction quand on travaille au brouillon.

Cela dit, il est clair que Blender obtient ces temps de réponse enthousiasmants en rognant très considérablement sur la précision de ses calculs, et cela peut engendrer de vrais problèmes de lisibilité quand des surfaces superposées sont assez proches. Sur la vidéo que vous regardez, vous constaterez probablement des tas de petites saletés dans l’affichage du quadrillage, et notamment à ses intersections: en fait, quand plusieurs surfaces sont définies à peu près au même endroit (le quadrillage est très proche du sol, et là où les lignes se croisent, elles sont placées exactement au même niveau), alors Blender a tendance à penser qu’une surface projette des ombres sur l’autre, mais surtout, et c’est beaucoup plus grave, il lui arrive d’afficher l’ombre par-dessus la surface qui est censée lui donner naissance! Dans certains cas de figure, cela rend vraiment l’image immondément illisible, et cela force donc ou à renoncer à certains cadrages, ou à devoir considérablement retravailler les objets de la scène pour éliminer de telles superpositions.

Du Python dans Blender, c’est possible

Il y a des années que je cherchais un tutoriel intelligible sur l’usage de Python dans Blender pour l’automatisation du calcul d’une animation… mais je crains qu’il s’agisse de l’un de ces secrets qui ne peuvent être transmis que de bouche de druide à oreille de druide, car tout ce que j’ai trouvé à ce sujet m’a toujours paru complètement imbitable. Un petit camarade (dont voici le site) a fini par me fournir un fichier d’exemple et surtout m’expliquer comment on le faisait tourner, et bon, avec quelques années de Python et de Blender dans les pattes, il m’apparaît qu’en effet il n’est pas du tout impossible d’en tirer quelque chose, et la vidéo david-lynchesque qui chapeaute ce post en est une proof of concept.

Dès l’instant où j’ai le sentiment de dominer ce savoir ésotérique, je suis saisi de la noble aspiration altruiste de concocter le tutoriel simple sur la question que j’ai moi-même désespérément cherché pendant des années… mais vous savez quoi? Je crains fort que la raison pour laquelle ce tutoriel simple n’existe pas, c’est qu’en fait la chose… n’est pas simple.

Tout simplement… c’est pas simple. Du moins, ça n’est pas simple tant qu’on n’a pas encore compris, non pas seulement la chose en elle-même, mais des tonnes de savoirs indispensables en amont pour avoir ne serait-ce que l’espoir d’y arriver. C’est une des difficultés de l’informatique: si le seul moyen de comprendre un tutoriel, c’est de savoir déjà à peu près tout ce qu’il est censé vous expliquer… ben c’est raté, et tous les tutoriels que j’ai cherché à comprendre sur la question étaient ratés. Je crains fort que si j’en concocte un moi-même ça ne soit pas mieux.

Je vais quand même essayer de concocter quelque chose, mais Dieu seul sait combien de mois ça pourrait me prendre.

Ça sert à quoi, une moulinette?

Un collègue m’ayant récemment demandé de lui expliquer ce que j’appelle une moulinette informatique et d’en indiquer quelques exemples, ça m’a inspiré ce qui suit:

En deux mots

Idée fondamentale: vous avez des données informatiques sous une forme, vous voulez les présenter sous une tout autre forme. La moulinette qui va vous permettre de le faire est donc, par définition, la réponse à un besoin très précis que vous êtes seul à connaître et pouvoir expliquer… mais voici quelques exemples qui pourraient vous inspirer.

Bases de données

  • vous avez racheté une base de données de prospects et vous voulez l’intégrer dans votre propre base de données, mais les structures sont complètement différentes et en plus il faut repérer et éliminer les doublons;
  • vous avez besoin d’établir des statistiques pertinentes sur deux cents lignes perdues au milieu d’un inventaire exhaustif de quarante mille éléments (par exemple, toutes les factures concernant un certain produit, émises un samedi entre telle date et telle autre et dépassant un certain seuil, au milieu de la liste de toutes les factures de l’année écoulée);

Feuilles de calcul

  • vous retravaillez un beau tableau Excel avec les données des années 2015, 2016 et 2017 classées en ordre décroissant; vous voulez en virer les données de l’année 2015, garder celles de 2016 et 2017, et ajouter celles de 2018 — que vous avez sauvegardées dans une autre feuille Excel où elles sont classées cette fois en ordre alphabétique et où les calculs de pourcentage ont été effectués avec trois chiffres après la virgule alors que vous n’avez de place que pour un;
  • vous perdez un temps fou à retrouver le numéro de téléphone d’un client précis dans un énorme classeur Excel multi-feuilles contenant toutes les données concernant tous vos clients — une moulinette peut retrouver ce numéro de téléphone, préparer un SMS de relance personnalisée, et l’expédier directement via Internet sans que vous ayez même besoin d’empoigner votre téléphone;

Mise au propre de mauvais brouillons

  • vous devez faire la synthèse des réponses à des questionnaires comportant trente questions numérotées, recueillis dans toute la France par cinquante enquêteurs insuffisamment briefés et en outre peu consciencieux, et ayant chacun interviewé une trentaine de personnes; certains ont noté leurs résultats avec des chiffres, d’autres avec des séries d’étoiles (du genre ***), certains dans des fichiers Word, d’autres dans des fichiers Excel;
  • vous devez fusionner deux listes de produits, avec des prix hors taxes et toutes taxes, préparées par deux personnes différentes dans deux fichiers Excel n’ayant pas la même structure: le premier a mis la colonne hors taxe avant la colonne toutes taxes, le deuxième a bien évidemment fait le contraire; en plus, il y a des doublons: certaines données sont présentes dans les deux listes, d’autres non;

Edition, mise en page

  • vous voulez transformer une base de données austère (avec des caractères informatiques moches simplement rangés en lignes et en colonnes) en un catalogue imprimé avec du gras, de la couleur, des étoiles et des points de suite, et vous voulez y arriver sans y passer une demi-journée à préparer ça avec une souris sous InDesign;
  • vous avez une notice multilingue décrivant une suite de cinquante opérations en cinq langues: vous voudriez que chaque opération soit décrite à la file dans les cinq langues… ou le contraire: vous voulez faire cinq notices monolingues;
  • vous avez cinquante fichiers de texte comportant chacun un résumé dans l’en-tête, vous voulez publier une compilation de ces résumés;
  • ou le contraire: vous avez une compilation de résumés concernant cinquante textes, vous voulez ajouter chaque résumé en tête de chaque texte;
  • vous devez réaliser une compilation d’archives; les vieux textes (et surtout leurs caractères accentués) ont été stockés en ISO avec des ruptures de ligne tous les 65 caractères environ, des apostrophes droites, des guillemets droits et pas d’espaces insécables — tandis que les textes récents (et surtout leurs caractères accentués) ont été stockés en UTF-8, par paragraphes entiers mais avec des balises de cotation au milieu, ainsi que d’innombrables autorisations de coupure dont vous n’avez que faire sur le web, et d’autant moins que ça peut perturber les moteurs de recherche;
  • vous cherchez à récupérer dans une thèse de cinq cents pages toutes les notes de bas de page bavardes pour les placer en fin d’ouvrage dans une typographie nettement plus petite;
  • vous cherchez à transformer en histogramme réparti au bas de douze pages une chronologie de personnages illustres — disponible sous forme de longs inventaires rubriqués ne comportant que des noms et des dates, mais classés en cinq rubriques dont vous n’avez que faire mais qui entraîneront inévitablement la présence de doublons si vous opérez la compilation sans discernement;

Vidéo, animation 3D

  • vous voulez reprendre dans votre logiciel 3D propriétaire et coûteux une bibliothèque de maillages 3D enregistrés dans un format incompatible (par exemple, des fichiers libres de droits mais tous prévus pour le logiciel libre Blender, voire des navigateurs VRML totalement tombés en désuétude);
  • vous voulez intégrer dans Blender, en 3D et avec une épaisseur, plusieurs bibliothèques de pictogrammes disponibles tantôt en SVG, tantôt en PDF, et parfois même disponibles seulement en bitmap haute résolution;
  • vous avez filmé une vidéo au format 4/3 et à la cadence de 25 images/seconde, vous avez besoin de l’adapter pour l’intégrer dans un documentaire monté au format 16/9 à 30 images/seconde; en outre la bande sonore de la vidéo a été échantillonnée à 44100 Hz, alors que pour votre documentaire, 48000 Hz est désormais la référence;
  • vous travaillez sur une animation vidéo, vous devez transformer les quinze positions intermédiaires prédéteminées d’un objet en déplacement… en cinquante secondes d’animation — soit 50 secondes x 30 images/seconde = 1500 images à paramétrer, de façon à réaliser une transition bien lissée; et quand vous avez fini, vous vous rendez compte que ce serait encore beaucoup mieux en se limitant à 45 secondes;

Sites web dynamiques

  • vous devez périodiquement mettre à jour votre catalogue de cinq cents articles pourvus chacun d’un prix en euros, pas seulement sur le site principal en français, mais aussi sur la section de votre site destinée aux clients étrangers ne comprenant que les livres sterling ou les francs suisses, et avec en plus un ordre alphabétique correspondant aux traductions en langues étrangères de toute votre nomenclature… et vous ne voulez évidemment pas avoir à remettre en place à la main chacune des cinq cents vignettes représentant chaque produit;
  • vous devez reprendre tous les textes de l’édition papier d’un magazine, mais le balisage typographique destiné aux seuls yeux des lecteurs va devoir être adapté et transformé en balisage logique permettant aux moteurs de recherche de mieux indexer votre site;

Et cetera…