Objets connectés / Raspberry Pi + Python

workshop de 4 jours donné à imal cet été, du 30 juillet au 2 août



au programme: webserver & pyton, un peu de video processing (évidemment) et un passage rapide dans pygame

bookmarks portrait

GAN-aided creation and blurry authorship

Ganbreeder is a “massively collaborative creative tool and network” developped by Joel Simon. The proposition is to create images by playing with the “genes” of generative adversarial network [1]


The interface is minimal: after creating an account, you are invited to pick and start from an existing “image” or start one from scratch, edit its genes, weight them or mix two existing configurations.

Above, a series of images showing the evolution of a configuration, from left to right. The strange blobfish of the first image is a mixture of these images:

The blobfish image is a child of an image by Mark Grim (see below), that was already containing these genes: assault rifle, bell cote, hard disc & rifle.
The blobfish has different weights and more genes: shield, tank, hay & gyromitra have been added.
The lineage of the image is accessible via the diagram icon next to the image.


The question of “who is the author of the image” is problematic here. First of all, you can not add images of your own to the process, only a predefined set of genes is accessible. These genes are already GAN generated images. The process has been built upon Tensorflow, turned into a webservice thanks to NodeJS & a PostgreSQL database, all being open-sources tools.
Another important aspect of the proposition is that new series can be based on images bred by anybody in the website, without any restriction! This kind of practice is common in developers platforms such as github or gitlab What’s special with Ganbreeder is to apply this way of collaborating to image creation, allowing anybody to fork the work of someone else and deform it. Obviously, the whole site system is available on git under GPL v3 license, closing the loop by ensuring that the tool AND the results are and will stay libre.

When you go to the download interface, a license is attached to the different resolutions:

  • CC BY 4.0 for thumbnails;
  • CC0 for high resolution (1024×1024, small high res);
  • And an unclear “Upscaling included” when printed.

Computer-aided creation

Ganbreeder is also proposing a new approach to collaborative image creation. Via a simple interface controlling a complex process, Joel is merging intimately the highly statistical approach of a computer to the human intuition. As a user, you can not fully grasp the influence of each gene and its weight, and the computer processing the image does not have any consciousness of why it is doing it. Program and human brain are really collaborating to the creation of the images, instead of competing for control or victory. There is no clear goal here, and the way Joel has architecture the breeder is a way to review what we think the work of a creative professional is, or how can it be different with this kind of algorithm to help you.
Garry Kasparov have done something similar 20 years ago. After loosing against Deep Blue in 1997 [2], he conceived a blended approach of computer in chess: instead of confronting human to computer, he built up human-computer team competing with other human-computer teams, humans or computer only.
He called this Advanced Chess or Centaur Chess [3].
As Kasparov, Joel is not trying to beat the computer but imagine a much smarter approach of technique: let’s work together with computer for what they are good at, which is making the human part even more important and visible!


bookmarks portrait

Siteseeing in southbank portrait

Some screenshots of the work of Ian MacLarty, an australian experimental designer[1]. There are superb transitions between the landscapes! (horizontal artefacts are due to my screenshot software)


Bonus: screenshots of Vertex Meadow, a configurator/explorator of generated landscapes.



when pixar opens its code

it ends up with opensubdiv, running on all desktop platforms! SUPER easy to install and to compile!

git clone
cd OpenSubdiv/
mkdri bin
cd bin
cmake -G Xcode -D NO_PTEX=1 -D NO_DOC=1 \
       -D NO_OMP=1 -D NO_TBB=1 -D NO_CUDA=1 -D NO_OPENCL=1 -D NO_CLEW=1 \

enter in the bin directory and launch the demos 🙂
[ok, i have all the libs to compile this installed, but who will try this with being used to compilation :)]



Green logic for a case & Radio for the daydreamers

Design & animation test with softskin, a shiv integer model by Julien Deswaef & Matthew Plummer-Fernandez and a track by Clément Parmentier

