CG HW3: Extra credit

by Luca Sorace 1910722

Ecco la lista di parametri aggiunti al programma:

Nome valore Tipo Range di accettazione Descrizione
scale float 0 - +inf Cambia la scala del rumore dentro terrain, displacement e hair
height float 0 - +inf Definisce l’altezza massima dei vertici che spostiamo casualmente dentro terrain e displacement
u float 0 - 1 Controlla il parametro u del voronoise dentro terrain e displacement, ovvero la quantità di jitter nella griglia del noise. Più è vicino ad 1 e più la griglia usata sarà quella del Voronoi, più è vicino a 0 e più la griglia usata sarà quella del Noise
v float 0 - 1 Controlla il parametro v del voronoise dentro terrain e displacement, ovvero la “smoothness” del noise/voronoi
cellSize float 0 - +inf Controlla il parametro cell_size di make_hash_grid(), usato per il sample elimination dentro hair
radious flaot 0 - +inf Controlla il raggio entro il quale altri sample vengono considerati vicini al sample corrente, usato per il sample elimination dentro hair
alpha float 0 - +inf Esponente usato nel calcolo dei pesi dei sample, usato per il sample elimination dentro hair
terrainAlgorithm String base, voronoise Scegli l’algoritmo di noise da utilizzare dentro terrain
displacementAlgorithm String base, voronoise, smoothVoronoi, cellNoise Scegli l’algoritmo di noise da utilizzare dentro displacement
hairAlgorithm String base, sampleElimination Scegli l’algoritmo di noise da utilizzare dentro hairAlgorithm
grassAlgorithm String base Scegli l’algoritmo di noise da utilizzare dentro grassAlgorithm

Voronoise (Facile)

Voronoise è un algoritmo che combina le prioprietà di Voronoi e del Noise normale ed è utilizzato per nascondere gli artefatti della griglia alla “base” del normale Noise

Reference

https://www.iquilezles.org/www/articles/voronoise/voronoise.htm

Immagini

--terrainAlgorithm voronoise --u 1 --v 0 --scale 100 --height 0.0625

--terrainAlgorithm voronoise --u 1 --v 0.625 --scale 100 --height 0.0625

--displacementAlgorithm voronoise --u 0 --v 0

--displacementAlgorithm voronoise --u 0 --v 1

--displacementAlgorithm voronoise --u 1 --v 0

--displacementAlgorithm voronoise --u 1 --v 1

Cellnoise (facile)

Con l’algoritmo di Voronoi normale le diverse celle sono separate in maniera irregolare. Cellnoise risolve questo problema, rendendo quella separazione sempre della stessa dimensione

Reference

https://www.iquilezles.org/www/articles/voronoilines/voronoilines.htm

Immagini

Smooth Voronoi (facile)

Elimina la discontinuità e quelle linee “dure” che separano le varie celle del Voronoi, creando una funzione simile a min() (Usato, appunto, dentro il Voronoi), ma che sia effettivamente una funzione continua

Reference

https://www.iquilezles.org/www/articles/smoothvoronoi/smoothvoronoi.htm

Immagini

Sample elimination (medio)

Se dovessimo generare casualmente nella maniera “classica” un set di sample, arriveremmo ad avere dei punti “molto vicini” tra di loro, ed altri “molto distanti”. Un modo per uniformare e rendere “più ordinata” la generazione randomica di questi punti è quella di utilizzare i dischi di Poisson, che servono appunto per generare sample circa equidistanti tra di loro. Il sample elimination è un modo molto veloce per generare dischi di Poisson.

Algoritmo

Reference

http://www.cemyuksel.com/research/sampleelimination/sampleelimination.pdf
http://www.cemyuksel.com/cyCodeBase/soln/poisson_disk_sampling.html

Immagini

A sinistra, normale sample shape con 500 sample, a destra sample elimination con 500 sample finali e 2500 sample generati inizialmente
--hairlen 0.005 --hairstr 0.00000000001 --hairnum 500 --hairgrav 0 --radious 0.05

A sinistra, normale sample shape con 2500 sample, a destra sample elimination con 2500 sample finali e 12500 sample generati inizialmente
--hairlen 0.005 --hairstr 0.00000000001 --hairnum 2500 --hairgrav 0 --radious 0.05

A sinistra, normale sample shape con 100000 sample, a destra sample elimination con 100000 sample finali e 500000 sample generati inizialmente
--hairlen 0.004 --hairstr 0 --hairnum 100000 --hairgrav 0.00004 --hairstep 8 --radious 0.05