10 - generative typography
práca s textom a písmom v p5.js
V tejto lekcii sa naučíte, ako pracovať s textom a typografiou v p5.js, a ako vytvoriť animované a generatívne efekty. Čaká vás aj niekoľko úloh na experimentovanie.
Prezentácia
Na úvod si stiahnite font:
Krok 1: Zobrazenie textu
- Vytvorte jednoduchý sketch: 
function setup() {
  createCanvas(800, 400);
  textSize(48);
  textAlign(CENTER, CENTER);
  text("Ahoj, svet!", width / 2, height / 2);
}- Vysvetlenie: - textSize()nastavuje veľkosť textu.
- textAlign()definuje zarovnanie textu (horizontálne a vertikálne).
 
Krok 2: Dynamický text
- Použite myš pre dynamické ovládanie: 
function setup() {
  createCanvas(800, 400);
  textSize(48);
  textAlign(CENTER, CENTER);
}
function draw() {
  background(30);
  fill(lerpColor(color("red"), color("blue"), mouseX / width));
  text("Ahoj svet", mouseX, mouseY);
}- Tipy: - lerpColor()interpoluje medzi dvoma farbami.
- Myš kontroluje pozíciu a farbu textu. 
 
Krok 3: Animovaný text
Naučiť sa, ako pracovať s jednotlivými znakmi textu a animovať ich nezávisle
let myFont;
function preload() {
  myFont = loadFont('FiraCode-Regular.ttf');
}
function setup() {
  createCanvas(windowWidth, windowHeight);
  textFont(myFont);
  textSize(64);
  textAlign(CENTER, CENTER);
}
function draw() {
  background(30);
  fill(255);
  let txt = "Ahoj svet!";
  let baseX = width / 2 - textWidth(txt) / 2; // Začiatočná X súradnica textu
  let baseY = height / 2;
  for (let i = 0; i < txt.length; i++) {
    let charWidth = textWidth(txt[i]);
    let x = baseX + i * charWidth; // X pozícia znaku
    let y = baseY + sin(frameCount * 0.1 + i * 0.5) * 20; // Animovaná Y pozícia
    text(txt[i], x, y);
  }
}
Krok 4: práca so samotnou typografiou:
Cieľom tohto kroku je ukázať, ako možno Perlin noise použiť na plynulé a organické animácie textu.
Krok za krokom:
- Pridanie Perlin Noise do polohy jednotlivých znakov: - Použijeme funkciu - noise()na modifikáciu pozícií znakov textu.
- Každý znak dostane unikátne hodnoty na základe jeho indexu a času. 
 - let font; let points; let time = 0; function preload() { font = loadFont('Roboto-Regular.ttf'); } function setup() { createCanvas(800, 400); textFont(font); textSize(128); fill(255); noStroke(); points = font.textToPoints("Ahoj svet", 100, 200, 128, { sampleFactor: 0.2, }); } function draw() { background(0); for (let i = 0; i < points.length; i++) { let p = points[i]; // Použitie noise pre jemný pohyb let nX = noise(p.x * 0.01, p.y * 0.01, time) * 20; let nY = noise(p.y * 0.01, p.x * 0.01, time) * 20; let x = p.x + nX; let y = p.y + nY; ellipse(x, y, 5, 5); } // Posun v čase pre animáciu time += 0.01; }
- Vysvetlenie kódu: - textToPoints: Táto funkcia konvertuje text na body (vektory), ktoré môžeme upraviť.
- noise(): Používame Perlin noise na plynulé animácie.
- time: Časová premenná sa posúva každým frame-om, čím vzniká ilúzia pohybu.
 
- Tipy: - Pridanie polopriesvitného pozadia - background(0, 20);
- Použitie väčších bodov 
- Umožnite používateľovi zadať vlastný text 
 
Last updated