bits & pieces

B&W Valley

generated with the valley benchmark from unigine.

bookmarks portrait


Frederik Vanhoutte is sharing the source code of his drawing!

iso190522 – the system behind my iso plots. Processing code, including the library, Java source code, and examples. Creates PDF files optimized for line plots.


Download the code:
Thanks to him for sharing is work in a functional & executable form!

plotted drawing by Frederik Vanhoutte

all images are property of Frederik Vanhoutte

godot softskin

Softskinned & articulated platypus

After several hours of adjustments in blender, platypus has now more control points. As shown in the image above, mesh is controlled by invisible edges, acting as rubber bands.

Playing a bit longer with group shrink and control points, and the model is really changing shape

Model used is the Platypus from William Reynish under CC-BY

godot softskin

Softskinned platypus

After nearly 9 month of inactivity, the development of softskin is back on tracks. Softskin is a module inspired by tensegrity for godot engine (what else?). Demo video:

Model used is the Platypus from William Reynish under CC-BY

bookmarks portrait

Lu Yang, baroque manga

uterus man

A crazy asian human. Here is some of his shit.

uterus man, my favorite

main website:

bookmarks godot

Isabelle Arvers’s first godot machinima

So proud to present the first machinima made by the french artist Isabelle Arvers with GodotEngine!

What I super enjoyed with Godot is that in less than 4 hours and the help of François, I was able to create an abstract sea with the colors of the sun and the sky, as well as the horizon as I exactly wanted, I understood some concepts that aren’t familiar to game dev beginners about 3D objects and how they rely on light and physics. Finally, as I am, for the moment, still mainly a machinima person, I barely understood camera movements and was able the day after in the train driving me back to France to make my first machinima abstract sea in Godot.

I became autonomous in abstract sea machinima making in less than 1 day, which is amazing for me! I didn’t find the interface too hard to understand but so much appreciated to be supported for the first steps of this discovery. Especially to be able to do exactly what I wanted to do and not to have to follow so many different tutorials before to get to the point I was interested in.

by Isabelle Arvers, source:

bookmarks portrait

4D specialist Marc ten Bosch


Marc ten Bosch seems to be particularly interested in the 4th dimension, its narrative & interaction potential. He has made several releases, see below for all links.

4D Toys

The game is based on tesserakt 4d engine, a custom game engine. The only mention of it i found online is an article in gamasutra.


Ray Marching implementaion

Demo of an implementation of ray marching by SebLague. Possibilities are tremendous, especially for boolean operations and object blending. Definitely something to test in Godot!


bookmarks portrait

Marble Marcher by CodeParade

CodeParade proposes an very interesting game/game engine that uses a smart physics computation related to fractal rendering. The result is Marble Marcher, an opensource (GPL-2!) game, available on and github.


Direction in cyclic spaces

Related to the edition of rotation via 2d gradients, i stumble upon a nice little logical issue: how to pick the shortest path form current value to target one when space is cyclic and not linear. Indeed, rotations are cyclic, PI and PI*3 are not the same angles, ok, but you end up at the same place with the 2 rotations. Therefore, the 2d picker i’ve developed must take this fact into account to smooth rotations.

In 50% of the cases, it is shorter to go the opposite direction! With a little image, it is much clearer.

Instinctively, a human would pick the shortest path around a circle. But when programming, it is much easier to consider rotation as a line from 0 to 2PI. And that’s precisely when all hell breaks loose! You now have to compute 2 distances between 2 points:

  • the classic one, on the line
  • the opposite way, looping from 0 to 1 and from 1 to 0

Once done, you just have to compare the 2 distances and pick the shortest one. It would be too simple if it was only that.

For the UI, i wanted to allow limitation of rotation (a range). It disturbed the computation of the shortest path, because the range is forcing usage of a smart way to pick the shortest path: it can not go throughs the forbidden values.

Here is an openprocessing implementation of the full process.