Generative Art Nedir? Algoritma ile Sanat Üretimi
Generative Art Tanımı
Generative Art (Üretken Sanat), bir algoritma veya otonom sistem kullanarak kısmen veya tamamen oluşturulan sanattır.
Ana Özellikler
- Algoritma: Belirli kurallar dizisi
- Otonom İm: Sistem kendi başına karar verir
- Varyasyon: Her çalıştırmada farklı sonuç
- Sürpriz: Sanatçı bile tam sonucu bilemez
Tarihçe
Erken Dönem (1960'ler)
Frieder Nake - "Hommage à Paul Klee" (1965)
- İlk bilgisayar grafiklerinden
- Çizgi plotter ile üretildi
Georg Nees - "Schotter" (1968)
- Kare dizileri rastgele dönüşümlerle
Vera Molnar - "Interruptions" (1968-1969)
- Geometrik şekiller ve rastlıkla
Sol LeWitt - Konseptüel Bağlantı
Bilgisayar kullanmasa da, Sol LeWitt'in duvar çizimleri generative art'ın felsefesiyle yakından ilgili:
"Fikir, sanat eserini üreten bir makine haline gelir."
LeWitt talimatlar yazardı, başkaları çizerdi. Bu, kodla sanat arasındaki ilişkinin mükemmel analogisi.
Modern Dönem (2000'ler - Günümüz)
Tyler Hobbs - "Fidenza" (2021)
- NFT olarak satıldı
- Algoritmic aesthetic
Dmitri Cherniak - "Ringers"
- On-chain generative NFT
Temel Teknikler
1. Rastgelelik (Randomness)
Basit Random:
function setup() {
createCanvas(800, 800);
background(255);
for (let i = 0; i < 100; i++) {
let x = random(width);
let y = random(height);
let size = random(10, 50);
fill(random(255), random(255), random(255));
circle(x, y, size);
}
}
Sorun: Çok kaotik, organik görünmüyor.
Çözüm: Perlin Noise
2. Perlin Noise
Ken Perlin tarafından 1983'te geliştirildi. Daha pürüzsüz, doğal rastgelelik.
let xoff = 0;
function draw() {
background(220);
for (let x = 0; x < width; x++) {
let y = noise(xoff) * height;
ellipse(x, y, 4, 4);
xoff += 0.01;
}
}
Kullanım Alanları:
- Dağ silüetleri
- Bulut formasyonları
- Organik dokular
3. Fraktallar
Kendini tekrar eden desenler.
Mandelbrot Set: Matematiksel formül: z = z² + c
L-Systems: Bitki büyüme simülasyonları.
Axiom: F
Rules: F → F+F--F+F
Koch Snowflake: Her iteration'da kenarlar böl ve üçgen ekle.
4. Cellular Automata
Conway's Game of Life (1970): Basit kurallar, karmaşık sonuçlar.
Kurallar:
- Canlı hücre 2-3 komşuyla yaşar
- Canlı hücre <2 veya >3 komşuyla ölür
- Ölü hücre 3 komşuyla canlanır
// Game of Life implementation
// (Grid, kurallar, iteration)
5. Flowfields (Akış Alanları)
Perlin noise ile vektör alanları oluşturma.
let particles = [];
function setup() {
createCanvas(800, 800);
for (let i = 0; i < 1000; i++) {
particles.push(createVector(random(width), random(height)));
}
}
function draw() {
for (let particle of particles) {
let angle = noise(particle.x * 0.01, particle.y * 0.01) * TWO_PI * 2;
let velocity = p5.Vector.fromAngle(angle);
particle.add(velocity);
// Wrap around
if (particle.x < 0) particle.x = width;
if (particle.x > width) particle.x = 0;
if (particle.y < 0) particle.y = height;
if (particle.y > height) particle.y = 0;
circle(particle.x, particle.y, 2);
}
}
Parametrik Tasarım
Parametreleri değiştirerek sonucu kontrol etme.
let GRID_SIZE = 20; // Değiştirilebilir parametre
let COLOR_PALETTE = ['#FF6B6B', '#4ECDC4', '#45B7D1'];
function setup() {
createCanvas(800, 800);
background(255);
let cellSize = width / GRID_SIZE;
for (let i = 0; i < GRID_SIZE; i++) {
for (let j = 0; j < GRID_SIZE; j++) {
fill(random(COLOR_PALETTE));
rect(i * cellSize, j * cellSize, cellSize, cellSize);
}
}
}
Parametre değiştir → Tamamen farklı eser
Seed (Tohum) Kavramı
Aynı seed → Aynı "rastgele" sonuç
randomSeed(12345); // Seed değeri
noiseSeed(12345);
// Şimdi her çalıştırmada aynı sonuç
Kullanım:
- Eseri tekrar üretebilme
- NFT'lerde tokenID = seed
- Debuglama
Generative Art Örnekleri
Örnek 1: Mondrian Tarzı Grid
function setup() {
createCanvas(800, 800);
background(255);
noLoop();
drawMondrian(0, 0, width, height, 4);
}
function drawMondrian(x, y, w, h, depth) {
if (depth <= 0 || (w < 100 && h < 100)) {
// Fill with random Mondrian color
let colors = [
color(255, 0, 0),
color(0, 0, 255),
color(255, 255, 0),
color(255)
];
fill(random(colors));
rect(x, y, w, h);
stroke(0);
strokeWeight(8);
noFill();
rect(x, y, w, h);
return;
}
if (random() > 0.5) {
// Vertical split
let splitX = random(0.3, 0.7) * w;
drawMondrian(x, y, splitX, h, depth - 1);
drawMondrian(x + splitX, y, w - splitX, h, depth - 1);
} else {
// Horizontal split
let splitY = random(0.3, 0.7) * h;
drawMondrian(x, y, w, splitY, depth - 1);
drawMondrian(x, y + splitY, w, h - splitY, depth - 1);
}
}
Örnek 2: Circle Packing
let circles = [];
function setup() {
createCanvas(800, 800);
background(255);
}
function draw() {
for (let i = 0; i < 10; i++) {
let newCircle = {
x: random(width),
y: random(height),
r: 5
};
let overlapping = false;
for (let circle of circles) {
let d = dist(newCircle.x, newCircle.y, circle.x, circle.y);
if (d < newCircle.r + circle.r) {
overlapping = true;
break;
}
}
if (!overlapping) {
circles.push(newCircle);
}
}
// Grow circles
for (let circle of circles) {
let growing = true;
for (let other of circles) {
if (circle !== other) {
let d = dist(circle.x, circle.y, other.x, other.y);
if (d < circle.r + other.r + 2) {
growing = false;
break;
}
}
}
if (growing) {
circle.r += 0.5;
}
}
background(255);
for (let circle of circles) {
fill(random(255), random(255), random(255), 100);
stroke(0);
ellipse(circle.x, circle.y, circle.r * 2);
}
}
NFT ve Generative Art
On-Chain Generative Art
Art Blocks platformu:
- Kod blockchain'de saklanır
- Mint esnasında çalışır
- Token hash = seed
Avantajları:
- Tamamen decentralized
- Kod herkese açık
- Kalıcı
Tyler Hobbs - Fidenza:
- 999 unique outputs
- Her biri $500k+ değere ulaştı
Araçlar ve Kütüphaneler
Processing / p5.js
Zaten ele aldık.
Cables.gl
Node-based visual programming.
Houdini
3D procedural generation (VFX endüstrisi).
TouchDesigner
Real-time generative graphics, VJ'ler için.
Nannou (Rust)
Performanslı, modern generative framework.
İlham Kaynakları
Sanatçılar
Tyler Hobbs
- tylerxhobbs.com
- Fidenza, QQL
Manolo Gamboa Naon
- Instagram: @manoloide
- Geometrik, vibrant renkler
Andreas Wannerstedt
- Satisfying loops
- Instagram: @wannerstedt
Zach Lieberman
- Daily sketches
- Instagram: @zach.lieberman
Galeriler
- OpenProcessing.org: Binlerce örnek kod
- Fxhash.xyz: Tezos NFT platformu
- ArtBlocks.io: Ethereum generative NFT
Sonuç
Generative Art:
- Algoritma + Rastgelelik + Estetik
- Sanatçı sistem tasarlar, sistem eser üretir
- Sonsuz varyasyon potansiyeli
Başlangıç İpuçları:
- Basit kurallarla başlayın
- Parametreleri deneysel olarak değiştirin
- Başkalarının kodunu inceleyin
- Paylaşın ve feedback alın
Unutmayın: En güzel generative art eserleri, basit kuralların beklenmedik şekilde etkileşime girmesinden doğar.
Şimdi editörü açın ve ilk algoritmanızı yazın!