Das war der OCWD#2

Am Samstag, dem 2. Mai, fand der zweite Osliper Computer-Workshop-Day statt. Das Thema war dieses Mal nicht im Bereich von Webapplikationen angesiedelt, zur Abwechslung gab es etwas Verspieltes: Processing stand am Programm. Ich war erstaunt, was ich nach wenigen Stunden Workshop damit realisieren konnte.

Leider waren viele meiner potenziellen OCWD-Besucher verhindert, also war es eher ein Privatissimum, mit dem Processing-Guru waren wir zu dritt. Dadruch ließen wir uns den Spaß nicht verderben ;-)

Um zu starten, musste ich erst einmal Processing auf meinem Ubuntu-Netbook installieren. Von der Downloadseite holte ich mir die Linux-Variante, ein Archiv mit 62,2 MB, das ich in /opt entpackte.

Der StartschirmDanach ein cd /opt/processing-1.0.3; ./processing – schon kann es losgehen. Die Programme werden Sketches genannt, die in einem Sketchbook in ~/sketchbook gesammelt werden. Nun braucht man nicht mehr viel zu tun, man kann gleich loslegen.

Ein Programm hat dabei typischerweise zwei Funktionen: setup() und draw(). Die erste wird einmalig beim Programmstart aufgerufen, die zweite bei jedem Durchlauf. Das Zeichnen erfolgt auf den vorherigen Schirm, den man je nach gewünschtem Effekt noch ändern oder löschen kann.

Und so kann man lustige Sachen malen, mein erster Sketch wuchs im Laufe des Spielens immer weiter:

void setup() {
  size(400, 400);
  frameRate(25);
  smooth();
  background(255);
}

int count = 0;
int radius = 20;
int edgelength = 60;

void draw() {
  count++;
  copy(10, 10, width-20, height-20, 0, 0, width, height);
  fill(255, 10);
  rect(0, 0, width, height);

  if(mousePressed) {
    fill(0, 255, 255, 70);
  } else {
    fill(255, 0, 255, 70);
  }

  noStroke();
  float x = radius * sin(2*PI*count/25);
  float y = radius * cos(2*PI*count/25);

  if(mousePressed) {
    y *= -1;
  }

  pushMatrix();
  translate(mouseX, mouseY);
  rotate(radians(count));
  rect(x-edgelength/2, y-edgelength/2, edgelength, edgelength);
  popMatrix();
}

So sieht der erste Sketch aus.Das Ergebnis macht einen psychedelischen Eindruck, was sicher an den verwendeten Farben liegt. Live kann man das auch ausprobieren – Java vorausgesetzt. Die Maustaste wechselt dabei Farbe und Drehrichtung des Quadrats. Hier gibt es den Quellcode.

Nachdem ich erst vor kurzem die ins Notebook integrierte Webcam unter Linux in Betrieb nahm, verband ich in meinem zweiten Sketch deren Bild mit 3D-Effekten.

import processing.opengl.*;
import codeanticode.gsvideo.*;GSCapture cam;

int count = 0;
PFont font;

void setup() {
  size(800, 600, OPENGL);
  cam = new GSCapture(this, 320, 240);
  font = loadFont("Dialog.bold-48.vlw");
  textFont(font);
  colorMode(HSB);
}

void draw() {
  if(cam.available()) {
    cam.read();
    count++;
    background(0);
    pushMatrix();
    translate(width/2, height/2);
    rotateZ(2*PI*mouseY/width);
    rotateY(2*PI*mouseX/width);
    rotateY(radians(mouseX/width*360+count));

    beginShape();
    texture(cam);
    vertex(-cam.width, -cam.height, 0, 0, 0);
    vertex(-cam.width,  cam.height, 0, 0, cam.height);
    vertex( cam.width,  cam.height, 0, cam.width, cam.height);
    vertex( cam.width, -cam.height, 0, cam.width, 0);
    endShape();

    fill(256 * mouseX/width, 255, 255);
    text("Alles Gute zum Geburtstag", -cam.width, 0, 20);
    text("Franz am OCWD#2", -cam.width, 0, -20);

    popMatrix();
  }
}

Für diesen Sketch musste ich erst die Bibliothek für die GStreamer-Unterstützung herunterladen und in ~/sketchbook/libraries installieren. Es gibt auch viele andere Bibliotheken für Processing.

Franz in 3D von der WebcamUnd noch einmalDa kann ich leider keinen Link anbieten, wo man das gleich im Browser selbst ausprobieren kann. Der Export klappt zwar im Processing, aber der Firefox wollte das Applet nicht darstellen, sondern verabschiedete sich.

Am Ende des Workshop nahmen wir noch meinen Arduino in Betrieb, davon berichte ich ein anderes Mal.

Das Thema für den OCWD#3 ist bereits festgelegt, da wird es sich um Ruby On Rails handeln. Für die Terminfindung habe ich bei doodle.com bereits eine Umfrage gestartet:

Ich freue mich schon auf den nächsten OCWD.

Einen Kommentar schreiben: