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…

M. de Latude s’attaque à Android

Latude s'attaque à Android

Une grand-mère de ma connaissance (nous assistons aux mêmes cours d’espéranto) s’est fait offrir par un parent ou un ami une tablette Android (de marque Huawei ; ce n’est pas du haut de gamme, mais ça ne me fait pas non plus du tout l’effet d’être de la camelote). Je suppose que, comme les compétences informatiques de l’abuelita sont à peu près égales à zéro, elle a dû demander à quelqu’un (hélas, pas à moi) de la lui configurer – ce qui implique la création d’un compte Gmail muni d’un mot de passe, et accessoirement le verrouillage de la tablette elle-même par un autre mot de passe. Je soupçonne l’inconnu qui a mis la chose en place d’avoir omis de signaler à la grand-mère l’importance de ces paramètres, pour tout dire je soupçonne aussi la grand-mère d’avoir paumé le papelard où on les lui avait fait noter… Mais en tout état de cause, la tablette était bloquée par ses mots de passe (« To continue, sign in with a Google Account that was previously synced on this device ») et il fallait trouver un moyen de l’utiliser quand même.

Il n’y a pas si longtemps, on s’en serait sorti en effectuant ce qu’on appelle un « reset d’usine » (factory reset) : la configuration initiale de l’engin est sauvegardée quelque part dans sa mémoire de stockage interne (on ne peut pas dire « le disque dur », puisque c’est de la mémoire flash, mais c’est la même idée), en théorie il n’y a donc plus qu’à effacer tout le reste et on retrouve une machine dans l’état où elle était lors de sa sortie d’usine… donc sans mots de passe.

Enfin, c’est comme ça que ça devrait se passer dans un monde d’honnêtes gens… hélas, dans la vallée de larmes où nous habitons, les génies du marketing ont obtenu des techniciens qu’ils se débrouillent pour qu’une tablette ainsi réinitialisée reste protégée par le mot de passe du compte Gmail qu’on lui a associé – histoire d’embêter les vilains voleurs de tablette. C’est pour votre bien, braves gens : n’en doutez pas, les méchants qui vous volent votre tablette seront pris de remords et vous la restitueront en bon état dès l’instant où ils se rendront compte qu’ils ne peuvent rien en faire. Le sarcasme est facile, mais bon, on constate une fois de plus, comme c’est très souvent le cas avec les sécurités informatiques, qu’elles ne gênent en fait guère les voleurs (qui apprennent très vite à les contourner ; on va voir ci-dessous que ça n’est pas du tout impossible), mais qu’en revanche elles sont totalement bloquantes pour les honnêtes grands-mères… et extrêmement casse-pieds pour le sympathique espérantiste qu’elles supplieront de régler le problème à leur place.

En argot informatique, un tel contournement d’une sécurité est appelé un « jailbreak », ce qu’on traduit généralement par « évasion » ; mais le terme anglais est beaucoup plus fort : c’est qu’il ne s’agit pas de filer discrètement en escaladant un mur, mais bien d’entamer des travaux de grande ampleur pouvant impliquer de péter le mur à la pioche voire à la dynamite.

Or donc, moi qui ne suis pas tricheur pour deux sous, j’ai réalisé ce jailbreak. Ça m’a donné un mal de chien, pris largement plus d’une journée et fait maudire la pauvre grand-mère espérantiste une bonne quinzaine de fois (sans préjudice des crétins du marketing d’Android et de Huawei). J’en ai tellement bavé que je tiens à en garder une trace, d’autant que j’ai été vivement frappé de la similitude entre les opérations que j’ai dû accomplir et les techniques d’évasion décrites par exemple dans les mémoires de M. de Latude ou la série britannique sur les prisonniers de la forteresse de Colditz. Tout ça paraîtra sans doute enfantin à des tricheurs professionnels, mais pour une honnête personne comme moi, c’est carrément nouveau et incongru.

La toute première chose à faire, c’est de sortir de sa cellule hyper-surveillée ; on prétend qu’on est malade, et on se fait envoyer à l’infirmerie, où les gardiens sont moins nombreux et moins vigilants et où l’on est un peu plus libre de ses mouvements. Traduction sur Android : il faut poser deux doigts sur l’écran assez longtemps pour que le système se dise « m’a pas l’air bien dégourdi, celui-là, je vais lui proposer de reconfigurer sa tablette pour qu’elle soit accessible aux persons with disabilities » (astuce : ça n’est pas possible dans n’importe quel contexte, mais ça marche très bien quand on demande à lire les conditions générales… ce que pour des raisons juridiques le fabricant doit toujours prévoir, mais qui en pratique est demandé tellement rarement que sa vigilance vis-à-vis des risques de piratage n’est pas irréprochable en la matière). Cela donne accès à des tas de choses passionnantes comme la possibilité de grossir les polices d’affichage, de substituer au pointage sur l’écran des déplacements dans des menus à l’aide des deux boutons normalement réservés au réglage du niveau sonore, ou encore ça peut permettre aux mal-voyants de se faire expliquer toutes les situations où ils pourraient s’être fourvoyés grâce à un commentaire audio (anglophone) lu à haute et intelligible voix par le haut-parleur de la tablette. Rien, a priori, qui mène vers la sortie.

