TP Real-Time 3D flocking on GPU
Moderatori: Arkimed, natas, visualtricks, cappellaiomatto
-
- Advertising
TP Real-Time 3D flocking on GPU
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.
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
Re: Real-Time 3D flocking on GPU
![Surprised :o](./images/smilies/shocked.png)
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!!!
![Exclamation :!:](./images/smilies/greedy.png)
![Exclamation :!:](./images/smilies/greedy.png)
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!!
![Smile ;)](./images/smilies/victory.png)
"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
Re: Real-Time 3D flocking on GPU
Bravo davvero.
Re: Real-Time 3D flocking on GPU
SI, bello vero? e non sai la soddisfazione nel vedere le particelle sfrecciare a quella velocità!!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
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...
![Exclamation :!:](./images/smilies/greedy.png)
@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à
![Laughing :lol:](./images/smilies/haha.png)
![Laughing :lol:](./images/smilies/haha.png)
Re: Real-Time 3D flocking on GPU
![Smile ;)](./images/smilies/victory.png)
Comunque sei un pazzo!!
![Laughing :lol:](./images/smilies/haha.png)
![Laughing :lol:](./images/smilies/haha.png)
![Laughing :lol:](./images/smilies/haha.png)
"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
Re: Real-Time 3D flocking on GPU
https://www.maxon.net/en/about-maxon/careers
Re: Real-Time 3D flocking on GPU
Vado in controtendenza con le necessità del mercato dove l'importante non è trovare il modo giusto ma é soprattutto fare le cose in fretta
Re: Real-Time 3D flocking on GPU
Re: TP Real-Time 3D flocking on GPU
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) A presto per i dettagli (e qualche prova)
-
- Advertising
FOLLOW US