2011-09-22 11 views
6

Sto utilizzando con successo il disturbo Perlin per generare terreno, nuvole e alcune altre cose interessanti. Comunque, ora sto provando ad animare un gruppo di insetti volanti (in particolare le lucciole), e mi è stato suggerito di usare il rumore Perlin anche per questo. Tuttavia, non sono davvero sicuro su come procedere.Perlin noise for motion?

La prima cosa che mi venne in mente fu, data una mappa acustica in questo modo:

  1. Assegnare ogni lucciola una posizione iniziale a caso, la velocità e l'accelerazione angolare.
  2. Sul fotogramma, far avanzare la posizione della mosca seguendo il suo vettore di direzione.
  3. Leggere la mappa del rumore nella nuova posizione e utilizzarla per regolare l'accelerazione angolare, causando il "volo" verso verso i pixel più chiari.
  4. Regola nuovamente l'accelerazione angolare in prossimità di altre mosche per evitare di raggrupparle attorno ai massimi locali.

Tuttavia, questo non copre i casi in cui le mosche raggiungono il bordo della mappa, o casi in cui potrebbero finire in orbita attorno a un singolo punto. Il secondo caso potrebbe non essere un grosso problema, ma non sono sicuro di un modo affidabile per farli girare per evitare collisioni con il bordo della mappa.

Suggerimenti? Tutorial o documenti (in inglese, per favore)?

risposta

6

Ecco una buona fonte di rumore perlin 2D. È possibile seguire gli stessi principi, ma invece di creare una griglia 2D di gradienti, è possibile creare una serie di gradienti 1D. Puoi usarlo per creare il tuo rumore per un particolare asse.

Basta seguire questa ricetta ed è possibile creare simili funzioni di disturbo perlin per ciascuno degli altri assi! Combina questi movimenti e dovresti avere un bell'aspetto sulle tue mani. (Si potrebbe anche utilizzare queste funzioni di disturbo come accellerations o velocità casuali. Dal momento che la funzione del disturbo Perlin è globalmente monotona, le vostre mosche non sarà razzo fuori per distanze folli.)

http://webstaff.itn.liu.se/~stegu/TNM022-2005/perlinnoiselinks/perlin-noise-math-faq.html

Se siete curiosi di sapere altri tipi di movimento, suggerirei Brownian Motion. Questo è lo stesso tipo di movimento che le particelle di polvere mostrano quando galleggiano nella tua stanza. Questo articolo si avvicina alla matematica più interessante alla fine, ma se siete tutti familiari con Matlab, le prime serie di istruzioni dovrebbero essere abbastanza facili da capire. In caso contrario, google le funzioni e trovare i loro equivalenti nativi per il proprio ambiente (o crearli da soli!) Questo sarà un po 'più realistico, e molto più veloce per calcolare di quanto Perlin rumore

http://lben.epfl.ch/files/content/sites/lben/files/users/179705/Simulating%20Brownian%20Motion.pdf

Buon volo!

+0

Quel momento imbarazzante in cui rispondi a una domanda di un anno. – Peaches491

+0

È una buona risposta, però. Meglio di quello che ho finito, e tornerò utile in futuro. Grazie. –

1

Forse stai cercando dei boid?

Wikipedia page

Non dispongono di disturbo Perlin nel concetto originale, forse si potrebbe utilizzare il rumore per generare attrattori o repulsori, come si sta cercando di fare con il 'volare a più leggera' il comportamento.

PS: la pagina collegata sopra presenta un collegamento correlato a Firefly algorithm, forse ti interesserà?

+0

Ho visto l'algoritmo della lucciola (ben chiamato per facilitare la ricerca su google), ma era anche alla ricerca di qualcosa di meno specifico della lucciola. Daremo un'occhiata ai boid. –

+0

È davvero fantastico fare qualsiasi simulazione di tipo flock, che si tratti di uccelli, pesci, ecc ... se si vuole evitare la collisione. Se vuoi qualcosa che ti sembra caotico, cioè non tutti gli elementi tendenti a una direzione unificata, puoi semplicemente azzerare l'influenza della forza di "coesione". – jv42