Seulement, maintenant que vous avez été envoyé à l’infirmerie, il vous est beaucoup plus facile d’accéder à une gaine d’aération mal surveillée dont vous pouvez défaire la grille de protection avec un simple tournevis. Bien sûr, vous n’avez pas de tournevis, il va falloir qu’un complice vous en lance un par-dessus les murs de la cour de promenade, à un moment judicieusement choisi, par exemple pendant les quelques dizaines de secondes d’une coupure de courant déclenchée par un autre complice, de façon que les gardiens des miradors ne puissent braquer leurs projecteurs.

Traduction en termes informatiques : la gaine d’aération mal surveillée, ce sont les tutoriels destinés aux persons with disabilities ; la coupure du courant, c’est une interruption de l’accès à Internet par wi-fi (pas bien malin : de même qu’on avait permis à la tablette d’accéder à Internet en transformant son téléphone mobile en « hotspot wi-fi »… il suffit de couper brièvement cette fonction sur le téléphone mobile, et les dispositifs de sécurité de la tablette penseront qu’ils n’ont plus à craindre d’intrusion depuis le réseau) ; quant au tournevis, c’est une toute petite application Android programmée par un Pakistanais anonyme – que vous avez fini par récupérer sur Internet après avoir cherché de la documentation pendant des heures à grands coups de Google, puis recopiée sur une clé USB à laquelle la tablette pourra accéder grâce à un petit connecteur-adaptateur plus ou moins standard mais en tout cas pas courant, de marque Belkin, acheté à prix d’or chez Darty (par chance, j’en disposais déjà) – lequel connecteur il faudra mettre en place à un moment judicieusement choisi pour que ça ne déclenche pas les blocages normalement automatiques durant cette phase où on vous soupçonne d’être un pirate.

Or donc, vous êtes à l’infirmerie, c’est-à-dire que vous avez accès aux commandes réservées aux persons with disabilities. L’astuce est maintenant de faire couper le téléphone (en fait, le wi-fi, donc l’accès à Internet) juste au moment où vous demandez un renseignement au petit personnel de l’infirmerie (en fait, vous demandez l’accès au tutoriel pour les persons with disabilities). Le premier réflexe du petit personnel est de décrocher le téléphone (dans le cas qui nous occupe : de chercher le tutoriel sur Internet), mais comme le téléphone est coupé (en fait, c’est le wi-fi qui l’est), le petit personnel se dit : « Bah, ça n’est pas grave, je vais me contenter de trouver l’information dans le dictionnaire Vidal de la bibliothèque » (c’est-à-dire : le tutoriel anglophone stocké dans la mémoire de stockage interne, plutôt que les tutoriels multilingues auxquels on aurait normalement accès via Internet).

Or, dans la bibliothèque, il y a un téléphone non surveillé… ce que le petit personnel ne juge pas bien grave, puisque justement le téléphone est coupé. C’est-à-dire que dans le tutoriel anglophone, il y a un lien vers une petite vidéo explicative à la fin de laquelle, comme à la fin de tout ce qui est diffusé sur YouTube, il y a possibilité de signaler par courriel à un ami ce qu’on vient de voir… ce que la sécurité d’Android ne juge pas bien grave, puisque en théorie l’accès à Internet est coupé. Sauf qu’entre-temps votre complice peut parfaitement avoir rétabli le téléphone, et vous l’accès au hot-spot wi-fi.

Donc, dans un véritable établissement pénitenciaire, vous utiliseriez le téléphone pour appeler qui vous voudriez… et de façon similaire vous prétendez vouloir partager par courriel la jolie vidéo didactique (dont, bien entendu, vous vous contrefoutez). Comme la tablette est à peu près neuve, aucun compte de webmail ne lui est vraiment associé, et Android vous offre donc par réflexe la possibilité de profiter de l’occasion pour signaler l’existence de votre compte Gmail ou même Hotmail. C’est cette deuxième possibilité qu’il faut choisir : Gmail connaît Android et se rendrait peut-être compte que vous cherchez à l’arnaquer, tandis que Hotmail, qui appartient à Microsoft, se contrefout de la sécurité d’Android… et en plus l’extrême nullité de Microsoft pour tout ce qui est en rapport avec la sécurité est de notoriété planétaire.

