Toolbox Interactiondesign


Portraits

Porträt – Bildnisse durch Kontrast

Lena Hellmann, 15.08.2013 | Generative Gestaltung Goes Analog bei Prof. Dr. Christine Goutrié

Material

Beim Material für das Porträt sollte man beachten etwas mit geringer Faserstruktur und kleineren Fasern zu wählen (insbesondere bei Holz), da sich die Position der Fräsungen je nach Rapportgröße und die Tiefe der Fräsungen annähern könnten und dem zu Folge Stege einreißen anstatt geringfügig stehen zu bleiben. Dasselbe gilt für Papier. Hier ist zusätzlich zu beachten, dass die Stärke bzw. Dichte des Papiers ziemlich hoch sein muss, da die Stege sonst ebenfalls einreißen.

Kontraste zwischen Oberfläche und Bohrungen verstärken den Bildeindruck und das Porträt ist trotz geringer Pixelanzahl sehr gut zu erkennen.

Bildbeschaffenheit

Um ein besonders deutlich erkennbares, gefrästes Porträt zu erhalten, gilt es  bestimmte Begebenheiten im Bild zu beachten oder durch Bildbearbeitung zu schaffen. Zum einen sollte sich das Porträt vor einem gleichmäßigen Hintergrund befinden. Es bietet sich hier an, das Bild im Vorfeld zu bearbeiten und den Hintergrund weiß einzufärben. Schwarz wäre ebenfalls eine Möglichkeit, bietet sich jedoch eher bei Porträts an, die einen stark überwiegenden Weißanteil haben.

Ebenso ist es von Vorteil, wenn Haare und Gesichtston sowie auch Augenfarbe etc. in einem starken Kontrast zueinander liegen (Ideal: dunkles Haar und heller Hautton). Sollte dies nicht der Fall sein, lohnt es sich die Kontraste im schwarz weiß eingefärbten Bild zusätzlich zu erhöhen. Ein starker Kontrast sorgt für große Helligkeitsunterschiede, die die Gesichtszüge eindeutiger erkennen lassen.

Programmcode

Ausgewählte Bilder müssen zuvor auf eine bestimmt Größe bearbeitet werden, die der Zahl hinter imageSize in Pixeln entspricht (in Höhe und Breite). Zudem müssen Farben in Graustufen umgewandelt werden, da lediglich schwarz und weiß und ihre Mischfarben angesprochen werden.

Der rasterRapp gibt die neue Größe eines durch currBrightness berechneten Pixels an. Je nach Deutlichkeit des Bildes lässt sich dieser kleiner und größer wählen, um das Bild deutlicher oder  „verpixelter“ erscheinen zu lassen.

In diesem Sketch ist es ebenfalls wichtig, dass die imageSize sich immer passend durch Vervielfachung des RasterRapps ergeben kann. Setzt man den RasterRapp auf 4, muss man dem zu Folge die imageSize auf 100 erhöhen und dem entsprechend muss das gewünschte Bild noch einmal auf eine Größe von 100×100 Pixeln überarbeitet werden

//Portrait

PrintWriter output;                      //Aufruf: output
PImage myImg;                          //Aufruf: Bild laden  

int imageSize=99;                     //im Vorfeld bestimmte Größe des Bildes

void setup() { 
  background(255);  
  size(99, 99);  
  noStroke();
  output = createWriter("Dateiname.ngc");       //Fräscode
  output.println("%");
  output.println("G 54");
  myImg=loadImage("Name_ausgewählter_Bilddatei.jpg");     //Bilddatei
  loadPixels();
}

void draw() {
  int rasterRapp=3;
  for (int i=1; i<=imageSize; i+=rasterRapp) {
    for (int j=1; j<=imageSize; j+=rasterRapp) {
      float currBrightness=brightness(myImg.pixels[i*imageSize+j]);  
      fill(currBrightness);                                          
      ellipse(j, i, rasterRapp, rasterRapp);

      output.println("G0 X"+j+" Y"+i);
      // Vorschubbewegung G1 ins Material 
      // Brightness bestimmt die Tiefe der Bohrungen über Farbwert 0 bis 255
      output.println("G1 Z "+(map(currBrightness, 0, 255, -1.9, -0.1))+" F300");  
      output.println("G0 Z2");
    }
  }
  noLoop();
}

void mousePressed() {
  saveFrame("Dateiname.png");       //durch Processing entstehende Bilddatei
  output.println("M 02");
  output.println("%");
  output.flush(); 
  output.close(); 
  exit();
}

Vorbereitung des Sketch durch Aufrufen/Benennen der Inputs und Outputs.

Im Setup wird neben der Bühnengestaltung auch der Dateiname für den ngc-Fräscode wie auch der Aufruf des G54 durchgeführt. Zudem wird die Bilddatei aufgerufen, die sich in einem in den Sketch Ordner geladenen data Ordner befinden sollte. Zudem wird das Bild/Pixel geladen.

Im void draw() wird die Bilddatei bearbeitet: auf einen neuen Rapport übertragen und in die für die Frästiefe relevante currBrightness umgewandelt.

 

 

 

 

Durch das mousePressed() besteht die Möglichkeit durch klicken auf die durch play aufgerufene Datei das Processingergebnis noch mal als Bilddatei festzuhalten.

31.08.2013 | Lena Hellmann |