Recent changes

Recent changes (extended)


quoi et où à new-york




DSC 0302.jpg

Indie / underground gaming place in manhattan (workspace, events). Visited on the 05/03/2018.

Rules of the place:

Babycastles is a community committed to being a safe, respectful and positive environment -- supporting artists and guests by providing a space for free expression of all people. Upon entry, all attendees agree to respect personal boundaries and take responsibility for their actions and experience.

Babycastles will not tolerate language or behavior that is oppressive. We define oppressive behavior as:

  • Any kind of uninvited physical contact, sexual or otherwise
  • Comments or other behaviors that are racist, sexist, homophobic, or transphobic, ableist, classist, ageist, or otherwise discriminatory
  • Deliberate intimidation
  • Harassing photography or recording
  • Sustained or willful disruption of events, programming, or services


Spherical Smackdown by rbazelais Mound by ohsqueezy


  • Current address: 145 W.14th St. - Downstairs - NY, NY 10011
  • website
  • twitter

Death by audio arcade



The Death By Audio Arcade is a series of local multiplayer arcade cabinets produced by local indie game developers that originate from Death By Audio, Brooklyn's influential DIY music venue.


Event i went to: DBAA NYC Dev Demo Night


Zarvot by snowhydra games Tuned Out by Shallow Games [...Notes:New-York...]

Essai de typologie de l’art numérique, et François Zajega à la galerie Charlot



Visit @ museum boijmans, rotterdam, 2017/09/17



  • MegaFace Dataset - the largest publicly available facial recognition dataset with a million faces and their respective bounding boxes. 65GB of faces


Scanimate News Report


"Les systèmes automatisés ont envahi notre quotidien via les applications pour smartphone, les GPS, les objets connectés, les robots ou drones domestiques – et bientôt les voitures sans conducteur. Chaque jour plus innovantes, ces technologies se proposent de soulager notre esprit, de nous épargner des efforts inutiles et de supprimer frictions et ralentissements dans nos vies. Censés alléger le travail des ouvriers et accroître les gains de productivité, l'au..." -

Remplacer l'humain - Nicholas Carr, 2017 - babelio

“Free software” means software that respects users' freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software. Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer”. We sometimes call it “libre software,” borrowing the French or Spanish word for “free” as in freedom, to show we do not mean the software is gratis.

>> What is free software? [...Bookmarks...]

Question here below is simple: how to produce moving images with colored dots. The idea has been experimented in several technical and visual forms, all based on the manipulation of simple basic entities.


Researches related to particles, in different context:

  • colliding with a 3d model, researches of 2013
  • in relation with a vector field, for Pelléas et Mélisande opéra.

Accumulation management

FBO pipeline that:

  • control the accumulation of the particles in time by making them disappear gradually (fade2black)
  • transform the luminosity of pixels into alpha, darker => more transparent (lum2alpha)

Passes, by columns:

  1. current frame
  2. fade2black shader and accumulation of the current on top of previous ones
  3. lum2alpha shader, this is the output frame, shown on checkboard, black and green background
  4. delta between second and third pass, showing the color loss during the lum2alpha pass

Accumulation alpha shaders.png


All shaders below are pixels shaders. The vertex shader associated is ultra basic, and i'm not even sure you need one... (openframeworks binding)

vertex shader

