TP Real-Time 3D flocking on GPU

Forum per: Modellazione, Texturing, Animazione, Composting e tutto quello che riguarda il normale utilizzo di Cinema4D.

Moderatori: Arkimed, natas, visualtricks, cappellaiomatto

Rispondi
  • Advertising
Avatar utente
abe3d
Messaggi: 1117
Iscritto il: lun dic 07, 2009 1:48 pm

TP Real-Time 3D flocking on GPU

Messaggio da abe3d »

Oggi vi presento la mia nuova frontiera nella simulazione di creature artificiali.
Rivisitando la classica programmazione di script ed espressioni in <Python per cinema4d> con librerie esterne, ho realizzato il floccaggio 3D in tempo reale abbinando Thinking Particles (TP) alla potenza di una GPU NVIDIA.
TP offre un controllo senza precedenti su ogni aspetto del comportamento delle particelle grazie al codice Python. Completamente flessibile e non vincolato da nodi predefiniti permette di creare qualsiasi comportamento desiderato, dalla fisica realistica all'intelligenza artificiale. Le sue prestazioni tuttavia dipendono in gran parte dall'abilità del programmatore nell'ottimizzare il codice.
La GPU accelera drasticamente i calcoli rispetto alla CPU permettendo di visualizzare in tempo reale un comportamento fluido e interattivo delle particelle, offrendo un feedback immediato all'animatore. Gestire un numero elevato di particelle simulando migliaia di boid diventa finalmente possibile su TP.

Parametri della simulazione di Floccaggio:
Separazione: I boid evitano collisioni reciproche mantenendo una distanza minima prestabilita.
Allineamento: I boid tendono ad eguagliare la velocità e la direzione dei loro vicini.
Coesione: I boid si raggruppano verso il centro di massa del loro gruppo.
Confini: I boid rimangono all'interno del dominio di simulazione con un comportamento naturale.
Limiti di velocità: La velocità è limitata all’interno di un range prestabilito per un movimento realistico.
Preda: I boid possono seguire obiettivi in movimento in relazione alla distanza.
Ostacoli: I boid interagiscono con gli ostacoli in modo realistico.
Tutti i parametri sono regolati da fattori di risposta per ricreare una reazione fluida.
Sono possibili ulteriori implementazioni, come il tracking ray di ostacoli complessi che consiste nel prevedere la via di fuga più attendibile evitando le collisioni, il direction of travel che mantiene un asse di rotazione nella direzione dell’accelerazione e l’arc of vision che limita le interazioni ai soli boid visibili all’interno di una sezione di cerchio, per un maggiore realismo della simulazione.

La simulazione in oggetto è in fase sperimentale e presenta un buon margine di miglioramento per prestazioni e ottimizzazione del codice che sarà pubblicato in seguito su GitHub.
I risultati ottenuti su una macchina specifica* sono comunque notevoli:
Simulazione di 1000 boid in tempo reale con un frame rate stabile di 45 FPS.
Dimostrazione del potenziale di TP e GPU per il floccaggio 3D in tempo reale.
Immagine 2024-03-09 002119.png
Immagine 2024-03-09 002119.png (97.84 KiB) Visto 695 volte
Su macchine più performanti e con BUS più veloci, ci si può aspettare un frame rate più elevato e la gestione di un numero ancora maggiore di boid. Nonostante il palese incremento prestazionale, come si evince dal grafico in allegato, il grande vantaggio nell'uso della GPU si avverte con l'aumentare del numero di particelle ma questo viene inficiato dalla fase di aggiornamento che deve comunque avvenire tramite la CPU e il codice c4dpython canonico.
Per concludere, l'abbinamento di Thinking Particles e GPU rappresenta un approccio potente e versatile per la simulazione di floccaggio 3D in Cinema 4D.

Vi ringrazio per l'attenzione.
Al link un breve video dimostrativo https://youtu.be/DhI1yZ_azUI

