Vers un cinéma algorithmique

Début d’un projet de recherche expérimentale sur le cinéma d’animation abstrait.
7 avril 2018

u cours des douze prochains mois, je serai occupé par un nouveau projet qui me rend très enthousiaste. Grâce au Conseil des Arts et des Lettres du Québec ainsi qu’au Plan culturel numérique du Québec, j’aurai l’opportunité de faire de la recherche portant sur l’art numérique — et plus spécifiquement, sur le cinéma algorithmique, c’est-à-dire un cinéma d’animation expérimental (et le plus souvent abstrait, mais parfois figuratif), réalisé par l’écriture de code informatique qui génère des images et du mouvement.

Comme ce cinéma est peu connu du grand public et pratiqué par un nombre d’artistes assez restreint, j’espère aider à le démystifier par un journal de travail que je tiendrai tout au long de mon projet. J’y partagerai de courtes animations expérimentales ainsi qu’une part du processus créatif ; on y trouvera ainsi un mélange de choses accessibles à tou·te·s et de choses plus pointues et techniques, tel que des morceaux de code informatique et des formules mathématiques. Nous verrons bien à quoi ressemblera ce joyeux agrégat.

Logiciel libre

ne facette importante de ce projet est l’utilisation de licences libres pour tout le matériel que je créerai au courant de l’année. Puisque tout sera distribué avec des licences libres, quiconque aura la possibilité de redistribuer et de modifier mon travail, et ce gratuitement et sans avoir besoin d’obtenir ma permission. Les principales licences utilisées seront la licence Art Libre 1.3, la licence Gnu Gpl 3.0 et la licence Apache 2.0.

De plus, les logiciels et la matière que j’utiliserai pour bâtir mes animations sont également disponibles gratuitement. La matière sera puisée en grande partie dans un petit ensemble de cours offerts en ligne (souvent nommés « mooc », pour massive online open courses, ou « cours en ligne massifs et ouverts »). Voici la liste des cours en question :

Un premier exemple

ommençons tout de suite avec une première expérimentation. Les lettrines que vous voyez dans cet article (les grandes lettres ornées au début de chacune des sections) ont été conçues de façon semi-algorithmique. Les lettres elles-mêmes ont été dessinées à la main dans un programme que j’ai écrit, et les ornementations en forme de racines qui les entourent ont été générées par un algorithme appelé l’agrégation par diffusion limitée. Voici une visualisation de cet algorithme en action :

L’aggrégation par diffusion limitée est relativement simple à expliquer : l’animation ci-dessus est divisée dans une grille. Chaque carreau de la grille peut être soit « éveillé » ou « endormi ». N’importe quelle autre métaphore pourrait être utilisée. On parle souvent de carreaux vivants et de carreaux morts, mais je préfère que mes carreaux s’endorment et s’éveillent. Un carreau éveillé est coloré, un carreau endormi est noir. Entre chaque image de l’animation, des milliers de fourmis invisibles se déplacent aléatoirement sur la grille. Les fourmis ne peuvent se déplacer que sur des carreaux endormis. Lorsqu’une fourmi se retrouve sur un carreau qui est voisin d’un carreau éveillé (ou de plusieurs carreaux éveillés), elle réveille le carreau où elle se trouve, puis disparaît. Ce carreau devient donc coloré. C’est tout !

La chose remarquable à propos de l’aggrégation par diffusion limitée est qu’à partir d’un système aussi simple et basé sur le hasard (la marche des fourmis ne suit aucune autre règle que le hasard), un motif aussi distinctif puisse se former. Le motif ressemble à des racines ou à des branches — il a une certaine qualité fractale, une notion qui sera importante pour mes prochaines expérimentations.

Voici à quoi ressemble l’action de ce même algorithme lorsqu’il est appliqué à une grille dont un seul carreau est initialement éveillé :

J’ajoute au passage que le léger « grain de film » qui est visible dans l’image a été généré par le même programme qui crée le motif animé — il ne s’agit pas d’un filtre After Effects ou d’une autre chose ajoutée par la suite. Le programme a été écrit en JavaScript avec p5.js, Node.js, Socket.io, et le rendu des images a été fait avec Puppeteer (la nouvelle mouture de Headless Chrome) et ffmpeg.

Ce programme peut être lu et téléchargé sur GitHub. Il est distribué librement sous une licence Gnu Gpl 3.0. Cette page Web (incluant le texte et les images, à l’exception du logo du Conseil des Arts et des Lettres du Québec utilisé en bas de page) est distribuée avec une Licence Art Libre 1.3.

Sources

J’ai appris l’existence (et le fonctionnement) de l’agrégation par diffusion limitée dans un tutoriel vidéo réalisé par Daniel Shiffman et présenté sur sa chaîne YouTube The Coding Train.

Remerciements

Je remercie le Gouvernement du Québec pour le soutien financier accordé à ce projet en vertu de la mesure 62 du Plan culturel numérique du Québec administrée par le Conseil des arts et des lettres du Québec.