Or donc, depuis le compte Hotmail qu’a gentiment ouvert pour vous votre complice extérieur (traduction : que vous avez configuré, non pas à partir de la tablette, mais à partir de votre ordinateur de bureau), vous pouvez envoyer un message… et surtout vous pouvez lui adjoindre une pièce jointe ; laquelle pièce jointe sera… la petite application pakistanaise accessible depuis la clé USB que justement vous venez de connecter entre-temps grâce au dispositif dispendieux acheté chez Darty. Vous envoyez le message avec sa pièce jointe à qui vous voulez (par exemple à vous-même, mais en réalité ça n’a aucune importance, puisque votre messagerie vous donne accès à tout message envoyé, peu importe qui est censé l’avoir reçu). Comme Gmail, lui, est interfacé avec Android avec beaucoup de soin, son réflexe juste après l’envoi du message serait probablement de vous renvoyer immédiatement au tutoriel que vous étiez en train de consulter ; mais Hotmail, qui a été programmé par des branques ne connaissant rien à Android, vous donne la possibilité de faire tout autre chose avant que vous preniez explicitement la décision de revenir au tutoriel. Vous pouvez donc en profiter pour aller consulter les messages envoyés, puis la pièce jointe associée au courriel plus ou moins fictif expédié à l’instant. Cette pièce jointe, c’est le programme pakistanais. Hotmail s’aperçoit qu’il s’agit d’une petite application Android, et comme Hotmail a été conçu par les génies de Microsoft, il cherche à se montrer aussi serviable qu’il est nul en sécurité : il vous signale donc que vous pouvez installer ce programme, là maintenant tout de suite, si ça vous chante. Eh bien, oui, justement, cette idée vous paraît tout à coup tentante car, voyez comme le hasard fait bien les choses, la fonction de ce programme est justement de contourner la sécurité d’Android !

En fait, le petit programme ne fait presque rien lui-même… mais il vous permet d’entrer dans les paramètres de configuration d’Android, où se trouvent deux tonnes de réglages aussi sympathiques qu’inutiles, mais aussi… l’option de restauration des paramètres d’usine. Certes, vous avez déjà au préalable rétabli ces paramètres (c’est même la toute première chose que vous avez faite pour tenter de dépanner la grand-mère espérantiste) et constaté alors avec dépit que ça n’effaçait pas la synchronisation avec un compte Google… mais cette fois-ci vous n’êtes plus dans le contexte où Android vous considérait comme un possible pirate cherchant à s’emparer d’une tablette volée : à ce stade du récit, vous êtes censé être un utilisateur légitime de la tablette, et donc vous avez le droit d’effacer tout tout tout… y compris, alléluia, le nom du compte Google associé.

Et voilà : la tablette redevient donc vraiment comme neuve. On pouvait bel et bien le faire, et une fois qu’on a compris la logique de tout ce qui précède, ce n’est même pas vraiment difficile ; un voleur de tablettes doit pouvoir faire ça quinze fois par jour sans se fatiguer. Pour moi qui n’y connaissais rien, ça a quand même pris largement plus d’une journée de travail, et ça méritait donc bien que je note tout ça avant de l’avoir complètement oublié…

Les deux moteurs de rendu de Blender

J’ai failli titrer cet article: « Les deux moteurs de rendu de Blender: Dumb & Dumber »… C’était l’idée, mais c’était quand même sévère… et par ailleurs un peu trop lourd en typographie.

Un collègue a récemment attiré mon attention sur le moteur de rendu Cycles qui est désormais intégré à Blender, et dont la principale vertu est de produire des images davantage photoréalistes. Je m’y suis tout de suite intéressé parce que le moteur de rendu standard de Blender mène pas vraiment rarement à des aberrations visuelles que je trouve inexcusables. Alléluia, ces aberrations disparaissent avec Cycles… mais misère, palsambleu et putréfaction, le moteur Cycles a lui aussi des défauts très notables…

Blender continue de me laisser assez largement sceptique, mais peut-être est-ce que je m’en sers mal? C’est en tout cas la réponse que les enthousiastes de Blender ont une tendance prononcée à toujours opposer à mes critiques. J’ai donc concocté cette vidéo pour pouvoir au moins étayer mes griefs quand je parle avec eux. Comme vous le verrez, le diable est dans les détails.

Voler en hélico avec POV-Ray

Un amateur de 3D isolé comme moi ne peut pas raisonnablement espérer rivaliser avec un studio d’animation d’une cinquantaine de personnes, mais des animations spectaculaires d’un type bien particulier sont quand même à sa portée. L’idée est simple: sur la base d’une vaste scène riche en détails où rien ne bouge, on représente le parcours d’une caméra extrêmement mobile et susceptible de moduler sa vitesse dans des proportions considérables; capable de lambiner comme un piéton à proximité d’un objet, et aussi de foncer à la vitesse d’un avion à réaction sur une vue générale.

J’ai commencé à travailler sur une animation de ce type, dont je vous présente ici le brouillon. Oh, je suis bien conscient que sa qualité technique n’a rien pour déclencher votre enthousiasme… alors, perdu pour perdu, je vais carrément vous inonder de chiffres pour que ce soit encore plus rébarbatif! (accessoirement, cette logorrhée numérique pourra ultérieurement me servir de référence)

Les images que vous pouvez voir ci-dessus ont été calculées avec une résolution de 320 x 240 pixels et à la cadence de 15 vues par seconde. En d’autres termes, c’est très médiocre (hyper-pixelisé et saccadé) comme vous n’aurez pas manqué de vous en faire la réflexion. Un standard actuel serait de 1024 x 768 pixels à 30 images par seconde, mais cela demanderait… vingt fois plus de puissance de calcul. Or, même dans son état rudimentaire, cette vidéo dure environ trois minutes, soit, à 15 images par seconde, environ 2700 images, et même dans une définition aussi basse, chacune requiert déjà une dizaine de secondes de calculs (avec POV-Ray). C’est qu’avec son relief texturé, ses six bâtiments (dont un très complexe et détaillé) et les quelques autres fariboles qui l’agrémentent, cette scène comporte quand même quelque 50.000 triangles (correspondant d’ailleurs à plusieurs semaines de modélisation, mais c’est une autre histoire). Pour produire la même chose dans un standard de qualité contemporain, il faudrait que mon ordinateur tourne vingt fois plus longtemps que les sept heures de calcul que m’a demandées ce brouillon… donc ma machine serait monopolisée pendant plusieurs semaines. Je ne dis pas que je n’envisagerai jamais un tel investissement en temps… mais alors il faudra que le projet en vaille davantage la peine.

C’est égal, je ne suis pas mécontent du résultat, que je trouve franchement prometteur. Le principe général est le suivant: on met en place « manuellement » une série de caméras représentant des positions intermédiaires (au départ, je l’ai fait avec un petit utilitaire à moi — une moulinette –, mais j’ai ensuite affiné avec Blender), dont on note soigneusement les caractéristiques: coordonnées x, y, z, azimut, site (angle par rapport à l’horizontale) et éventuellement focale. Le nombre de ces « caméras de passage » est indifférent, mais pour mes 2700 images finales j’ai quand même dû en définir une quarantaine (et dans l’idéal, je devrais encore en ajouter une bonne douzaine). L’inventaire de ces données constitue un fichier de texte banal (sauf, bien sûr, que je m’astreins à respecter une certaine syntaxe, mais elle n’a rien de complexe), lequel sera bien sûr lu et exploité ultérieurement par une moulinette. En plus des coordonnées déjà relevées, j’y ajoute manuellement (et entièrement au pifomètre! mais c’est facile à retravailler) des indications de vitesse de déplacement (jusqu’à 300 km/h pour les vues générales, parfois pas plus de 2 km/h lorsque l’on est proche d’un objet).

Et tout cela étant fait, j’applique là-dessus mes super-pouvoirs de spécialiste des moulinettes: cette liste d’une cinquantaine de caméras seulement est démultipliée en un tournemain (par une technique d’interpolation par courbes de Bézier définies dans l’espace-temps, laquelle je me flatte d’avoir conçue à partir de rien et programmée de A à Z), et elle devient une liste exactement du même type (un autre fichier de texte avec la même syntaxe) mais contenant cette fois autant de positions intermédiaires qu’il y aura d’images produites au final (plusieurs milliers, donc). Il n’y a plus qu’à exploiter cette nouvelle liste avec une nouvelle moulinette (en fait, une série de moulinettes) pour obliger POV-Ray à la transformer en une série d’images, et hop, c’est parti pour plusieurs heures de calcul automatisé.

Enfin, tout à fait en aval, les images produites sont transformées en animation (d’abord au format AVI, puis MP4) par plusieurs logiciels libres (le couple mplayer-mencoder, plus un peu de fignolage avec Kdenlive pour l’ajout d’une bande-son et la compression en MP4). Et ça donne… le (très petit) chef-d’oeuvre que vous pouvez voir ci-dessus. Tout ça avec un ordinateur de bureau de modèle banal.

Dans l’idéal, il faudrait retravailler un peu tout ça pour réduire la durée de quelques transitions ennuyeuses et ajuster la fluidité de certains changements de direction. Il n’empêche que globalement, je suis assez content du résultat. Les mouvements de caméra sont presque toujours parfaitement fluides (quand par exception ils ne le sont pas, c’est dû à de mauvais choix de positions de passage, pas très compliqués à corriger), la caméra va à une vitesse folle quand il le faut, ralentit à mort quand il le faut, et même les passages où l’on se faufile au milieu de petits détails restent parfaitement compréhensibles (vous avez vu la traversée du petit chalet? et la montée de l’escalier? mmm? c’est pas top moumoute, ça?).

