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é…