*Test eseguiti su:
Intel(R) Xeon(R) CPU E5-4650 0 @ 2.70GHz
Processori fisici: 1
Cores: 8
Processori logici: 16
Memoria 32GB
SSD
GPU NVIDIA GeForce RTX 2070 Super
Ultima modifica di abe3d il sab mar 23, 2024 9:05 am, modificato 1 volta in totale.
Se le dimensioni del seno di una donna non sono direttamente proporzionali alla sua massa corporea, allora sono sicuramente inversamente proporzionali alla sua intelligenza.
Avatar utente
hurricane
Messaggi: 2988
Iscritto il: sab ott 29, 2005 5:44 pm
Località: Sessa Aurunca

Re: Real-Time 3D flocking on GPU

Messaggio da hurricane »

Ogni volta rimango senza parole! :o
Cioé tu hai portato il calcolo di Thinking Particles, che mi sembra di ricordare Maxon ha sempre destinato alla CPU, tramite Phyton sulla GPU giusto?
Vabbuò ma si tropp gruoss!!! :!: :!:

Il problema è che secondo me TP è stato abbandonato da un pezzo, non so da quanto ma sul sito già si sono affidati a terze parti: https://www.maxon.net/it/cinema-4d/feat ... ntegration

Cià Genio!! ;)
L'Uragano si è fermato --- RIP
"Se c'è una magia nella boxe è la magia di combattere battaglie al di là di ogni sopportazione, al di là di costole incrinate, reni fatti a pezzi e retine distaccate. È la magia di rischiare tutto per realizzare un sogno che nessuno vede tranne te."
I miei modelli 3D - www.archilovers.com - www.tappezzeriaburicco.com
Avatar utente
ocman
Messaggi: 1487
Iscritto il: gio ago 26, 2010 8:39 pm
Località: Verona

Re: Real-Time 3D flocking on GPU

Messaggio da ocman »

Ti faccio i complimenti per il risultato che hai ottenuto e ammetto che mi impressiona la tua familiarità con la programmazione. Forse è perché io non ci capisco nulla purtroppo...
Bravo davvero.
Avatar utente
abe3d
Messaggi: 1117
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Real-Time 3D flocking on GPU

Messaggio da abe3d »

hurricane ha scritto: mer mar 13, 2024 5:45 pm
Cioé tu hai portato il calcolo di Thinking Particles, che mi sembra di ricordare Maxon ha sempre destinato alla CPU, tramite Phyton sulla GPU giusto?

Il problema è che secondo me TP è stato abbandonato da un pezzo, non so da quanto ma sul sito già si sono affidati a terze parti: https://www.maxon.net/it/cinema-4d/feat ... ntegration
SI, bello vero? e non sai la soddisfazione nel vedere le particelle sfrecciare a quella velocità!!
Naturalmente (come hai notato) si parla di accelerare parte del codice, quello strettamente relativo ai calcoli di interazione, anche se le limitazioni sono tante e a volte invalicabili.
Sto assemblando adesso la nuova workstation e immagino che le prestazioni saranno notevolmente migliorate e insieme al codice ottimizzato potrò affermare (come dico da sempre) che concettualmente la maxon ha fatto un grande errore a dismettere uno strumento così potente , certo, parlando di workflow tipo x-particles, nessuno si aspetta che TP ne possa eguagliare le dinamiche, ma forse (e dico forse) le prestazioni si. La differenza sta proprio però nella flessibilità di TP, sfido chiunque a "programmare" una " intelligenza" di entità particellari con i sistemi a nodi e/o con i modificatori... :!:

@ocman Grazie per i complimenti, anche se non mi ritengo un programmatore, mi piace molto "vincere" sfide con me stesso apparentemente impossibili (e cinema ce ne propone in gran quantità :lol: :lol: )
Se le dimensioni del seno di una donna non sono direttamente proporzionali alla sua massa corporea, allora sono sicuramente inversamente proporzionali alla sua intelligenza.
Avatar utente
hurricane
Messaggi: 2988
Iscritto il: sab ott 29, 2005 5:44 pm
Località: Sessa Aurunca

