In questo tutorial impareremo come impostare un materiale di riflessione dinamico (in tempo reale) e statico in Unreal Development Kit e creare un Parameter Switch per passare da riflessioni dinamiche a statiche o viceversa in UDK. Per il tutorial userò la versione di febbraio 2011 di UDK.
In UDK, i Reflections non sono altro che Ambienti che vengono catturati e proiettati inversamente sulla superficie degli oggetti, e vengono catturati usando Screencapture Actors in UDK. È necessario posizionare questo attore per catturare la scena o l'ambiente della mappa e memorizzarlo in un formato speciale Texture denominato Render to Target, questa texture deve essere nel browser dei contenuti. Potrebbe essere una trama in tempo reale o statica che può essere utilizzata in un materiale e configurata di conseguenza per ottenere riflessi su determinate maglie come metallo o vetro.
Per capire meglio e per funzionare correttamente il Reflection Actor, abbiamo bisogno di avere una scena o una mappa completamente sviluppata, in modo da catturare gli oggetti dell'ambiente circostante. Carica UDK e apri la mappa "VCTF-Necropolis.udk" (o qualsiasi mappa a tua scelta), ma assicurati che la tua mappa sia caricata con molte trame e luci dell'oggetto, dovrebbe essere nella cartella UT3 nella directory installata di UDK, questo è UDKGame \ Content \ Maps \ UT3. Quindi prepara la tua mappa.
Vai a Visualizza-> Finestre del browser e poi Classi degli attori. Uniamo questa finestra di Classi attore con la finestra del browser dei contenuti, in modo che possiamo andare alla finestra Classi attore direttamente dalla finestra del browser dei contenuti. Per farlo, basta fare clic sul menu Aggancio accanto all'opzione del menu File e fare clic su Agganciato. Una volta selezionata l'opzione ancorata, la finestra dovrebbe scomparire e ora possiamo caricarla direttamente dal browser dei contenuti.
Nella finestra Classi attore, vai a Uncategorized-> SceneCaptureCubeMapActor Seleziona e trascina e rilascia nella tua scena, proprio come nella foto qui sotto. Assicurati solo di posizionare questo attore al centro di molti oggetti con una buona illuminazione, in modo da ottenere un buon riflesso. Oppure potresti vedere alcune zone scure su questo attore, o una semplice sfera di colore nero. Questo attore non è visibile nel gioco quando giochiamo questa mappa.
Dopo aver trascinato e inserito l'attore sopra nella scena, otterrai una sfera nera o scura nella tua scena. È per catturare l'ambiente e riflettere come uno specchio. Ma ora il colore è Nero, perché questo attore memorizza tutto il riflesso in una speciale mappa texture chiamata Scene Render to Target, che è Dinamica e non ancora assegnata. Creiamo quella texture dinamica quindi.
Vai al Content Browser e crea un nuovo pacchetto chiamato "Advanced_Reflection" (o qualsiasi altro nome che ti piace). Fai clic con il tasto destro del mouse nel Content Browser e crea un nuovo TextureRenderTargetCube. La differenza tra Target 2d e Target Cube è che Cube acquisirà tutti gli Assi dell'ambiente e lo memorizzerà nel formato Cubemap. Dove Target 2d è quello di catturare solo un lato della faccia, il che è buono per una mesh di superficie piana di un lato come una maglia di terra o pavimento.
Dopo aver fatto clic su Nuovo TextureRenderTargetCube dalle opzioni del tasto destro, otterrai una finestra come nell'immagine per impostare la risoluzione della texture. Assicurati di impostare la risoluzione il più basso possibile, altrimenti potrebbe svuotare molta memoria se la stai usando per una scena in tempo reale. Ma per ora la imposteremo su 1024 per catturare l'alta risoluzione Texture di riflessione statica e poi la ripristineremo a 256 in un secondo momento. Non dimenticare di denominare questa texture come "RT_reflection". Premi OK e salva il pacchetto. Dopo aver premuto OK, nel browser dei contenuti vedrai una Texture verde che è la tua texture dinamica che abbiamo chiamato RT_reflection nel Content Browser.
Ora che abbiamo preparato la nostra Texture dinamica, applichiamo l'immagine alla scena Catturare l'attore di Cubemap.
Seleziona quella texture dinamica appena creata chiamata RT_reflection dal Content Browser, e ora torna alla tua scena e seleziona l'attore SceneCaptureCubeMap (la sfera nera) e premi F4 per aprire Proprietà. Just Collapse Scene Capture Actor-> Scene Capture-> Cattura le proprietà e assegna la Texture Target facendo clic sulla freccia verde accanto ad essa. Otterrai metà riflessione e metà nero sulla sfera, per rendere tutto ciò che ti serve per impostare l'intervallo impostando il valore FarPlane su 999999 (o il più in alto possibile) come nell'immagine sopra. Seleziona / spunta Abilita Nebbia e Abilita processo Post se ne hai uno nella tua scena, oppure Verifica / Spuntare il valore Usa impostazioni Scena post processo principale. Ho abilitato tutti i valori evidenziati nell'immagine sopra.
Ora, se apri il tuo Content Browser, vedrai la Texture verde nel browser dei contenuti che ora mostra alcune informazioni di Texture e che le informazioni di Texture sono il riflesso dinamico della scena. Con questa texture puoi semplicemente impostare un materiale e creare una nuova trama statica. Impostiamo un materiale ma abbiamo bisogno di una mesh statica per applicare questo materiale.
Per questo tutorial ho creato due mesh Simple Geometry che sono una Sfera e un Cilindro, come mostrato sopra. Userò il Cylinder per i riflessi Dynamic Realtime e la sfera per i riflessi statici. Creiamo ora una trama di riflessione statica.
Fare clic con il tasto destro su tale texture dinamica nel Content Browser e quindi fare clic su Crea nuova trama statica. Una finestra pop-up per nominare la nuova trama statica che creerà. Basta nominarlo tutto quello che vuoi, ma per questo tutorial lo chiamerò "ST_reflection" e come mostrato sopra nel campo di raggruppamento. Basta digitare "Textures", quindi inserirà la nuova texture in una sottocategoria denominata Textures of Advanced_reflection. Dopo aver premuto OK, ci vorrà del tempo per creare la trama Statica di Cubemap nel Content Browser, attendere un po 'di tempo e quindi salvare il pacchetto.
Dopo aver creato la Texture statica di Cubemap chiamata ST_reflection, dovresti anche avere qualche altra texture con lo stesso nome, ma non eliminarle perché è una trama di supporto che ha tutti e 6 i lati delle informazioni di riflessione. Questo è da meno X a X positiva per esempio (suffisso come Neg e Pos) compilato nella trama ST_reflection. Ora che abbiamo texture Dynamic e Static che sono RT_reflection e ST_reflection, è tempo di creare il loro materiale.
Fai clic con il tasto destro del mouse sul Content Browser e crea un nuovo materiale chiamato "Reflection" (o qualsiasi altro nome desideri).
Fai doppio clic sul materiale appena creato che è il materiale di riflessione. L'impostazione del materiale di Reflection nella finestra dell'editor dei materiali è semplice, ma qui imposterò due tipi di riflessione. Questo è il riflesso dinamico e statico, come potete vedere nella configurazione nell'immagine sopra. Questo è utile quando vuoi riflessioni statiche su muri, soffitti o talvolta sul terreno quando crei un materiale di istanza o un figlio di questo Materiale che lo faremo in seguito. Quindi impostiamo il materiale Reflection sia statico che dinamico.
Il metodo seguente è solo l'impostazione della riflessione dinamica e statica con un parametro Switch per abilitare o disabilitare il tipo di riflessione che vogliamo nell'istanza di materiale. Puoi usarlo con la tua attuale configurazione materiale o fonderlo con il tuo Diffuse Metal, Glass o qualsiasi materiale che ti piace.
Impostazione materiale dinamico: Nell'immagine sopra, l'installazione dinamica ha tre connessioni e passa per ReflectionVector> Transforms> RT_reflection. Iniziamo con l'impostazione della riflessione dinamica, importiamo la trama dinamica (RT_reflection) nella finestra Editor materiali e cerchiamo le espressioni Transform e ReflectionVector. E quindi Connetti il nodo Vettore di riflessione nel nodo Trasformazione vettoriale, quindi collega il nodo Trasformazione vettoriale agli UV del Nodo campione di trama, ovvero la Texture RT_reflection. Seleziona tutti i nodi e commenta Dyanmic_reflection (tasto destro e Nuovo commento) quindi crea una copia di questa intera impostazione di riflesso dinamico.
Impostazione materiale statico: L'installazione del materiale statico è quasi la stessa eccezione per il nodo campione di trama che è la trama RT_Reflection. Sostituirlo con la trama ST_reflection dell'impostazione Dynamic_reflection copiata. Cambia il commento da Dynamic_reflection a Static_reflection, proprio come la configurazione nell'immagine sopra.
Ora abbiamo bisogno di un interruttore per passare da dinamico a statico o viceversa. Per farlo, cerca il parametro Static switch nella finestra Espressione materiale e trascinalo sullo schermo, oppure fai semplicemente clic con il pulsante destro del mouse nell'editor dei materiali e quindi seleziona FunctionUtility-> New Static Switch. Collega ST_reflection a False e RT_reflection a True per questo switch. Ora puoi collegare questo Switch al canale Diffuse o Emissive oppure puoi anche miscelarlo con la configurazione del materiale corrente usando il nodo di espressione Lerp (interpolazione lineare).
Parametro interruttore statico: Questo interruttore ha due ingressi, TRUE e FALSE. Anche se è auto-esplicativo, ma renderà FALSE solo come valore di default e il valore di input True viene ignorato. Quindi, per cambiarlo, fai clic sul parametro Interruttore statico e poi sulla finestra delle proprietà sotto, controlla o attiva il valore predefinito, come nell'immagine sopra e dagli un nome di parametro come Statico / Dinamico. Ora salva e chiudi la finestra dell'editor del materiale.
Basta andare al Content Browser e fare clic con il tasto destro su questo materiale di riflessione appena creato e fare clic su Create New Material Instance (Constant). Successivamente verrà visualizzata una finestra per denominare la nuova istanza del materiale. Basta chiamarlo "Static_reflection" e seguire di nuovo il processo sopra, ma questa volta chiamarlo "Dynamic_reflection" per la seconda Material Instance.
Ora hai due istanze del materiale nel browser dei contenuti, fai doppio clic su entrambe le istanze del materiale.
Come nell'immagine sopra, sul lato sinistro è il materiale statico e sulla destra è il materiale dinamico. Sotto Gruppi di parametri c'è una casella di controllo Statico / Dinamico, ma assicurati che sia selezionata la casella di controllo per il Materiale statico. E la casella di controllo Destra è selezionata per il materiale dinamico come mostrato nell'immagine sopra. Questo parametro Statico / Dinamico viene creato solo a causa dello Switch che abbiamo creato nella finestra dell'editor Materiale in precedenza. Una volta fatto con le impostazioni, è giunto il momento di assegnare questi materiali alle nostre mesh statiche. Quindi, basta chiudere le finestre dell'editor di istanze materiali.
Vai al Content Browser e cerca una mesh Cylinder and Sphere che ho creato per questo tutorial. Applicare il materiale dinamico al cilindro e il materiale statico alla mesh della sfera, come mostrato nell'immagine sopra. Questo è tutto! Hai quasi finito, metti queste due maglie nella tua mappa ora.
Posiziona la mesh Cylinder proprio sopra l'attore Reflection in tempo reale e posiziona la mesh Sphere dove vuoi, oppure posizionala accanto al cilindro, affiancata. Ora prova la riproduzione all'interno del tuo editor.
Come puoi vedere nell'immagine sopra. Se guardi il cilindro, vedrai un riflesso distorto del tuo personaggio, dovuto alla curvatura del cilindro. Più è liscia la mesh, migliore sarà il riflesso, ma nessuna modifica sul riflesso della Sfera. Che sembra ancora reale, quindi è un buon modo per simulare riflessioni come questa e anche ottimizzare. I riflessi dinamici in tempo reale sono usati molto raramente e utilizzano un sacco di GPU e potenza della CPU per rendere ogni fotogramma. State attenti con l'attore di riflessione in tempo reale e le sue impostazioni, UDK potrebbe bloccarsi spesso se apportate continue modifiche all'attore di riflessione in tempo reale che è l'attore di cattura scena. Assicurati di salvare ogni passaggio o eventuali modifiche apportate. Prova la riproduzione nella tua vista ogni volta e apporta le modifiche di conseguenza per ottenere l'effetto desiderato.
L'uso di riflessioni dinamiche in tempo reale in una mappa così grande con una grande scena esterna o ambiente, svuoterà la tua memoria e potrebbe anche bloccarsi molto. Quindi usarlo con saggezza ed efficienza. I Dynamic Reflection vengono spesso utilizzati in una mappa interna, che dispone di piccole stanze con molti specchi che riflettono gli interni (come Mirror door e Windows o Chrome Metal). Tuttavia puoi ancora simulare quei riflessi usando un semplice passaggio a Riflessioni statiche, che è un modo intelligente e migliore per farlo.
Grazie per aver letto e buona giornata!
Abbiamo pubblicato alcuni tutorial correlati a cui potresti essere interessato:
Post correlati