C’est pas pour me vanter, mais tout ça, ce n’est vraiment pas à la portée du premier pignouf venu… mais c’est possible pour un clampin tout seul à la seule condition que comme moi il ait appris à se servir d’Unix, de Python, de POV-Ray et de quelques autres logiciels libres moins connus. Le logiciel libre, c’est vraiment pas toujours simple… mais quand on sait s’en servir, pétard, ça dépote.

La résurrection des archives 3D

Alléluia, à force d’écrire des tonnes de moulinettes pour faciliter le traitement des vidéos, je me suis aperçu que je pouvais enfin ressusciter les petites animations 3D que j’ai concoctées de loin en loin depuis une dizaine d’années. Elles ont pourtant été faites avec des caractéristiques à tout le moins désuettes et hétéroclites (à l’époque d’Autodesk Animator, il n’était pas très réaliste d’espérer faire mieux que 320 x 240 pixels à une cadence de 15 images/seconde)… mais je ne suis pas le roi de la moulinette de conversion pour rien et j’ai fini par réussir à faire bouffer tout ça à deux logiciels libres: MEncoder et Kdenlive. D’accord, on a fait mieux depuis. Ca n’empêche pas que quand j’ai fait tout ça, j’étais fier comme un petit banc… et à vrai dire, je le suis resté. Nananère.

A la gloire de POV-Ray et de la trigo

La plupart des groupies de la 3D avec des logiciels libres se focalisent sur Blender et ignorent totalement POV-Ray, et moi, au contraire, je me suis presque tout de suite amusé comme un petit fou avec POV-Ray, alors que j’ai toujours trouvé Blender lourdingue et frustrant. A mon avis, la pierre d’achoppement entre ces deux merveilles informatiques, c’est la trigonométrie. Dès qu’on a compris le minimum minimorum de la trigo — le théorème de Pythagore, le sens des mots radian, sinus, cosinus et tangente, mais vraiment à peu près rien de plus –, eh bien aussitôt on fait presque tout ce qu’on veut avec POV-Ray; et ce qu’on ne sait pas faire tout de suite, on apprendra très vite à le faire parce que c’est amusant et que ça fait grésiller les neurones d’une façon vraiment très stimulante. En revanche, si on a décidé une bonne fois pour toutes qu’on était fâché à mort avec la trigo parce qu’elle fait mal à la tête, eh bien c’est râpé pour POV-Ray et il faut donc se rabattre sur les interminables manipulations avec les yeux et la souris — et c’est vrai que Blender convient assez bien pour ça. Mais pétard, qu’est-ce que c’est pas pratique et chronophage.

La 3D informatisée, avec Blender et sans

C’est qui, le chef, Blender ou moi?

La 3D informatisée est à mon sens un bon hobby pour zèbres, en tout cas c’est le mien depuis un bon paquet d’années et je ne suis pas le seul à le pratiquer. C’est rigolo tout plein, spécialement pour un surdoué, de réussir à transformer en images parfaitement lisibles par n’importe quel crétin des choses qui initialement n’ont existé que dans son cerveau intelligent (oui, ça va les chevilles, merci).

Ces trois superbes chaises, que vous pouvez comprendre même avec vos yeux de mecs qui ne connaissent rien à la 3D, ben elles n’ont d’abord existé que dans mon cerveau rien qu’à moi, et j’ai quand même le pouvoir de vous les faire voir. Nananère.

De nos jours, le surdoué moyen (et fauché) qui s’intéresse à la 3D a de fortes chances de s’essayer à devenir un groupie de Blender, le logiciel libre (et gratuit, même si ça ne veut pas dire la même chose) qui depuis plus d’une quinzaine d’années est censé faire tout et le reste dans le domaine de la 3D et de l’image de synthèse. De fait, le bazar est doté de possibilités impressionnantes en matière de modelage, de rendu et même d’animation; d’ailleurs YouTube est plein de courts métrages d’animation réalisés avec Blender, parfois par de vraies armées de techniciens du cinéma, le plus souvent par des équipes d’étudiants de l’enseignement supérieur, et parfois même par de simples clampins très intelligents et persévérants (non, je ne parle pas vraiment de moi: je n’ai rien produit de très convaincant, et le peu que j’ai produit, je l’ai fait avec d’autres logiciels).

L’écran de Blender tel que je le configure à ma sauce, genre « simple is beautiful », avec quelques vues de détail. Ceux qui « maîtrisent l’outil » sont susceptibles de choisir des configurations encore cinq fois plus complexes; ça vous donne une idée.

