Generativna umetnost u Python Processing-u

Lekcija 16 od 20 · Python i Processing
Okruženje:
primeri u ovoj lekciji pisani su za Processing Python Mode. Ako radiš u preporučenom okruženju Thonny + py5, većina koda ostaje ista, a imena sa velikim slovom u sredini pišu se malim slovima sa donjom crtom: mouseX → mouse_x, noStroke() → no_stroke(). Pogledaj tabelu razlika.

Generativna umetnost je način stvaranja slika pomoću koda. Umesto da ručno crtamo, program koristi matematiku, slučajne brojeve i pravila da generiše umetnost.

Ovo je jedna od najzanimljivijih primena Python Processing-a i često se koristi u kreativnim projektima, školskim radovima i takmičenjima.

Ako niste radili osnove crtanja, preporučujemo prvo:
Osnovni oblici
Animacija i promenljive


Primer 1: Nasumični krugovi


def setup():
    size(600, 400)
    background(255)

    for i in range(100):
        x = random(width)
        y = random(height)
        r = random(10, 50)

        fill(random(255), random(255), random(255), 150)
        noStroke()
        ellipse(x, y, r, r)

Program crta 100 krugova na nasumičnim pozicijama. Svaki krug ima različitu boju i providnost.


Primer 2: Generativni kvadrati


def setup():
    size(600, 400)
    background(20)

    for x in range(0, width, 40):
        for y in range(0, height, 40):
            boja = random(255)
            fill(boja, 100, 255)
            rect(x, y, 30, 30)

Petlje omogućavaju kreiranje mreže oblika. Boje su generisane nasumično.


Primer 3: Animirana generativna umetnost


def setup():
    size(600, 400)
    background(0)

def draw():
    x = random(width)
    y = random(height)
    fill(random(255), random(255), random(255), 100)
    noStroke()
    ellipse(x, y, 20, 20)

Svaki frame dodaje nove oblike i stvara animirani umetnički efekat.


Mini projekat: Dinamični kolaž

Napravite generativni kolaž sa kombinacijom krugova, kvadrata i linija. Možete dodati interakciju sa mišem:


shapes = []

def setup():
    size(600, 400)
    background(0)

def draw():
    background(0, 10)  # blagi trail efekat
    
    # Dodavanje novih oblika klikom
    if mousePressed:
        shapes.append((mouseX, mouseY, random(10,50), random(255), random(255), random(255)))
    
    for s in shapes:
        x, y, r, r_color, g_color, b_color = s
        fill(r_color, g_color, b_color, 150)
        noStroke()
        ellipse(x, y, r, r)

Klikom dodajemo nove oblike koji ostaju na ekranu. Animacija i providnost stvaraju zanimljiv vizuelni efekat.


Šta smo naučili

  • Generisanje nasumičnih vrednosti sa random()
  • Stvaranje obrazaca pomoću petlji
  • Kombinovanje boja i providnosti
  • Animaciju pomoću draw()
  • Interaktivnost sa mišem
  • Kreiranje mini projekta sa trajnim oblicima

Vežba

  • Napravite generativnu umetnost koristeći krugove i kvadrate
  • Dodajte interaktivnost sa mišem (klik ili pozicija)
  • Koristite providne boje i animaciju
  • Napravite da se oblici boje menjaju u zavisnosti od x ili y pozicije

Često postavljana pitanja (FAQ)

Šta je generativna umetnost?

Stvaranje vizuelnog sadržaja pomoću koda, gde matematička pravila i random funkcije definišu izgled.

Koje funkcije Python Processing-a se najčešće koriste?

random(), ellipse(), rect(), line(), fill(), noStroke(), draw().

Da li je potrebno znanje animacije?

Ne, osnovna animacija se lako uči kroz draw() i promenljive za poziciju.

Može li se koristiti interaktivnost?

Da, mišem ili klikom možemo menjati poziciju, boju ili veličinu oblika.


Mini projekti sa generativnom umetnošću

Ova sekcija daje ideje za male projekte koje možete odmah implementirati u Python Processing-u. Cilj je da kombinujete nasumičnost, petlje i interaktivnost.

Projekat 1: Animirani talasi


def setup():
    size(600, 400)
    noFill()
    stroke(100, 150, 255)
    
def draw():
    background(0)
    
    for y in range(0, height, 20):
        beginShape()
        for x in range(0, width, 20):
            y_offset = sin((x + frameCount*5) * 0.05) * 20
            vertex(x, y + y_offset)
        endShape()

Talasi se pomeraju animacijom. Možete menjati boju ili brzinu talasa.

Projekat 2: Interaktivni spirali


def setup():
    size(600, 400)
    background(0)
    
def draw():
    translate(width/2, height/2)
    stroke(random(255), random(255), random(255))
    noFill()
    angle = frameCount * 0.1
    for r in range(0, 200, 5):
        x = r * cos(angle + r*0.1)
        y = r * sin(angle + r*0.1)
        ellipse(x, y, 5, 5)

Spirala se animira, a boje se menjaju nasumično. Klikom možete resetovati pozadinu.

Projekat 3: Oblaci oblika


shapes = []

def setup():
    size(600, 400)
    background(0)

def draw():
    background(0, 15)
    
    if mousePressed:
        for i in range(5):
            shapes.append((mouseX + random(-20,20),
                           mouseY + random(-20,20),
                           random(5,15),
                           random(255),
                           random(255),
                           random(255)))
    
    for s in shapes:
        x, y, r, r_c, g_c, b_c = s
        fill(r_c, g_c, b_c, 150)
        noStroke()
        ellipse(x, y, r, r)

Klikom dodajete “oblačiće” oblika koji ostaju na ekranu i stvaraju kolažni efekat.

Zadaci za vežbu

  • Napravite svoj mini generativni projekat koristeći kombinaciju oblika i boja
  • Dodajte interakciju sa mišem ili tastaturom
  • Koristite animaciju kroz draw() i providnost boja
  • Eksperimentišite sa slučajnim pozicijama i veličinama oblika

Povezane lekcije

Iz generativne umetnosti do takmičarskog rada

Proveri znanje

Otvori kviz

Mini kviz: generativna umetnost

1. Šta daje random(0, 255)?




2. Zašto se u generativnoj umetnosti često ne crta background() u svakom frame-u?




Korisni spoljni resursi