Metaball ( rusky Metasphere , také nalezený "metaball") je n-rozměrný objekt v počítačové grafice , který je uzavřeným hladkým povrchem. Technika zobrazování metasfér byla vynalezena Jimem Blinnem na počátku 80. let 20. století .
Použití polygonů v počítačové grafice často vede k nevyhlazeným modelům, přičemž stupeň hladkosti vysoce závisí na měřítku. K získání hladkých povrchů se používají různé metody, jako jsou B-splines a Bézierovy povrchy . Při použití metasfér se předpokládá, že v prostoru je nastavena množina řídicích bodů nebo částic s potenciálem a jsou nastaveny funkce závislosti potenciálu na vzdálenosti. Výpočtem potenciálu pole je možné sestrojit vyhlazené izoplochy poměrně složitého tvaru.
Každý řídicí bod definuje svou vlastní n-rozměrnou potenciální funkci (obvykle n=3). Poté se vybere určitá hodnota (potenciál), která určuje tvar metasféry (ve skutečnosti je určena ekvipotenciální plocha ). Nerovnice tedy určuje, zda je bod uvnitř plochy dané řídicími body nebo ne.
Často se jako funkce definující metasféru používá , kde je střed metasféry. Použitím dělení je však tato funkce z hlediska rychlosti neefektivní, proto je obvykle nahrazena aproximačními polynomiálními funkcemi.
Při hledání efektivnější potenciální funkce je žádoucí, aby splňovala následující požadavky:
Nejjednodušší potenciální funkce, která splňuje tato kritéria, je , kde je vzdálenost mezi řídicím bodem a daným bodem v prostoru. Je také docela efektivní, protože nepoužívá dělení a extrakci kořenů.
Sofistikovanější modely využívají pro lepší vyhlazení Gaussův potenciál ohraničený konečným poloměrem množiny polynomů. Model měkkých objektů bratří Wyvillů poskytuje vyšší stupeň hladkosti a nepoužívá odmocniny.
Jednoduché zobecnění modelu lze získat nahrazením vzdálenosti mezi body jako funkce potenciálu vzdáleností k přímce nebo vzdáleností k povrchu.
Existuje mnoho způsobů, jak vykreslit metasféry. Pro 3D metasféry se nejčastěji používá raycasting a algoritmus pochodových kostek .
2D metasféry byly v 90. letech velmi populární v demech . Tento efekt je také dostupný v modulu XScreensaver .