Come posso simulare il vetro in frantumi?


10

Devo fare una simulazione con la pietra lanciata attraverso una finestra di vetro. Come posso farlo?

Voglio dire, stavo pensando di realizzare un modello 3D di pietra e vetro in 3D Studio Max 2012, frantumare il vetro ed esportare entrambi in XNA 4.0 come modelli .x. Quindi in XNA realizza l'animazione - scrivendo il mio motore fisico. È possibile in questo modo? È possibile distruggere il vetro in XNA dopo l'impatto o dovrei farlo in 3DS Max? "Distruggendo il vetro" intendo scollegare alcuni frammenti di vetro precedentemente frantumati l'uno dall'altro, perché a seconda della velocità di avvio e del peso della pietra e della resistenza (durezza?) Del vetro (tutti definiti dall'utente) i bit si disconnetteranno da l'un l'altro in modi diversi.

Risposte:


5

Il frantumazione di Voronoi è un approccio che crea frantumazioni abbastanza realistiche per es. vetro temperato che ha la straordinaria capacità di frantumarsi in piccoli frammenti tipicamente convessi a causa di cambiamenti strutturali del vetro durante la produzione. Inoltre, dato che hai una lastra di vetro, avrai solo bisogno dell'implementazione Voronoi 2D, non 3D.


3

Generare automaticamente pezzi in frantumi da una mesh inizialmente intera è piuttosto complicato, penso. Se sei solo interessato a simulare la dinamica dei frammenti mentre volano in aria, si scontrano ecc., Allora inizierei con una mesh pre-frantumata, usando vincoli fragili o qualcosa per tenere insieme i pezzi fino a quando non vengono tirati a parte con forza sufficiente.


Ciao Nathan (di nuovo), hai lavorato su questo compito dopo il 2011? Puoi dare altri suggerimenti? Thx
karlphillip

@karlphillip Ho lavorato su una demo usando PhysX Destruction , anche se personalmente ho fatto solo il rendering di cose, non di fisica su quel progetto. La tecnologia PhysX funziona generando pezzi pre-frantumati in uno strumento DCC e scambiandoli con la maglia non rotta quando si verificano danni.
Nathan Reed,

3

Creare un riquadro non frantumato e un riquadro in frantumi. Quando si ottiene la collisione, disattivare la versione non distrutta e iniziare a utilizzare il riquadro in frantumi.

Se stai lanciando una pietra (di dimensioni piuttosto coerenti) su una finestra, puoi fare molta strada con il tuo modello 3d del riquadro rotto (modella i frammenti in posizione nel riquadro e quindi esegui una semplice simulazione fisica su ciascuno dei i frammenti per simularli cadendo / volando). A meno che la fotocamera non sia molto vicina (o al rallentatore), non dovresti avere bisogno di fare collisioni tra i pezzi - solo con la geometria circostante (piano terra?). Non dimenticare di spruzzare alcuni effetti particellari per la nuvola di particelle di vetro più piccole che accompagnano la frantumazione.

Se fai il riquadro rotto supponendo che la pietra stia colpendo il centro, puoi ridimensionare i pezzi in base alla posizione effettiva del colpo per ottenere una pausa piuttosto bella per la maggior parte dei colpi.


2

Se scarichi la Bullet Physics Library ha un campione che include vetri infranti e avrai bisogno di qualcosa come proiettili in qualsiasi gioco con vetri infranti.

Modifica: Bullet sarebbe una grande dimostrazione per modellare il tuo motore dopo.


1

Grazie mille per le risposte e l'aiuto inestimabile. Finalmente sono riuscito a costruire il progetto. Ho provato tutti i tuoi suggerimenti e alla fine ho scelto in parte la mia strada per questa simulazione.

Ho usato bulledsharp (wrapper di fisica dei proiettili per c #) per il motore di fisica, ma è importante usare quello più recente, compilato da te stesso con sorgente di proiettili da sourceforge svn e fonti di fisica di proiettili fresche stesse. Non quello precompilato .dll, disponibile per il download da siti Web. La versione precompilata era troppo vecchia per me e non includeva alcune preziose funzionalità sviluppate ulteriormente. Quello che ho anche imparato è che per semplici simulazioni in cui non hai bisogno di grafica avanzata è meglio usare 3dsmax più vecchio, ovvero 2011 (non il più recente 2012), per sviluppare modelli ecc. Principalmente perché ci sono più plugin ed esportatori. Inoltre, è davvero utile dare un'occhiata ai tutorial in tutti i framework disponibili (sharpdx, xna, xna4, slimdx, c ++ e altri).

Alla fine, il mio approccio è stato quello di costruire la parete di vetro usando cubetti davvero piccoli. Ovviamente per far funzionare la simulazione devi avere una macchina davvero potente. Se hai qualcosa di meno potente puoi usare cubi più grandi. È importante realizzare tutti i cubi creati con lo stato insulare dormiente. Ora, ogni pezzo ha la sua rappresentazione in due schiere tridimensionali di carri allegorici. Il numero lì indica qual è la forza della connessione tra due cubi. Quando la pietra viene lanciata e viene rilevata la collisi, la forza viene calcolata per ciascun cubo nel muro (compresa la massa di pietra, e la velocità, la massa del cubo e le dimensioni e la distanza dal centro della collisione) e sottratta dall'array nel cerchio modello simile. I cubi che dopo la sottrazione hanno una forza di connessione pari a zero o inferiore vengono resi attivi. Questo fa muovere i cuccioli.

Questo è. Grazie per l'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.