Falsificazione di un oggetto 3D per ridurre il numero di poligoni


20

Sto realizzando un gioco in unità e sto costruendo una recinzione nel frullatore, ma voglio che sia il più basso poli possibile. Il mio design originale era troppo alto, quindi ho pensato: se potessi semplicemente usare un cubo con alcune trame sapientemente organizzate. Così:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Puoi vedere che i bordi sono tutti belli ma le sezioni interne non lo sono, cioè non c'è niente lì ... quindi qualcuno sa se è possibile falsificare quelle facce che lo farebbero sembrare una mesh completa. Ecco cosa sto cercando di ottenere:

inserisci qui la descrizione dell'immagine


7
Conto 52 vertici su quel recinto. Non sono così tanti.
Pharap,

1
@Pharap Ma tieni a mente cosa succede quando metti migliaia di copie di questa mesh sul bordo del livello.
Philipp,

5
@Philipp Se Unity sta usando correttamente Vertex Buffer Objects e simili tecniche di ottimizzazione, questo non dovrebbe essere un problema. Potresti sempre usare uno sprite cartellone con alfa se sei così preoccupato. O meglio ancora, esegui uno sprite del cartellone a distanza e rendi la mesh corretta quando il giocatore si avvicina abbastanza. E dubito sinceramente che migliaia di recinti vengano disegnati sullo schermo contemporaneamente. Anche se ci sono più di 9000 recinzioni posizionate nel mondo, sospetto che una grande quantità di quelle verranno abbattute. Hai fatto un benchmark o stai solo facendo ipotesi sulle prestazioni?
Pharap,

6
Stai sviluppando per dispositivi mobili o per PC / console? Almeno nelle GPU moderne (di età pari o inferiore a 5 anni), il modello a 52 vertici è probabilmente più economico rispetto a eseguire un blending / mascheramento alfa. Dipende da molti fattori (copertura dello schermo, GPU, pixel shader o collo di bottiglia di rasterizzazione, ecc.), Ma l'utilizzo di maschere alfa comporta sempre un sovraccarico. Probabilmente dovresti fare un benchmark prima di ottimizzare.
Tobias B,

2
Un'istanza in cui potresti non voler fare questo, tuttavia, potrebbe essere se hai bisogno di ignorare il rilevamento delle collisioni in quegli spazi, come se avessi provato a sparare attraverso gli spazi in alcuni oggetti (in alcuni tiratori in prima persona) e un "proiettile -hole "( decalcomania ) è apparso sullo" spazio vuoto "( modello ).
DoubleDouble

Risposte:


26

Se capisco correttamente cosa vuoi ottenere, stai cercando il concetto di "impostori". Queste sono precisamente rappresentazioni 2D di oggetti 3D, utilizzate per ridurre la complessità geometrica del rendering dell'ambiente 3D.

Puoi considerarli praticamente come immagini degli oggetti 3D che vengono utilizzati come trame di oggetti 2D. Il riferimento canonico per quelli è probabilmente il capitolo 21 del libro GPU Gems 3, chiamato "True Impostors". È disponibile pubblicamente qui . Un altro riferimento importante è il capitolo 5.7 del libro Game Programming Gems v.2, chiamato "Imposters: Adding Clutter", in Game Programming Gems 2, Tom Forsyth ".

E possono essere generati uniformemente al volo, per far fronte a piccoli cambiamenti nell'angolo di vista o con contenuti generati dal runtime. Dai un'occhiata al fantastico articolo di Gamasutra sull'argomento, chiamato "Imposter 2D dinamici: un'implementazione DirectX 9 semplice ed efficiente" . Un ulteriore sviluppo del concetto è apparso su "Billboard Clouds for Extreme Model Simplification" .

Per una spiegazione delicata del concetto, consultare questo post di blog: http://blog.wolfire.com/2010/10/Imposters

Infine, mentre stai usando Unity, ho sentito parlare di un plugin che automatizza tale processo. Si chiama Real Imposters LOD System .

AGGIORNAMENTO: per completezza, ho pensato di aggiungere due cose che mi sono ricordato di recente. Il primo è: c'è un ottimo video GDC in cui il direttore artistico di SimCity spiega come hanno fatto (pesante) uso degli impostori per ottenere risultati grafici di prim'ordine per quel gioco: "GDC - Costruire SimCity: l'arte al servizio della simulazione". . In secondo luogo, per chi è interessato a Unreal Engine, ha una funzione integrata per implementare gli impostori, come si può vedere nei documenti


Quindi, se creo il modello di recinzione, quello completo e utilizzo il sistema LOD Real Imposters, funzionerebbe secondo te?
mr-matt,

5
@MatthewInglis Non posso parlarti esattamente del plug-in: è da un po 'che non utilizzo Unity, quindi non posso controllare. Ma in linea di principio, sì, dovrebbe creare una versione sprite 2D dell'oggetto 3D completamente dettagliato. Dovresti giocare con le configurazioni, però. Se prevedi di acquistare il plug-in, prendi in considerazione di leggere prima i documenti ( drive.google.com/file/d/0B3GMQtflbloSeHhvUGJmcjluX3M/view ) e di contattare prima l'autore con domande specifiche che potresti avere sul loro prodotto.
Ma

0

Se non hai bisogno di alcuna interazione tra il recinto, intendo, per gli spazi vuoti, userei un semplice rettangolo trasparente con una trama stampata.

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.