Imparare a creare manualmente gli impostori in Unity: come rendere un oggetto su una trama e non su ciò che la videocamera vede?


8

Sto cercando di imparare il modo più efficace di creare manualmente un impostore in Unity, senza utilizzare soluzioni prefabbricate.

La mia prima ipotesi è che dovrebbe essere raggiunto utilizzando RenderTexture e una seconda fotocamera e quindi prendendo diverse "istantanee" di diversi angoli dell'objec. Se ci sono alternative migliori in termini di prestazioni (anche se più difficili da implementare), mi piacerebbe sentir parlare.

Nel caso in cui sia l'unico percorso, ho imparato come eseguire il rendering da una videocamera a una trama tramite script, ma non riesco ancora a capire come fare quanto segue, che è quello che devo fare prima: come renderizzare - strutturare un oggetto specifico senza lo sfondo della videocamera (ovvero con il resto della trama trasparente) in modo performante?

Puntatori, suggerimenti o almeno consigli sui link saranno fantastici.

Grazie in anticipo.


Ti preghiamo di restringere il tuo post a una singola domanda. Puoi creare 2 post di domande diverse per le tue due domande.
Vaillancourt

@AlexandreVaillancourt Nessun problema! L'ho fatto. Fammi sapere se ha ancora bisogno di ulteriori miglioramenti
AndraSol,

Inoltre, non puoi chiedere "link" poiché le risposte che forniscono solo link non sono considerate una buona risposta per questo sito, altrimenti la tua domanda va bene :)
Vaillancourt

@AlexandreVaillancourt Grazie! Ma suppongo che buoni consigli sui link potrebbero arrivare tramite un commento, ho ragione?
AndraSol,

Qualcosa del genere, sì. Una risposta può essere ben scritta e avere collegamenti a maggiori dettagli. Una risposta che contiene solo collegamenti verrà rimossa. I commenti non sono soggetti a queste regole.
Vaillancourt

Risposte:


3

Esistono diverse tecniche di impostori.

Il livello di dettaglio è probabilmente il più semplice da raggiungere, ma presenta due inconvenienti principali. L'effetto 'pop' evidente quando si passa da modelli a bassa e alta risoluzione, risolto da transizioni graduali tra LOD. Il secondo problema è che per l'artista è MOLTO più lavoro per generare LOD per ogni singolo modello. C'è un discorso GDC che parla di un modo automatizzato per generare LODS - "Generazione automatizzata del livello di dettaglio per HALO: REACH"

Una tecnica più semplice sarebbe il cartellone, in cui si utilizza solo un poligono piatto, anziché una mesh a bassa risoluzione. Questo poligono è rivolto verso la telecamera ed è strutturato da un rendering del modello. Questo metodo richiede diverse visioni del tuo oggetto, proprio come il nemico in rovina. È possibile eseguire il prerender di tutte le visualizzazioni in un atlante delle trame. I giochi moderni usano questo approccio, come Far Cry 3 https://www.youtube.com/watch?v=9P3EI17kHaI

Potresti anche avere diversi tabelloni pubblicitari statici e combinarli come in questo pacchetto di unità https://forum.unity3d.com/threads/abi-automatic-3d-billboard-imposters-released.204579/

Ma il modo migliore (che penso tu voglia) è rendere dinamicamente i tuoi cartelloni pubblicitari, come in questo articolo gamasutra. http://www.gamasutra.com/view/feature/130911/dynamic_2d_imposters_a_simple_.php Questo è stato fatto per la prima volta da Jurrassic Park: Trespasser nel 1998, quindi non è una nuova tecnica. Dai un'occhiata alla recensione del codice qui http://fabiensanglard.net/trespasser/index.php Scorri verso il basso fino alla sezione sulle wavelet per vedere i loro impostori.

Tranne l'approccio LOD standard, il tuo primo passo è probabilmente quello di trovare un tutorial sulla trama di rendering. L'orientamento della videocamera renderTexture deve essere lo stesso della videocamera principale, ma ritagliata attorno al giocoObject per efficacia. Dovrai isolare gli oggetti di gioco che vuoi renderizzare con una maschera di abbattimento. E imposta le bandiere chiare della fotocamera in modo da ottenere uno sfondo trasparente. Quindi eseguire il rendering di un cartellone pubblicitario al posto dell'oggetto originale.

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.