Metaball
# Metaball

Ein Metaball ist das Ergebnis eines Algorithmus, der eine dehnbare Oberfläche erzeugt, die die Form einer Kugel (bei genau einem) oder eine Menge von ineinander gehenden Kugeln erzeugt. Der Algorithmus wurde in den frühen 1980ern von Jim Blinn entwickelt.

Ein Metaball ist als eine Funktion in $n$ Dimensionen definiert, für die üblichen drei Dimensionen also entsprechend $f(x,y,z)$. Um ein Volumen zu erzeugen wird ein Schwellenwert gewählt.

    $\sum _{i=0}^{m}{\mathit {Metaball}}_{i}(x,y,z)\leq {\mathit {Schwellenwert}}$

definiert dann, ob der von $m$ Metaballs definierte Körper am Punkt $(x,y,z)$ gefüllt ist.

Eine typische Metaball-Funktion ist

    $f(x,y,z)={\frac {1}{(x-x_{0})^{2}+(y-y_{0})^{2}+(z-z_{0})^{2}}}$

wobei $(x_{0},y_{0},z_{0})$ das Zentrum des Balles angibt und $(x,y,z)$ den zu untersuchenden Punkt. $f(x,y,z)$ gibt dann also die Stärke des Balles an diesem Punkt zurück, ist die Summe der Stärken aller Bälle an diesem Punkt größer als der Schwellenwert, so ist der Körper dort gefüllt. Da die Funktion auf Grund der Division rechenintensiv ist, werden auch polynomiale Annäherungen verwendet.

Es gibt viele Wege, Metaballs zu rendern, die beiden gebräuchlichsten sind Raycasting und der Marching-Cubes-Algorithmus.

