Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Metaballs
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|N-dimensional isosurfaces which can meld together}} {{multiple issues| {{more footnotes|date=August 2014}} {{context|date=November 2016}} {{inadequate lead|date=June 2019}} }} {{Distinguish|Meatballs}} [[Image:Metaballs.png|thumb|1: The influence of 2 positive metaballs on each other. <br /> 2: The influence of a negative metaball on a positive metaball by creating an indentation in the positive metaball's surface.|200px]] In [[computer graphics]], '''metaballs''', also known as '''blobby objects''',<ref>{{Cite web |title=blobby model |date=2019 |url=https://www.encyclopedia.com/computing/dictionaries-thesauruses-pictures-and-press-releases/blobby-model |access-date=2023-10-27 |work=A Dictionary of Computing |publisher=[[Oxford University Press]] |via=www.encyclopedia.com}}</ref><ref>{{Cite web |title=An Overview of Metaballs/Blobby Objects |last=Ward |first=Matthew |url=https://web.cs.wpi.edu/~matt/courses/cs563/talks/metaballs.html |access-date=2023-10-27 |publisher=[[Worcester Polytechnic Institute]]}}</ref> are organic-looking ''n''-dimensional [[isosurface]]s, characterised by their ability to meld together when in close proximity to create single, contiguous objects. In [[solid modelling]], [[polygon mesh]]es are commonly used. In certain instances, however, metaballs are superior. A metaball's "blobby" appearance makes them versatile tools, often used to model organic objects and also to create base meshes for [[digital sculpting|sculpting]].<ref>{{Cite web|url=https://artofjoe.blogspot.com/2007/10/digital-sculpting-tutorial.html|title=Art of Joe Daniels: Digital Sculpting Tutorial|date=8 October 2007}}</ref> The technique for [[rendering (computer graphics)|rendering]] metaballs was invented by [[Jim Blinn]] in the early 1980s to model atom interactions for [[Carl Sagan]]'s 1980 TV series ''[[Cosmos: A Personal Voyage|Cosmos]]''.<ref>{{Cite web|url=http://steve.hollasch.net/cgindex/misc/metaballs.html|title = CG Notes: Metaballs Intro}}</ref> It is also referred to colloquially as the "jelly effect" in the [[Motion graphic design|motion]] and [[User experience design|UX design]] community,<ref>{{Cite web|title=The "jelly effect" has recently been very popular and used in lots of animations. β¦ {{!}} After effect tutorial, Adobe after effects tutorials, Motion graphics tutorial|url=https://www.pinterest.com/pin/400679698081921760/|access-date=2020-08-11|website=Pinterest|language=en}}</ref> commonly appearing in [[User interface|UI]] elements such as navigations and buttons. Metaball behavior corresponds to [[mitosis]] in cell biology, where chromosomes generate identical copies of themselves through cell division. == Definition == Each metaball is defined as a [[function (mathematics)|function]] in ''[[Natural number|n]]'' dimensions (e.g., for three dimensions, <math>f(x,y,z)</math>; three-dimensional metaballs tend to be most common, with two-dimensional implementations popular as well). A thresholding value is also chosen, to define a solid volume. Then, <math display="block">\sum_{i} \mbox{metaball}_i(x,y,z) \geq \mbox{threshold}</math> that is, all points larger than the threshold are inside the metaball. == Implementation == {{prose|date=June 2019|section}} [[Image:Metaball contact sheet.png|thumb|The interaction between two differently coloured 3D positive metaballs, created in [[Bryce (software)|Bryce]].<br />''Note that the two smaller metaballs combine to create one larger object.'']] A typical function chosen for metaballs is simply inverse distance, that is, the contribution to the thresholding function falls off asymptotically toward zero as the distance from the centre of the metaball increases: :<math>f(r) = \frac{a}{r}</math> where <math>a</math> scales the magnitude of the contribution (changing the radius of a metaball) and <math>r</math> is the distance from the ball's center, calculated from cartesian coordinates as: :<math>r = \sqrt{(x-x_0)^2 + (y-y_0)^2 + (z-z_0)^2}</math> where <math>(x_0, y_0, z_0)</math> is the center of the metaball. Various other falloff functions have historically been used for reasons of computational efficiency. Desirable properties of the function include: * [[Finite support]]. A function with finite support goes to zero at a maximum radius. When evaluating the metaball field, any points beyond their maximum radius from the sample point can be ignored. [[Nearest neighbor search]] can ensure only adjacent metaballs need to be evaluated regardless of the total number in the field. * [[Smoothness]]. Because the [[isosurface]] is the result of adding the fields together, its smoothness is dependent on the smoothness of the falloff curves. More complicated models use an [[inverse square law]], or a [[Gaussian distribution|Gaussian]] potential constrained to a finite radius or a mixture of polynomials to achieve smoothness.<ref>{{Cite journal |last=Blinn |first=James Frederick |date=1982 |title=A generalization of algebraic surface drawing |url=https://dl.acm.org/doi/10.1145/357306.357310 |journal=ACM Transactions on Graphics |volume=1 |issue=3 |pages=235β256}}</ref> The Soft Object model by the Wyvill brothers provides higher degree of smoothness.<ref>{{Cite journal |last=Wyvill |first=Geoff |last2=McPheeters |first2=Craig |last3=Wyvill |first3=Brian |date=1986-08-01 |title=Data structure forsoft objects |url=https://link.springer.com/article/10.1007/BF01900346 |journal=The Visual Computer |language=en |volume=2 |issue=4 |pages=227β234 |doi=10.1007/BF01900346 |issn=1432-2315|url-access=subscription }}</ref> A simple generalization of metaballs is to apply the falloff curve to distance-from-lines or distance-from-surfaces. There are a number of ways to render the metaballs to the screen. In the case of three dimensional metaballs, the two most common are [[raycasting|brute force raycasting]] and the [[marching cubes]] algorithm. 2D metaballs were a very common [[demo effect]] in the 1990s. The effect is also available as an [[XScreenSaver]] module. ==See also== * [[NURBS]] * [[BΓ©zier surface]] ==References== {{Reflist}} ==Further reading== *{{cite journal |last1=Blinn |first1=J. F. |title=A Generalization of Algebraic Surface Drawing |doi=10.1145/357306.357310 |journal=[[ACM Transactions on Graphics]] |volume=1 |issue=3 |pages=235β256 |date=July 1982 |s2cid=24838292 |url=https://dl.acm.org/doi/pdf/10.1145/357306.357310|url-access=subscription }} ==External links== * [https://www.desmos.com/calculator/hkvv0eydjf Interactive 2D metaballs] using the online [[Desmos]] graphing calculator * [http://paulbourke.net/geometry/implicitsurf/index.html Implicit Surfaces article] by Paul Bourke * [https://docs.blender.org/manual/en/latest/modeling/metas/introduction.html Meta Objects article] from [[Blender (software)|Blender]] wiki * [https://web.archive.org/web/20141103023010/http://www.siggraph.org/education/materials/HyperGraph/modeling/metaballs/metaballs.htm Metaballs article] from [[SIGGRAPH]] website * "[https://www.gamedev.net/tutorials/_/technical/graphics-programming-and-theory/exploring-metaballs-and-isosurfaces-in-2d-r2556 Exploring Metaballs and Isosurfaces in 2D]", 3 September 2008, Stephen Whitmore, gamedev.net [[Category:3D computer graphics]] [[Category:Demo effects]] [[Category:Implicit surface modeling]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Distinguish
(
edit
)
Template:Multiple issues
(
edit
)
Template:Prose
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)