Re: Real-Time 3D flocking on GPU

Messaggio da hurricane »

Eh lo so ma tu che ne hai le capacità riesci a sfruttarla questa flessibilità, ma agli altri bisogna rendere il lavoro più facile possibile!! ;)

Comunque sei un pazzo!! :lol: :lol: :lol:
L'Uragano si è fermato --- RIP
"Se c'è una magia nella boxe è la magia di combattere battaglie al di là di ogni sopportazione, al di là di costole incrinate, reni fatti a pezzi e retine distaccate. È la magia di rischiare tutto per realizzare un sogno che nessuno vede tranne te."
I miei modelli 3D - www.archilovers.com - www.tappezzeriaburicco.com
Sirio76
Messaggi: 2576
Iscritto il: dom nov 24, 2013 3:24 pm

Re: Real-Time 3D flocking on GPU

Messaggio da Sirio76 »

Secondo me dovresti proporti per lavorare alla Maxon, hanno spessissimo posizioni aperte e uno col tuo talento potrebbe senz'altro trovare il suo posto;)

https://www.maxon.net/en/about-maxon/careers
Avatar utente
abe3d
Messaggi: 1117
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Real-Time 3D flocking on GPU

Messaggio da abe3d »

Ciao sirio, grazie per la fiducia e per il link, sarebbe un sogno, anche se credo di dover sperimentare ancora in sordina per potermi definire all'altezza, le mie sono (come afferma Hurricane) delle pazzie che vengono fuori da un'idea, ma anche se ammetto di essere appassionato di queste cose assurde, ce ne vuole ancora di strada per definirmi un programmatore, nella maggioranza dei casi sono costretto a studiare interi argomenti prima di trovare le soluzioni...
Vado in controtendenza con le necessità del mercato dove l'importante non è trovare il modo giusto ma é soprattutto fare le cose in fretta
Se le dimensioni del seno di una donna non sono direttamente proporzionali alla sua massa corporea, allora sono sicuramente inversamente proporzionali alla sua intelligenza.
Avatar utente
abe3d
Messaggi: 1117
Iscritto il: lun dic 07, 2009 1:48 pm

Re: Real-Time 3D flocking on GPU

Messaggio da abe3d »

...Comunque, dopo la mia bella dose di pessimismo giornaliero, vettorizzando alcune funzioni (metodi) del codice ho portato il frame rate con 1000 particelle a 50 FPS ,corrono e si intersecano come anguille impazzite, non vedo l'ora di provarlo sulla nuova macchina...
Se le dimensioni del seno di una donna non sono direttamente proporzionali alla sua massa corporea, allora sono sicuramente inversamente proporzionali alla sua intelligenza.
Avatar utente
abe3d
Messaggi: 1117
Iscritto il: lun dic 07, 2009 1:48 pm

Re: TP Real-Time 3D flocking on GPU

Messaggio da abe3d »

...eeeee BOOM!
Questa è solo un'anteprima, il grafico mostra l'incremento raggiunto nei test che sto effettuando su CUDA-GPU, il livello di miglioramento è evidente e si può notare il guadagno relativo all'aumentare del numero di particelle.

Come anticipato, i calcoli effettuati sulla GPU devono tornare all'host (CPU) per aggiornare la posizione delle particelle e la viewport di cinema, quindi, sono abbastanza sicuro di non poter andare oltre con le prestazioni a causa del collo di bottiglia che si viene a creare con il passaggio CUP->GPU->CPU, ma già così credo di potermi ritenere più che soddisfatto.

Purtroppo, avendo modificato profondamente il codice, non posso più fare il paragone diretto con le prestazioni della CPU, quindi per praticità, ho aggiunto i nuovi risultati al vecchio grafico)
G2.png
G2.png (142.28 KiB) Visto 494 volte
A presto per i dettagli (e qualche prova)
Se le dimensioni del seno di una donna non sono direttamente proporzionali alla sua massa corporea, allora sono sicuramente inversamente proporzionali alla sua intelligenza.
  • Advertising
Rispondi