Avec Blender, ou tu as un très bon cerveau de surdoué, ou tu peux aller te rhabiller: le bazar est largement aussi complexe et emberlificoté qu’il est riche, et si son ergonomie n’est pas absurde, elle n’a absolument rien du tout d’intuitif, mais alors vraiment rien du tout et à un point consternant.

Blender, il faut très très longuement apprendre à s’en servir… ou le laisser tomber, ce que font 100 % des gens normaux et 95 % des surdoués qui s’y essaient. « Ca a l’air super mais j’y comprends rien » est de loin le commentaire le plus couramment émis par ceux qui ont essayé de s’y frotter.

Du coup, alors que les groupies du logiciel libre (je ne critique pas, j’en suis un) le présentent comme la huitième merveille du monde du septième art (surtout quand ils ne l’ont jamais manipulé d’ailleurs)… eh bien c’est un logiciel qui engendre nettement plus de déception que d’enthousiasme chez la plupart de ceux qui s’y frottent vraiment, fussent-ils surdoués. Je dis ça en pensant à moi mais je ne suis vraiment pas le seul. Il y a plus de dix ans que je manipule occasionnellement le bazar, je suis certes parvenu à faire pas mal de choses avec mais ça a toujours été à la marge de projets que pour l’essentiel je gérais avec d’autres outils informatiques que — moi au moins — je comprends nettement mieux et trouve plus faciles d’emploi…

Il se trouve que j’avais déjà beaucoup réfléchi à la 3D avant de me frotter à Blender, déjà fait pas mal de trucs pas si simples que ça (de la maquette d’architecture, en particulier), et que donc la toute première chose que j’ai demandée à Blender, ça a été de m’aider à reprendre et enrichir ce que j’avais déjà fait, de m’aider à retrouver des méthodes de travail équivalentes à celles que j’avais déjà eu du mal à mettre au point. Or, à peu près rien n’était prévu pour ça, et comme dit Beaumarchais, « sait-on gré du superflu à qui vous prive du nécessaire? »

L’une des choses les plus jolies que j’aie produites à ce jour en faisant mumuse avec mon Lego informatique: une maquette de la cathédrale de Cochabamba (Bolivie), à côté d’une photo de la vraie cathédrale. Montrez-moi que vous avez fait quelque chose d’une complexité comparable avant de m’expliquer que je n’y connais rien et que je m’y prends comme un manche…

J’attendais de Blender qu’il vienne seconder ce que mon cerveau savait déjà faire, et j’ai toujours eu au contraire l’impression très nette qu’avec Blender mon cerveau ne pouvait que seconder les développeurs de Blender dans ce qu’ils avaient décidé que je devais faire — sans jamais me demander mon avis.

Sont peut-être très intelligents, ces gens, mais je ne suis pas complètement couillon non plus et en tout cas je suis un homme libre, donc ce sont mes projets qui m’intéressent et pas ceux des développeurs de Blender, fussent-ils cinq fois plus intelligents que moi.

Nous avons en tout cas, eux et moi, une vraie et énorme différence de philosophie informatique: pour moi, un ordinateur, ça sert à exécuter des traitements automatisés qu’on définit soi-même, par exemple pour définir des motifs d’architecture; les outils graphiques qu’on manipule à la souris ne servent qu’à seconder ou enrichir à la marge le travail de conception de ces automatismes, qui sont le véritable exercice intellectuel enrichissant.

Pour les concepteurs de Blender, c’est tout le contraire: l’ordinateur sert à faciliter le travail manuel opéré avec les yeux et la main qui tient la souris, et la possibilité de définir des automatismes vient seulement seconder et enrichir à la marge le travail de conception graphique, sur lequel doivent porter l’essentiel des efforts.

Je ne dis pas que c’est là une philosophie absurde, mais ce n’est pas la mienne. Les concepteurs de Blender veulent qu’on travaille essentiellement avec les yeux et la souris, et que les branlettes informatiques pour l’automatisation n’interviennent qu’à la marge — et si elles pouvaient être totalement éliminées ce serait encore nettement mieux. Moi, c’est tout le contraire: ce qui m’éclate, ce sont les gamberges informatiques menant à des résultats abondants, hyper-minutieux et impeccables, tandis que les manipulations avec mes mimines malhabiles et mes yeux myopes de daltonien, ça ne peut intervenir qu’à la marge — et si ça pouvait carrément être éliminé j’aimerais encore mieux.

Je suis un surdoué, quoi, merde! Je me suis fait chier pendant des années à apprendre à écrire du code informatique, ce n’est pas pour me remettre à tout faire à la mimine en tirant la langue comme un gosse à la maternelle.

Des mondes 3D tout petits petits

