The basic problem? Given a collection of points, curves, or surfaces in space, find a well-distributed arrangement that avoids (self-)intersection.
To make things interesting, you also usually have some constraints—like: the geometry is contained inside a bunny!
(3/14)
Why would you want to do this?
Well, *point* repulsion is already used in every major area of computer graphics: from image stippling to mesh generation to density estimation to fluid simulation!
But surprisingly little work has been done on repulsive curves & surfaces… (4/14)
And yet there are *all sorts* of things you can do with higher-dimensional repulsion—from better graph layouts, to generative modeling, to robotic path planning, to intersection-free modeling & illustration, to artificial tissue design, to unraveling mathematical mysteries!(5/14)
Repulsion goes far beyond (literally) traditional collision-aware design & modeling: rather than slamming on the brakes right before the moment of impact, repulsive optimization is all about finding a harmonious *global* balance of forces, long before collisions occur. (6/14)
Imagine, for instance, playing a game of pool with charged particles rather than rigid bodies.
In contrast to collision, where you can aggressively prune away distant barrier functions, the whole point of repulsive optimization is to get long-range forces into equilibrium (7/14)
Beyond just dealing with O(n²) interactions, repulsive energies lead to some rich & interesting challenges. For one thing, repulsive energies for points don't nicely generalize to curves & surfaces. For another, you have to deal w/ optimization of "fractional derivatives." (8/14)
…Rather than regurgitate everything here on Twitter, I'll point again to this talk:
Since I know it's easy to get lost in the math & switch off the video, I gave each section a level of difficulty. Don't feel bad about skipping to the fun stuff! (9/14)
You might also be interested in checking out this longer Twitter thread, which also goes deeper into the details for curves:
But the generalization to repulsive surfaces lets us do some really beautiful things like never before. (10/14)
To end with just one cool example, consider this pair of handcuffs in a "linked" and "unlinked" configuration.
Do you think it's possible to unlink the handcuffs, without breaking them apart or letting them pass through each other? (11/14)
If you said "yes," you were right (hey, you had a 50% chance!)
But can you show me how?
There are lots of beautiful drawings of this counter-intuitive transition—but unless you have a good geometric imagination, they can be pretty hard to follow. (12/14).
However, we can use repulsive optimization to make this remarkable topological phenomenon come to life.
Just minimize tangent-point energy starting in both linked and unlinked configurations, then join the two movies together (the 2nd one playing backwards). Voilà! (13/14)
The paper/videos have lots of other examples of new & different things you can do with repulsive shape optimization.
But the real limitation is *our* own creativity!
I'd love to hear what ideas this sparks for you, and what problems, challenges, & creations it leads to…(14/14)
• • •
Missing some Tweet in this thread? You can try to
force a refresh
As a companion to our recent paper on "Repulsive Curves," we're releasing a dataset of hundreds of *extremely* difficult knots: cs.cmu.edu/~kmcrane/Proje…
In each case, a knotted & canonical embedding is given. Can you recover the right knot? 1/5
We've already tried a few dozen methods—from classics like "KnotPlot", to baselines like L-BFGS, to bleeding-edge algorithms like AQP, BCQN, etc.
For many knots, most these methods get "stuck," and don't reach a nice embedding.
Even our method doesn't hit 100%—but is close! 2/5
But this is a pretty unique problem relative to "standard" energies in geometry processing
For one thing, it considers all O(n²) pairs of points rather than just neighbors in a mesh
For another, you can't just *avoid* collisions—you have to maximize your distance from them. 3/5
Uniform edge lengths are a reasonable proxy for mesh quality, since equilateral triangles have good angles. But if you have more specific criteria, you can usually do better. "Hodge-Optimized Triangulations" provides a nice discussion of this perspective: geometry.caltech.edu/pubs/MMdGD11.p…
A popular approach in graphics is something like Botsch & Kobbelt, "Remeshing for Multiresolution Modeling" (Sec. 4): graphics.rwth-aachen.de/media/papers/r…
Basic idea: iteratively move vertices to equalize areas, split long edges, collapse short edges, & flip edges to improve vertex valence.
In this class of algorithms, I really like Chen & Holst, "Efficient mesh optimization schemes based on Optimal Delaunay Triangulations": math.uci.edu/~chenlong/Pape…
Here there's a clear notion of optimality, & an efficient preconditioner. For surfaces: restrict to tangential motions
In short: no matter how awful your mesh is, we compute beautiful high-quality texture coordinates.
(1/n)
For instance, just as a stress test we can try to flatten this crazy #Thingi10k model as a single piece, rather than cutting it up into many charts. We still get excellent texture coordinates, with no flipped triangles, no angle distortion, and little scale distortion.
(2/n)
In general, the algorithm is guaranteed to produce maps that do not locally fold over and are perfectly conformal in a discrete sense, for absolutely any triangle mesh. It also gives globally 1-to-1 maps to the sphere, and handles any configuration of "cone singularities" (3/n)
2/n The story begins with the transition in the 19th century from thinking about geometry in terms of points in space (extrinsic) to thinking about the broader ways we can describe shapes without knowing how they’re embedded (intrinsic).
3/n Even though the intrinsic picture is now commonplace in mathematics, it’s still not how most people think about mesh processing. Almost universally we still describe the geometry of a mesh using Cartesian coordinates in a global coordinate system—just as we did in the 19th c.