Ga naar hoofdinhoud
BVDART Logo
← Alle gidsenGeneratieve systemen

Perlin-ruis

Perlin-ruis maakt vloeiende ruimtelijke variatie door bijdragen van gradiënten op een rooster te interpoleren.

Bekijk vier gradiënten binnen één ruiscel

Vier richtingen → één waardeStippellijnen: verplaatsing van hoek naar monster
Binnen deze celg · d = gₓdₓ + gᵧdᵧ
Hoekg · dGewicht
(0, 0)0.1770.208
(1, 0)-0.8840.076
(0, 1)0.3800.525
(1, 1)-0.3800.191

fade(t) = 6t⁵ − 15t⁴ + 10t³

fade(x) = 0.267
fade(y) = 0.717

0.1368

Gewogen inproducten × √2. Fade maakt de overgang aan celranden glad; de gradiëntrichtingen maken de variatie.

Probeer dit Verplaats het monster naar een hoek: de ruis wordt daar nul. Beweeg daarna langs een rand en zie hoe twee gewichten overnemen.

Draai de roostergradiënten: hetzelfde monster en dezelfde interpolatiegewichten leveren een veranderend ruisveld. Gebruik een regelaar om het over te nemen.

Wat je kunt proberen
  1. Sleep het monster of gebruik de regelaars x en y.
  2. Ga naar een hoek, verander de gradiënten en volg een rand.
Open in het Lab ↗

Waar je op kunt letten: De tabel verbindt elk gradiëntinproduct met zijn fadegewicht. Op een roosterhoek is de ruis nul; langs een rand dragen alleen de twee aangrenzende hoeken bij.

Zo werkt het

Per monster wordt elke nabije roostergradiënt vermenigvuldigd met de verplaatsing vanaf zijn hoekpunt. Een gladde fadecurve mengt die bijdragen. Naburige posities hangen samen, anders dan onafhankelijke witte ruis. Waarderuis interpoleert juist willekeurige scalaire hoekwaarden.

Frequentie bepaalt hoe snel het veld ruimtelijk varieert. Octaven combineren velden op verschillende schalen. De Lab-implementaties gebruiken gezaaide gradiënten en een quintische fade. De seed kiest de realisatie; parameters bepalen de structuur.

Gebruik het in het Lab

Genereer een veld als bronlaag en drempel het, kleur het via een verloopkaart of neem het in een textuurketen op. Bewaar de seed om het resultaat te herhalen.

Grenzen & verschillen

Samenhangende ruis is geen fotografische textuur. Hoge frequenties kunnen aliasing geven; extra octaven zijn alleen nuttig zolang hun detail bemonsterbaar is.

Verdieping

Hoe het werkt

Uitgevonden door Ken Perlin in 1983 voor de film Tron, genereert Perlin-noise vloeiende pseudowillekeurige waarden door te interpoleren tussen gradientvectoren die op een regelmatig raster zijn geplaatst. Elk rasterpunt krijgt een willekeurige gradient toegewezen, en de noise-waarde op een willekeurig punt wordt berekend door de bijdragen van de omliggende rasterhoeken te mengen.

Kernalgoritme

Voor elk punt P bereken je het inwendig product tussen de gradient van elke hoek en de vector van die hoek naar P, en interpoleer je vervolgens met een vloeiende fade-curve: 6t⁵ − 15t⁴ + 10t³

Ruimtelijke coherentie

In tegenstelling tot witte ruis heeft Perlin-noise ruimtelijke coherentie — nabije punten leveren vergelijkbare waarden op. Deze eigenschap maakt het ideaal voor het simuleren van natuurlijke fenomenen: wolken, terrein-heightmaps, marmertexturen en organische flow fields.

perlin2d.js
// Perlin noise pseudocode
for each point (x, y):
  x0, y0 = floor(x), floor(y)
  g00, g10, g01, g11 = gradients at corners
  d00 = dot(g00, (x-x0, y-y0))
  d10 = dot(g10, (x-x0-1, y-y0))
  // ... blend with fade curve
  return lerp(fade(x-x0), lerp(...), lerp(...))
javascript

Fractale Brownse beweging

In algoritmische kunst fungeert Perlin noise als een fundamenteel bouwblok. Meerdere octaves kunnen gestapeld worden — elk met dubbele frequentie en halve amplitude — een techniek die fractal Brownian motion (fBm) wordt genoemd. Dit levert rijke, gedetailleerde texturen op met structuur op elke schaal, van glooiende heuvels tot fijne oppervlaktekorrel.

Begin met 4–6 octaves en een persistentie van 0,5 voor natuurlijk ogende resultaten. Verhoog het aantal octaves voor fijnere details, verlaag de persistentie voor een gladder resultaat.

Verwante kunstwerken

Verwante Lab-categorieën

Bronnen & naslag

Gids bijgewerkt