Les possibilités qui font saliver le groupie de Blender moyen sont souvent des choses dont je me contrefous — même si j’admets qu’elles sont impressionnantes: les drapés, les liquides poisseux qui gouttent, les formes organiques couvertes de jolis poils soyeux. Tout ça, c’est très bien, mais ce n’est pas du tout ce que je veux faire. Moi, je fantasme plutôt sur des images d’architecture et d’urbanisme: par exemple, je voudrais représenter tous les immeubles de la perspective Nevski sur plusieurs kilomètres, et me balader là-dedans.

Image de démonstration des capacités de Blender, produite par Andrew Price, dit « Blender Guru » sur YouTube.

Pour le groupie de Blender, la 3D c’est d’abord le réalisme photographique. Pour moi, c’est d’abord la perspective, l’espace dans lequel on peut se déplacer à la vitesse de la pensée… la maquette traditionnelle, quoi, avec des petites maisons, des petits arbres, des petites bagnoles et des petits personnages, et autour de laquelle on tourne en la regardant sous tous les angles.

Un groupie de Blender est capable de consacrer plusieurs jours de travail à une scène de trois mètres de large représentant une bouteille de grenadine renversée sur une couverture en mohair ondulé et des draps de soie froissés, le tout à la lumière orangée d’un soleil couchant tropical se reflétant sur une mer tumultueuse. Bon, ben on a le droit d’aimer ça, mais moi j’en ai vraiment rien à battre. En revanche, j’aimerais bien représenter la bouteille de grenadine au premier plan sur une table de café, avec en arrière-plan la terrasse du café, la place principale de la ville avec des bagnoles garées tout autour, et encore plus loin des immeubles de six ou sept étages.

Ca ne me paraît pas particulièrement délirant comme ambition… mais Blender ne le permet pas vraiment, car il n’a pas été conçu pour gérer des objets de dimensions trop disproportionnées. On pourrait avec lui réussir à produire l’image en perspective que je fantasme, mais en trichant comme pour réaliser un décor de théâtre, c’est-à-dire en réduisant les proportions de ce qui est censé être placé à l’arrière-plan. En sorte que, comme au théâtre, ça ne peut faire illusion que si le spectateur reste bien sagement le cul sur son fauteuil ou en tout cas bouge très peu — car dès qu’il se déplace latéralement ne fût-ce que de quelques mètres il se rend compte que l’arrière-plan censé se trouver à Pétaouchnok est seulement un modèle réduit placé un peu en retrait.

Tentative (vaine) pour représenter sur la même scène avec Blender des objets pas plus disproportionnés que des meubles et des immeubles: au-delà d’une certaine distance pas très considérable, des objets pourtant très massifs ne sont carrément plus affichés.

Dans la vraie vie, avec la perspective et la profondeur de champ, même le plus couillon des photographes est capable de prendre une photo d’un chaton de moins de 30 cm de large et occupant quand même la moitié d’une image sur laquelle on distingue en arrière-plan le Mont-Blanc 4807 m. Eh bien, pour faire ça avec Blender, il faudra comme au théâtre placer un Mont-Blanc tout petit rikiki beaucoup moins loin, sur l’arrière-scène. Sur une image fixe, ça fait le même effet et c’est tout ce qui compte dans la philosophie de Blender. Mais pour moi qui aime me balader à toute vitesse dans des scènes virtuelles immenses, c’est terriblement frustrant.

Un petit chaton et une perspective ouverte sur des formes complexes, amples et d’une grâce infinie (photo de David Olkarny, utilisée sans autorisation mais merci quand même).

Je m’en tape du réalisme, je veux de la perspective

Un truc que j’aime beaucoup faire: poser des objets de tailles disparates sur un fond de carte, tout représenter à l’échelle de la carte, et laisser la perspective faire son effet magique (au besoin avec le secours de mon imagination de grand gosse). C’est très facile à faire avec Povray, y compris sur des scènes de plusieurs kilomètres de large; et hélas, c’est complètement ingérable avec Blender.

Pourquoi est-ce que je vous raconte tout ça? Je ne sais pas trop… Peut-être pour entamer une série à épisodes consacrée à la maquette en 3D, peut-être simplement pour décharger ma bile sur Blender avec qui j’entretiens des relations d’amour-haine… M’enfin je ne suis peut-être pas absolument le seul à m’intéresser à ce sujet et, comme diraient Dutronc-Lanzmann, « si vous êtes comme ça, téléphonez-moi »…

Le dixième de seconde, seuil fatidique pour les bandes sonores

En dépit de tout le soin que je prends, il m’arrive encore de constater des problèmes de synchronisation avec les vidéos où j’effectue des coupes et des montages. A la louche, j’ai le sentiment qu’un problème de synchronisation peut être constaté dès que le décalage entre le son et l’image atteint un dixième de seconde, ce qui est vraiment très peu.