#version 120
void main() {
   gl_Position = ftransform();


#version 120
uniform sampler2DRect tex0;
uniform float decay_factor;
uniform float decay_mult;
const float PI = 3.14159265358979323846;
const float HALF_PI = 1.57079632679489661923;
void main() {
   vec4 c = texture2DRect(tex0, gl_FragCoord.xy);
   float dfi = 1.0 - decay_factor;
   c.r -=  ( 1 - ( ( 1 + sin( -HALF_PI + c.r * PI ) ) * 0.5 ) ) * decay_factor;
   c.g -=  ( 1 - ( ( 1 + sin( -HALF_PI + c.g * PI ) ) * 0.5 ) ) * decay_factor;
   c.b -=  ( 1 - ( ( 1 + sin( -HALF_PI + c.b * PI ) ) * 0.5 ) ) * decay_factor;
   c.r *= decay_mult;
   c.g *= decay_mult;
   c.b *= decay_mult;
   gl_FragColor = c;


#version 120 [...WorkUnit:Particles...]


in visioning chronological order, newest first

Black panther

  • seen 2018/03/09 - 2018 - imdb - rotten tomatoes
  • Regal Union Square Stadium 14 - NY, trans-generational fratricide, black supremacy, woman scientist, power ranger tribes


Same kind of structure as in the chinese movie: the aristocracy of blood-right is not taken down at the end of the movie, but the story has modified the main male character.

The male figures are surrounded by women, nearly no secondary roles in the black suite of the two protagonists are men:

  • mother of the king (former queen),
  • sister (scientist),
  • future wife (undercover agent),
  • general (in love with a tribe's chief),
  • hacker (cousin sidekicks).

The king's tribe is the only one to have female elite troops, all other have a traditional male only army (gorillas & rhinos). At the crowning ceremony, only male pretenders are shown. Even if the overall societal structure is safe, the king keeping its dominant position at the end of the movie and therefore keeping the patriarchal order, the massive presence of secondary roles generates a fresh breeze across the movie. Some aspects of the king are to be noticed:

  • he kisses the future queen in a shy way,
  • he gives her a responsibility in its new projects,
  • the general is choosing her country and duty when faced the choice of leaving,
  • the king is mentored by a woman (the general),
  • all young women characters participate in the last combat against male troops,
  • the king proposed a healing to his cousin instead of "finishing him".

In the racial point of view, the movie is dangerous because it presumes an hidden & technologically advanced african country able to inverse to power relationship between africa and the rest of the world. Even if a fiction can be a powerful kick to free humans from slavery, the way to do it is via an kind aristocracy [...Movies, shorts, anime & series log...]

Carnages 2 [extra small] - sound by Gauthier Keyaerts


[en] This work unit is based on the algorithmic processing of videos gleaned on pornographic platforms. The intention that guided the development of this algorithm aims to blur the obviousness and roughness of the sources and to turn them into an animated painting, twisting the mind of the watchers by eluding the direct representation of bodies without losing their presence, in a pictorial surface constantly morphing. It is also a way to trigger an awareness about the depiction of sexual act in the contemporary web-based world.

Etymology of the word of pornography.

1842, "ancient obscene painting, especially in temples of Bacchus," from French pornographie, from Greek pornographos "(one) depicting prostitutes," from porne "prostitute," originally "bought, purchased" (with an original notion, probably of "female slave sold for prostitution"), related to pernanai "to sell" (from PIE *perə-, variant of root *per- (5) "to traffic in, to sell") + graphein "to write" (see -graphy).


  • #1 - cute brunette - vimeo
  • #2 - extra small - vimeo
  • #3 - rui
  • #4 - in da wood
  • (no number) - strapless, 30 seconds, part of ECVP Volume 4 PORN & POLITICS - vimeo
  • #5 - hitomi and the yakuzas - page
  • #6 - teeny black
  • Carnages teenyblack mosaic.jpg
  • #7 - jane in the toilet - page
  • #8 - creamy hairs, long play (~98min)
  • Carnages creamy hairs mosaic.jpg
  • #9 - creamy patterns, long play (~99min)
  • Carnages creamy patterns mosaic.jpg



  • 2017 October - #6, #8 & #9 – synchroniCITIES: BXL-SP - Bruxelles – Belgium
  • 2015 April - #2 - Found Pixels – La Panacée, Montpellier – France
  • 2014 May - #2, #3 & #4 - Ateliers du web – Bruxelles

Ways to present


Links and any kind of info related to disrupted cities.

The city as a research

New Babylon

Constant new babylon model bw.jpg Constant new babylon model color.jpg.jpg

New Babylon is an anti-capitalist city, perceived and designed in 1959-74 as a future potentiality by visual artist Constant Nieuwenhuys

The city as an actor

Different story and/or artwork where the city is leaving its role of background to become an actual protagonist of the story, imposing its scale, structure and time to the human-like characters.

Dark city


Darkcity, 100min, 1998, by Alex Proyas

The city is shifting every night, while population is in a catatonic sleep. The whole map and architecture is mixed up in front of our eyes, modifying the perception of structural stability, or at least very slow evolution, commonly inferred by the streets and buildings. This movie is the main inspiration for the city generator library.


Blame.jpg Blame-killy and shibo.jpg

Blame! (original title: ブラム!), 1998 – 2003, by Tsutomu Nihei

The main character, killy, a taciturn and undetermined young adult, is wandering in an endless succession of super-structure (megastructures in the manga) enclosing cities and vast empty space. Along the 10 volumes covering an undefined time, from several years to hundreds. During this journey, the different action scenes are separated by long periods of absolute loneliness. In this story, the city is not decaying but self-regenerate thanks to giant building robots, apparently left on their own and continuously creating new structures. The city is not actually moving by itself, but has no other reason of expending else than the fact of build. It is a self-sufficient object, liberated from its utility to mankind. [...WorkUnit:Disrupted Cities - docs...]

Chubby and caballo

Her comes the transi

Adding a character: Le Transi de Rene de Chalon, 3d scan.

All images below has been rendered in blender, just to mention.

It has been quite a work to rig it and uv unwrapped it, now it is ready for godot, where i will test animations.

Transi 001.png Transi 002.png Transi 003.png

Other point of view.

Transi rockandroll.png Transi backlight.png

First batch

First batch of ingame screenshots.


the 2 scenes


Carnages est une série de vidéos produites algorithmiquement et prenant comme source des séquences de films pornographiques. Les pièces présentées au Prix Médiatine '18 sont les dernières en date et ont été produites en Juin 2017.

Les 3 pièces proposée à ce prix sont:

  • #6 teeny black, 2017, 8m 16sec
  • #8 creamy hairs, 2017, ~98min
  • #9 creamy patterns, 2017, ~99min

François Zajéga

François Zajéga est un artiste programmeur vivant et codant à Bruxelles.

Après une formation d'infographie à l'Institut Saint-Luc ESA de Bruxelles, il a suivi le cours de recherche plastique de Patrick Pouillard durant huit années à l'Académie des Beaux-Arts de Saint-Gilles. En parallèle de cette formation, il a commencé sa carrière professionnelle en tant que web-designer / web-master. Après avoir fondé une société de web et d'audiovisuel, il s'est tourné vers la recherche scientifique en rejoignant l'institut Numédiart de l'Université de Mons en tant que chercheur spécialisé dans le traitement vidéo et l'interaction homme-machine.

Il est aujourd'hui assistant dans la section arts numériques dirigée par Michel Cleempoel à Arts2, l'école supérieure des arts de Mons. Intéressé par la question de la place de la machine dans une production artistique, il s'est naturellement tourné vers le logiciel libre et la programmation pour mener à bien ses pièces. Il est actuellement le principal développeur du moteur de jeu interne de Polymorph.

Ses recherches artistiques hybrident intimement les problématiques de l'art et celles de la recherche scientifique et sont mises en forme au travers de programmes spécifiques. La machine informatique, la programmation plus exactement, et les formes de pensées qu'elle implique prennent une place prépondérante dans ses pièces. C'est au travers de ce langage à part entière que les images de François Zajéga se constituent, mélangeant constamment la mise au point d'algorithmes abstraits et la recherche plastique. [...WorkUnit:Carnages mediatine...]

Generation of animated normal maps using processing, experimentation phase.

Demo in blender.

Normal-map-generation desktop.png


To achieve the "engravement" effect, rectangles must be drawn using the following rule:

  • a straight surface has no X or Y slope of 0°, its color is thus RGB( 127, 127, 255 )
  • angles in X and Y are limited to the range [-90°, 90°], represented as the color range [0, 255].
  • therefore, an angle of -45° on X is represented by the red value 64, by making 127 - 63
  • to draw an engraved line, you need to process the line direction, as it will influence the X and Y slopes.


thanks to Trainz Wiki for this very usefull schema!


This code comes from processing (java). But it can be easily adapted to other languages. Please take into account that this code is not optimised for realtime use! This part will come next time I'll work on this topic.

The 3 static int at the beginning of the code correspond to these effects, demonstrated in 5 and 50 pixels width.

Normal map tuto.png

See blender sculpture tools for naming convention: Blender scult tool.png

static final int COLOR_PINCH = 0;
static final int COLOR_DEEPEN = 1;
static final int COLOR_STRAIGHT = 2;

public void pinch( PVector dir, float depth, float percent ) {
   float sm = pow( 1 - ( 1 + sin( -HALF_PI + percent * PI ) ) * 0.5, 2 );
   float m = pow( percent, 2 );
   float red = 127 - dir.y * depth * sm;
   float green = 127 - dir.x * depth * sm;
   fill( red, green, 255, 255 - m * 255 );

public void deepen( PVector dir, float depth, float percent ) {
   float sm = ( 1 + sin( -HALF_PI + percent * PI ) ) * 0.5;
   float m = pow( percent, 2 );
   float red = 127 - dir.y * depth * sm;
   float green = 127 - dir.x * depth * sm;
   fill( red, green, 255, 255 - m * 255 );

public void straight( PVector dir, float depth, float percent ) { [...Notes:Normal map generation...]



First test of the installation at beursschouwburg: streamer are streaming correctly, and after a correction on the viewer to detect "NaN" in the information received from the streamer, it has been possible to calibrate the 3 kinects quiet easily. Calibration is not perfect (based on skeletons, it would be a miracle), but is a good approximation of the position.


panel to edit filtering configuration of the skeletons, same logic as for calibration matrices:

  • filtering is stored on the streamer side,
  • when the kinect appears in the viewer, the viewer requests the configuration
  • streamer sends the configuration to the viewer
  • configuration UI is created on the viewer side
  • at each modification of the configuration, viewer sends it to the streamer
  • the streamer applies it directly and updates the configuration file

Network viewer-filtering management.png


calibration based on successive positions of skeleton

The calibration algorithm is using 2 kinects. One is the reference, the other the calibrated. To start the process, one and only one skeleton must be present in each kinect (the same person, you got it). 500 positions of the hip center are stored (+/- 16sec). Once all the positions are collected, the calibration can be processed.

It uses 3 passes:

  • first pass: rendering the Z rotation to apply on the positions to calibrate. As Z is pointing up, this rotation is the yaw.
  • second pass: rendering the X rotation to apply on the positions once Z correction applied. As X is pointing right, this rotation is the pitch.
  • last pass consists in processing the average distance between reference and the positions to calibrate.

This transformations are stored in a matrix ready to be sent to streamers.

Why not compute the roll? I tried, but the poor quality of the recording was making the calibration worse than without. So I decided to drop this rotation. [...Tools:Kinect skeletons streamer...]

This page describes the different steps implemented in the city generator package to detect block in the road's network, in a fast and clean way.



These sketches cover the whole research described below. They are displayed chronologically.

DC scan 0001.jpeg DC scan 0002.jpeg DC scan 0003.jpeg DC scan 0004.jpeg DC scan 0005.jpeg DC scan 0006.jpeg DC scan 0007.jpeg DC scan 0008.jpeg DC scan 0009.jpeg

block detection

right vector

Finding the closest road on the right at a crossroad.

To generate the bocks of building based on the roads structure, the method I’m building is based on a simple idea: when you arrives at a crossroad, you take the first street on the right and you go on like this until you reach a dead-end or your starting point. If you reach your starting point, the succession of roads you took defines a block of building. In theory. This technique has been suggested by Michel Cleempoel, on the way back from school.

After a bit of preparation of the road network (removing orphan roads, having no connection with others, and dead-ends parts of the roads), the real problem arouse: how do you define right in a 3d environment, without an absolute ground reference. Indeed, I can configure the generator to use the Y axis (top axis in ogre3d) in addition to X & Z.

At a crossroad, you may have several possibilities of roads. In the research, these possible roads are reduced to 3d vectors, all starting at world’s origin. The goal is to find the closest vector on the right of the current one, called the main 3d vector in the graphic above.. [...WorkUnit:Disrupted Cities - road network...]


Main work units[1]


Disrupted Cities - ballad in a virtual city

Carnages-banner-hitomi and the yakuzas.jpg

Carnages - videos generation


Tanukis - avatar based


Genealogy - generative art

  1. I choose to avoid the word project (everybody has projects) and, from now on, I'll call the different pieces I'm working on work unit. About Work Unit.

platforms & wikis

social networks