# Metaball

Una metaball, in computer grafica, è un oggetto che non è definito da vertici o punti controllo (come le curve di Bézier o le NURBS), bensì da espressioni matematiche pure. In altre parole sono superfici implicite , che vengono calcolate e messe in relazione tra loro da operazioni logiche additive (AND) o sottrattive (OR). Gli oggetti meta esercitano dunque influenza gli uni sugli altri e se questa influenza è positiva, noteremo degli effetti di attrazione, mentre se è negativa noteremo effetti di repulsione. Nell'immagine sotto, una metaball rossa e una blu vengono avvicinate; l'effetto di attrazione le fa unire e ne risulta una singola metaball viola.

## Aspetti teorici

In modo da rompere con l'impiego convenzionale dei modelli ball-and-stick e space-filing per visualizzare le molecole, Jim Blinn introdusse il modello blobby in computer grafica. Questo modello rappresenta una superficie di un oggetto come una isosuperficie di un campo scalare globale, costruito a partire da campi scalari locali associati a primitive sussidiarie o costituenti. Nel 1982, scrisse in A Generalization of Algebraic Surface Drawing:
   Il problema che ha motivato questo documento è familiare a quello della visualizzazione di modelli molecolari in computer grafica. Questi (modelli molecolari) sono fatti spesso con modelli ball-and-stick o modelli space-filling sphere. In entrambi i casi, il modello consiste in una collezione di possibili intersezioni di due forme basilari: sfere e cilindri. Per disegnare un'immagine del modello, le sfere e i cilindri possono essere facilmente spezzati in poligoni e processati con algoritmi di rendering-poligonali convenzionali. Alternativamente, possono essere impiegati svariati algoritmi per superfici curve, e infatti, diversi algoritmi specifici sono stati formulati per gestire efficientemente queste due forme, per mostrare rapidamente strutture molecolari. Negli interessi sia della varietà artistica, sia dell'accuratezza scientifica, è stato intravisto un nuovo modello che si distacca da quelli ball-and-stick e space-filling.
Il modello blobby rappresenta un oggetto tridimensionale in $R^{3}$ come una isosuperficie di un campo scalare generato dalla composizione di campi scalari locali, ognuno generato da una primitiva geometrica (per esempio un punto o una sfera). Questo significa che un valore di campo in un punto ${\text{x}}=(x,y,z)$, generato da una primitiva o atomo $A_{i}$ centrato in un punto ${\text{x}}_{i}$, è dato da
$f_{i}({\text{x}})=b_{i}e^{-a_{i}d_{i}({\text{x}})}$
dove $d_{i}({\text{x}})$ determina la forma del campo scalare. L'equazione è conosciuta come funzione gaussiana di Blinn. Infatti, il termine esponenziale non è altro che un bump gaussiano centrato in ${\text{x}}_{i}$, che ha altezza $b_{i}$, e deviazione standard $a_{i}$. Se $d_{i}({\text{x}})$ è il quadrato della distanza euclidea fra ${\text{x}}$ e ${\text{x}}_{i}$, che è uguale a
$d_{i}({\text{x}})=(x-x_{i})^{2}+(y-y_{i})^{2}+(z-z_{i})^{2}$
allora il campo è sfericamente simmetrico.
La funzione di densità locale di una data molecola con $N$ atomi è ottenuta dalla somma del contributo di ogni atomo
$f({\text{x}})=\sum _{i=1}^{N}f_{i}({\text{x}})$o, in modo equivalente,
$f({\text{x}})=\sum _{i=1}^{N}b_{i}e^{-a_{i}d_{i}({\text{x}})}$
Ora, possiamo definire una superficie implicita come l'insieme nullo di punti dove $f$ eguaglia una data soglia $T$
$F({\text{x}})=f({\text{x}})-T=0$
Sebbene il modello implicito di Blinn fosse stato principalmente progettato per rappresentare molecole, in letteratura sono state descritte e discusse molte altre applicazioni. Da quando fu proposto da Blinn e Nishimura, il metodo delle metaball è stato ampiamente usato nella modellazione di soft objects, come nuvole e liquidi, a causa della sua capacità di generare superfici lisce e geometria e topologia arbitrarie. Nel 1986, Geoff Wyvill, Craig McPheeters e Brian Wyvill, scrissero in Data structures for soft objects:
   Le tecniche ormai assodate di modellazione geometrica, sono state formulate per gestire molti componenti ingegneristici, fra cui "forme libere" come carrozzerie di automobile e telefoni. Più recentemente, c'è stato molto interesse nel modellare i fenomeni naturali come il fumo, le nuvole, le montagne e le coste, dove le forme sono descritte stocasticamente, o come frattali. Nessuna di queste tecniche si presta alla descrizione dei cosiddetti soft object. Questa classe di oggetti include tessuti, cuscini, forme di vita, fango e acqua. [...] Sono stati fatti esperimenti con un modello generale per i soft object, che rappresenta un oggetto, o una collezione di oggetti, come un campo scalare - che è una funzione matematica definita su un volume dello spazio. L'oggetto può essere considerato come occupante lo spazio oltre il quale la funzione ha un valore maggiore di una data soglia, in modo che la superficie dell'oggetto sia una isosuperficie della funzione di campo.
Il metodo è anche efficace nel modellare la deformazione e il movimento di liquidi. Quando le metaball si muovono, la superficie generata, le segue automaticamente. Così, la deformazione dei liquidi è di solito descritta con il movimento delle metaball. Jim Blinn inoltre, da parte sua, suggerì altre applicazioni e descrisse una tecnica di rendering diretto utilizzando un insieme elegante di elenchi ordinati. Una tecnica simile è stata utilizzata per alcuni anni nel progetto LINKS alla Università di Osaka (Nishimura, 1985). Ken Perlin ha impiegato una modifica del metodo di Blinn per rappresentare forme "stocastiche" (Perlin, 1985).
Sia modelli blobby, sia metaball, sia soft objects, fanno affidamento sulla stessa funzione implicita globale, ma le funzioni locali sussidiarie differiscono lievemente.

### La superficie implicita

Una superficie implicita è una superficie composta da quei punti p{\textstyle p}, determinati dalle coordinate x{\textstyle x}, y{\textstyle y}, z{\textstyle z}, che soddisfano la funzione arbitraria implicita f(p)=0{\textstyle f(p)=0}.
La superficie del liquido, generata dalle metaball, è dunque definita dai punti che soddisfano la seguente equazione:$f(x,y,z)=\sum _{i=0}^{n}q_{i}f_{i}-T_{0}=0$dove T$_0${\textstyle T_{0}} è una soglia, q$_i${\textstyle q_{i}} è un fattore coefficiente (anche chiamato densità massima) della metaball I{\textstyle I}, e f$_i${\textstyle f_{i}} è la funzione di densità della metaball I{\textstyle I}.
Il volume dei liquidi può essere descritto come:$\iiint _{f(x,y,z)>0}dxdydz$

## Curiosità

Le metaball 2D sono state una demo ad effetto negli anni 90. L'effetto è anche disponibile per XScreensaver.