# Sistema particellare

Un sistema particellare (in inglese particle system) è una tecnica, propria della game physics, motion graphics e computer grafica, che impiega una vasto numero di piccolissime sprites, modelli 3D, o altri oggetti grafici per simulare certi tipi di fenomeni "fuzzy", che sarebbero altrimenti molto complicati da riprodurre con tecniche di rendering convenzionali - spesso sistemi molto caotici, fenomeni naturali, o processi causati da reazioni chimiche.

## Storia

I sistemi particellari furono utilizzati per la prima volta nella computer grafica da William Reeves nel 1983, per modellare un muro di fuoco per il film Star Trek II: L'ira di Khan. Dato che i sistemi particellari consistono in una tecnica di modellazione volumetrica, essi sono usato molto comunemente per rappresentare fenomeni naturali volumetrici come fuoco, acqua, nuvole, neve e pioggia (Reeves 1983). I sistemi particellari strutturati, un'estensione dei sistemi particellari, sono stati utilizzati inoltre per modellare l'erba e gli alberi da Reeves e Blau nel 1985.
Esempi di fenomeni che oggi sono comunemente riprodotti usando un sistema particellare includono fuoco, esplosioni, fumo, movimento dell'acqua (come in una cascata), scintille, foglie in caduta, cadute di rocce, nuvole, nebbia, neve, polvere, code di stelle cadenti, stelle e galassie, o effetti visuali astratti come tracce di bagliori, incantesimi magici, ecc... - tutti questi usano particelle che svaniscono velocemente e sono poi riemesse dalla sorgente dell'effetto. Ma i sistemi particellari possono essere utilizzati anche per capelli o erba.

## Aspetti teorici

Possiamo dire che quella dei sistema particellari sia una tecnica di modellazione procedurale. Un sistema particellare è rappresentato da un'ampia collezione (nuvola) di particelle geometriche veramente semplici che cambiano stocasticamente nel tempo. Pertanto, i sistemi particellari fanno uso di un ampio database di primitive geometriche per rappresentare oggetti naturali ("fuzzy objects"), ma l'animazione, posizione, nascita e morte delle particelle che rappresentano l'oggetto sono controllate algoritmicamente. Come in altre tecniche di modellazione procedurale, i sistemi particellari hanno il vantaggio di una amplificazione del database, permettendo al modellista/animatore di specificare e controllare questa nuvola estremamente ampia di particelle geometriche con solamente pochi parametri.

### Implementazione tipica

Una particella è un elemento visibile soltanto durante il proprio ciclo di vita. Essa ha attributi come la forma (una piccola bitmap), il colore (o surface texture), dimensione, peso, ciclo di vita, e velocità. Ognuno di questi può essere fuzzy, ovvero può essere specificato attraverso la scelta di un valore centrale e di un intervallo di variabilità. Per esempio, il ciclo di vita di una particella può essere specificato come 60 fotogrammi di animazione ±25%, ovvero da 60 - 15 a 60 + 15 fotogrammi.
Tipicamente la posizione del sistema particellare e il movimento nello spazio 3D sono controllati da ciò che viene definito un emitter. L'emitter agisce come una sorgente invisibile delle particelle, e la sua posizione nello spazio 3D determina dove esse sono generate e dove si muoveranno. Una regolare mesh 3D, come un cubo o un piano, può essere usata come emitter; ogni faccia emetterà particelle in una direzione perpendicolare alla faccia. L'emitter detiene un set di parametri relativi al comportamento delle particelle. Questi parametri includono un tasso di spawning (cioè quante particelle vengono generate per unità di tempo), l'iniziale velocità del vettore delle particelle (il vettore è la direzione di emissione subito dopo la generazione), la durata di permanenza della particella (cioè quanto tempo ogni particella individuale esiste prima di scomparire), il colore della particella, e tanto altro.