Pour donner un exemple concret et réel, si un montage met bout à bout sans les retravailler des séquences tournées à 29.97 et à 30 images/seconde en unifiant tout à l’une de ces deux valeurs (il s’agit de deux cadences hélas réellement employées, et de façon très courante, dans le monde de la vidéo informatisée; ça s’explique par des raisons historiques que je ne vais pas développer ici), alors le décalage avec le son deviendra insupportable 100 secondes seulement après l’apparition de la cadence erronée, c’est-à-dire au bout de seulement 1 min 40 sec de diffusion; vous imaginez l’effet désastreux sur une vidéo de vingt minutes — et j’ai déjà vu ça dans le petit monde du logiciel libre, quand des libristes intégristes tiennent absolument à diffuser leurs vidéos au format Ogg Theora: il n’est alors pas rare du tout qu’au bout de cinq minutes de vidéo le commentaire n’ait plus aucun rapport avec l’image; et personnellement, ça me rend fou.

Dans le cas des vidéos que je prends avec ma tablette Lenovo de bas de gamme, la cadence de 30 images/seconde est remplacée par une cadence bâtarde de 29.7 images/seconde (à peu près, j’ai déterminé ça empiriquement et je ne tombe jamais exactement sur la même valeur); ne me demandez pas pourquoi, j’ignore la raison de cette bizarrerie; soit c’est en rapport avec la vitesse du processeur, soit c’est une limitation volontaire imposée par le fabricant pour justifier des écarts de prix avec des modèles de haut de gamme sortis des mêmes usines (le marketing est très capable d’inventer de telles ignominies).

Bref. Si je diffuse à 30 images/seconde, sans la retravailler, une séquence capturée avec ma tablette à 29.7 images/seconde, le décalage entre le son et l’image va devenir sensible au bout de… seulement une dizaine de secondes.

Cela dit, tant que ce décalage est inférieur ou égal à 1/10e de seconde, on peut le considérer comme supportable: on constate certes qu’il y a un petit problème de synchronisation, mais dans la plupart des cas on est incapable de dire si le son arrive en avance ou en retard; ça irrite un peu mais ça n’exaspère pas, ça déconcentre un peu mais pas au point de rendre le commentaire audio inaudible ou inintéressant: après tout, de tels problèmes sont systématiques sur les films doublés, et on en fait quand même très vite abstraction.

Hélas, le stade où ces imperfections techniques deviennent insupportables existe aussi, il est placé un peu plus haut mais il est quand même très bas: je le crois inférieur à deux dixièmes de seconde: vraiment, ce n’est pas beaucoup. Je pense qu’il est atteint dès que le spectateur anticipe sans jamais se tromper que le son va arriver après ce qu’il voit, ou que l’image va correspondre au son après qu’il aura été entendu; car alors, le caractère absolument systématique et omniprésent du décalage donne un sentiment d’artificialité vraiment trop fort et fait mécaniquement décrocher l’attention.

C’est comme ça! Pas la peine de se lamenter sur le caractère superficiel de l’attention humaine, notre cerveau fonctionne ainsi. Donc, à défaut de parvenir à une synchronisation parfaite, il faut maintenir le caractère décelable du décalage au-dessous du seuil du dixième de seconde où le cerveau est capable d’assurer que le son arrive en avance ou en retard; ou, pour le dire autrement, dès qu’on se rend compte en visionnant la vidéo que le son arrive en avance, il faut retravailler la bande sonore (sous Audacity) pour le retarder de deux dixièmes de seconde; et symétriquement, dès qu’on se rend compte que le son arrive en retard, il faut le faire arriver deux dixièmes de seconde plus tôt, grâce à l’édition de la bande sonore.

Supposons que le son arrive en avance de 0.12 seconde. L’idéal, bien sûr, serait de le retarder exactement de cette durée, mais il est excessivement difficile de la mesurer, et la corriger par tâtonnements serait épuisant voire impossible. Donc, une fois que l’on a acquis la certitude que le son arrive en avance (donc en avance de plus du « seuil de décelabilité », si j’ose dire, lequel seuil vaut presque 0.1 seconde), on retarde l’arrivée du son, arbitrairement, de 0.2 seconde exactement. Calculons: 0.12 – 0.20 = – 0.08, et on aboutit donc à un décalage dont la valeur absolue redevient inférieure au seuil de décelabilité d’un dixième de seconde — de sorte que, même si on remarque encore son existence (hélas), il n’est plus possible d’assurer s’il se produit en avance ou en retard; alors le cerveau oublie ce problème (d’ailleurs totalement inintéressant) et peut à nouveau se concentrer sur le fond.

En l’état actuel de la technique, je ne crois pas possible de faire mieux, et ça devrait être suffisant pour éviter que le spectateur-auditeur « décroche ».