Unreal Engine 4: gli strumenti, come funziona, cosa cambia

Unreal Engine 4: gli strumenti, come funziona, cosa cambia

Riprendiamo l'analisi delle caratteristiche più importanti di Unreal Engine 4, in modo da poter capire come funziona alla base un motore grafico di ultima generazione con tutte le sue funzioni, gli strumenti e le varie opzioni grafiche.

di Rosario Grasso pubblicato il nel canale Videogames
Epic
 

Particelle

Riprendiamo il discorso su Unreal Engine 4 che avevamo iniziato con l'articolo pubblicato qualche giorno fa, di cui questo secondo articolo è da intendere come proseguimento. E iniziamo con le particelle, che costituiscono uno dei passi avanti più consistenti rispetto a Unreal Engine 3.

Unreal Engine 4

Il nuovo sistema permette agli artisti di creare avanzati effetti di fumo, scintille e fuoco, o altri effetti visivi ancora più avanzati. Il sistema particellare all'interno dell'Unreal Editor si gestisce tramite lo strumento Cascade, che permette di verificare in tempo reale il risultato del proprio lavoro e permette un editing di tipo modulare. Il funzionamento degli effetti particellari è strettamente legato ai materiali e alle texture applicati a ciascuna delle particelle.

A differenza degli strumenti inclusi in altri editor come Maya, Cascade offre un approccio estremamente modulare. In Maya, ad esempio, gli utenti si ritrovano fin da subito con sistemi particellari quasi definitivamente pronti, dei quali possono configurare solo le proprietà. In Cascade, invece, all'inizio si ha solo un sistema particellare con qualche proprietà di base e qualche modulo comportamentale. Ciascun modulo rappresenta uno specifico aspetto del comportamento delle particelle e contiene proprietà che ne determinano vari aspetti come colore, posizione di origine, spostamento, dimensioni e altro. L'utente può combinare a piacere diversi di questi moduli in modo da variare il comportamento dei sistemi particellari nel corso del tempo.

Unreal Engine 4

La componente chiave di un sistema particellare si chiama Sprite Emitter e si caratterizza per i seguenti moduli di default: Required, Spawn, Lifetime, Initial Size, Initial Velocity, Color Over Life. Quindi, l'utente può specificare la frequenza con la quale appaiono nuove particelle, la loro durata, la dimensione, la velocità e come il colore cambia nel corso del tempo.

In definitiva, i moduli sono parte di un Emitter, che è un preciso tipo di effetto particellare associato a una causa e che fa parte di un Particle System gestibile tramite il Content Browser. Un Emitter Actor è invece un oggetto posizionabile nel Progetto, che determina dove e quando le particelle vengono attivate all'interno della scena tridimensionale.

Come dicevamo gli Sprite sono gli Emitter di base, in cui le particelle sono degli sprite poligonali che si trovano sempre di fronte alla camera. Sono quelli che solitamente vediamo alla base del fumo, del fuoco e di altri effetti simili. Ma non è l'unico tipo di Emitter: abbiamo infatti anche Beam Data, usati per creare effetti come laser o lampi; e Ribbon Data, per gestire particelle che si dispongono una dietro l'altra come in un nastro. Ci vuole più capacità di calcolo, ma ci sono anche i Mesh Data, ovvero dei sistemi particellari con alla base mesh poligonali invece di sprite. Infine, GPU Sprite rappresenta un tipo speciale di particelle gestibili interamente tramite la GPU. Questo consente di avere un maggior numero di particelle rispetto alla normale gestione tramite CPU: da alcune migliaia a centinaia di migliaia in base alle prestazioni della GPU.

Beam Data

Unreal Engine 4

Ribbon Data

Unreal Engine 4

Mesh Data

Un sistema particellare però potrebbe cambiare comportamento nel corso del gioco, e per questo potrebbe non essere completamente definibile in partenza. Unreal Engine 4 gestisce questi cambiamenti tramite valori che definisce Parameters, che sono determinati da strumenti quali Blueprints, Matinee, da un materiale o da un altro tipo di sorgente. Le proprietà delle particelle quindi possono essere controllate anche dall'esterno rispetto al sistema particellare.

Per esempio, il fire rate di un'arma potrebbe cambiare sulla base di un avvenimento che nel frattempo intercorre durante l'esperienza di gioco. Oppure un effetto magico potrebbe cambiare di colore sulla base della quantità di energia, o di mana, che rimane a disposizione del mago che lo "casta".

Le particelle possono anche ricevere illuminazione, ma in questo caso richiedono un settaggio particolare. Innanzitutto bisogna assicurarsi che lo shader model non sia impostato sulla voce che non prevede illuminazione, il che è controllabile dalla schermata DefaultLit, mentre in LODSettings (si trova tra le proprietà del LOD all'interno di Cascade) bisogna spuntare la voce bLit per ciascun LOD.

I sistemi particellari possono diventare molto costosi da processare, anche nel caso si usi l'impostazione che devolve alla GPU i calcoli relativi alla generazione dell'effetto. È importante quindi tenere in considerazione il valore dell'effetto particellare sulla base del livello di consapevolezza che ha il giocatore sull'esistenza dell'effetto. Per esempio, nel caso di un fuoco da campo potrebbe essere interessante associare delle scintille, che però sarebbero visibili solo se ci si avvicina molto al fuoco, mentre praticamente diventerebbero invisibili da lontano. Perché calcolarle ugualmente in quest'ultimo caso?

È proprio per casi come questo che bisogna usare lo strumento che consente di configurare il Levels of Detail (LOD). Questo strumento permette di configurare la complessità e la qualità dei sistemi particellari a varie distanze. A una certa distanza, si può chiedere una semplificazione automatica dell'effetto, il che si traduce nella riduzione del valore di certe proprietà, nello spegnimento di alcuni moduli o addirittura dell'intero Emitter. Ad esempio, nel caso precedente potrebbe essere utile disattivare l'Emitter delle scintille nel momento in cui il giocatore si trova troppo distante dal fuoco per poter vedere effettivamente le scintille. Ue4 consente di usare il numero di LOD che si vuole e di modificare a piacere le distanze a cui si attivano.

Un altro concetto che può tornare utile nella gestione delle particelle è quello dei Distributions. Gli utenti possono settare range di valori da associare ai vari moduli, in modo che i sistemi particellari varino nel corso del tempo. Può anche parametrizzare un valore, in modo da inviarlo a uno strumento esterno come Blueprint o Matinee.

Quando le particelle vengono processate tramite GPU possono contare anche sulla presenza di un campo vettoriale. Si tratta di una griglia uniforme di vettori che influenza il moto delle particelle. I campi vettoriali vengono considerati da Ue4 come attori (Global Vector Field), godendo pertanto delle proprietà peculiari di questi ultimi. Un campo può essere anche piazzato all'interno di Cascade, il che limita la sua influenza all'Emitter al quale è associato.

Unreal Engine 4

Unreal Engine 4

Unreal Engine 4

I campi vettoriali standard sono quelli che non cambiano nel corso del tempo e si possono importare da Maya come volume texture, ma si possono anche generare a partire da un'immagine bidimensionale molto simile alle normal map. I campi vettoriali dispongono di un ulteriore parametro, "tightness", che identifica quanto le particelle devono attenersi al campo. Mentre i Global Vector Field possono essere piazzati nella scena come attori, i Local Vector Fields si riferiscono nello specifico a un sistema particellare in particolare.

 
^