Domanda

I studiava Rumore di Perlin attraverso alcuni esempi @ http://dindinx.net /OpenGL/index.php?menu=exemples&submenu=shaders e non poteva fare a notare che il suo make3DNoiseTexture() negli usi perlin.c noise3(ni) invece di PerlinNoise3D(...)

Ora, perché è quello? Non è Perlin Noise dovrebbe essere una sommatoria di diverse frequenze di rumore e ampiezze?

Qestion 2 è quello che fa basamento ni, inci, incj, inck per? Perché utilizzare ni invece di coordinate x, y? Perché è ni incrementate con
ni[0]+=inci;
inci = 1.0 / (Noise3DTexSize / frequency);
Vedo Hugo Elias ha creato la sua Perlin2D con coordinate x, y, e così fa PerlinNoise3D (...).

Grazie in anticipo:)

È stato utile?

Soluzione

Adesso capisco perché e ho intenzione di rispondere alla mia domanda, nella speranza che aiuta altre persone.

Il rumore di Perlin è in realtà una sintesi di rumori di gradiente. Nel suo processo di produzione, è necessario calcolare il prodotto scalare di un vettore che punta da uno degli angoli pavimentazione del punto di ingresso al punto di ingresso stessa con il vettore gradiente casuale generata.

Ora, se il punto di ingresso fosse un numero intero, come ad esempio le coordinate xyz di una texture che si desidera creare, il prodotto scalare sarebbe sempre tornare 0, che darebbe un rumore piatto. Così, invece, usiamo inci, incj, inck come un indice alternativo. Sì, solo un indice, niente altro.

Ora tornando alla domanda 1, ci sono due metodi per implementare Rumore di Perlin:
1.Calculate i valori di rumore separatamente e memorizzarli nelle fessure RGBA nella texture
2.Synthesize i rumori prima mano e memorizzarli in uno degli slot RGBA nella consistenza

noise3(ni) è l'effettiva attuazione del metodo 1, mentre PerlinNoise3D(...) suggerisce quest'ultimo.

A mio parere personale, il metodo 1 è molto meglio perché si ha molta più flessibilità su come si usa ogni ottava nei vostri shaders.

Altri suggerimenti

La mia ipotesi sulla ragione per l'utilizzo in noise3(ni) make3DNoiseTexture() invece se PerlinNoise3D(...) è che quando si utilizza tale consistenza rumore nella vostra Shader si vuole essere in grado di replicare e modificare la funzionalità di PerlinNoise3D(...) direttamente nello shader.

mia ipotesi per il ragionamento dietro ni, inci, incj, inck è che con x, y, z del volume direttamente non dare un buon risultato in modo scalando il rumore con la frequenza invece è possibile regolare la risoluzione del rumore indipendentemente dalla dimensione del volume.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top