Quadrics kinda sorta work for real time

Practical and theoretical implementation discussion.
graphicsMan
Posts: 161
Joined: Mon Nov 28, 2011 7:28 pm

Re: Quadrics kinda sorta work for real time

Post by graphicsMan » Thu May 30, 2013 3:32 pm

This looks neat. Do you have a formulation for automatically fitting these to a tri/quad mesh? Also, you say piece-wise quadric. Does this have any implications for the continuity of the overall surface?

hobold
Posts: 56
Joined: Wed Dec 21, 2011 6:08 pm

Re: Quadrics kinda sorta work for real time

Post by hobold » Thu May 30, 2013 7:09 pm

graphicsMan wrote:Do you have a formulation for automatically fitting these to a tri/quad mesh? Also, you say piece-wise quadric. Does this have any implications for the continuity of the overall surface?
Short version: this is no better or worse than the Zwart-Powell Element mentioned earlier in this thread.

Long version: I don't know the corresponding subdivision rule for the depicted basis function; I only know that it will have to follow the sqrt(3) grid refinement rules (otherwise the function cannot be decomposed into a weighted sum of smaller copies of itself). Without a subdivision scheme, I have no ... "anchor" for wrapping to an arbitrary mesh. And even then, the only thing I could guarantee is that the quadric patches would converge rather quickly towards the limit surface, i.e. some subdivision steps would still be required. (As before, quadrics are not a good primitive for direct modeling, but they might be a good primitive for rendering.)

Continuity of this new spline is still only C1. The only significant difference to the Zwart-Powell Element further above is that this new spline lives on a triagonal/hexagonal grid, and that it is a bit ... "rounder", despite its support polygon having only six vertices rather than eight. But it is rotationally symmetrical with respect to a 60 degree angle, while the Zwart-Powell Element is only symmetrical after 90 degrees of rotation.


Hypothetical outlook:
I think there is another orthoplex spline that has triangular support (but I have not performed that particular construction yet, so there might be showstoppers). Additionally, the bivariate simplex spline with C1 continuity (which would consequently be a piece-wise quadric) lives on a pentagon. If I can find another construction for an appropriate spline supported on a square, I would have some "natural" spline basis functions for vertex valences anywhere from three to six. There would be other constraints as well, so the mesh could still not be arbitrary. But this would be a significant step towards skipping the intermediate subdivision surface, and building a spline surface directly from quadric patches, while still maintaining the "user interface" of a subdivision surface.

hobold
Posts: 56
Joined: Wed Dec 21, 2011 6:08 pm

Re: Quadrics kinda sorta work for real time

Post by hobold » Tue Jul 23, 2013 2:50 pm

It turns out that bivariate spline basis functions are not strictly limited to the two dimensional setting (i.e. height fields):

Image

The basic idea is the same as Metaballs. In this example, there would be one ellipsoid component in the center, and a cylindrical component subtracted from it (which effectively drills a hole). The ears are smaller ellipsoid components added to the central blob. The tangent continuity of the aforementioned spline bases carries over to three dimensional "blob" components. And that ultimately implies tangent continuity of any isosurface, an example of which you can see above.

As a user interface, I don't think Metaballs are a preferred choice of graphics artists. But this construction proves by demonstration that smooth quadric spline surfaces of arbitrary topology do exist and can be edited directly. That is a rather tangible, constructive result. :)

graphicsMan
Posts: 161
Joined: Mon Nov 28, 2011 7:28 pm

Re: Quadrics kinda sorta work for real time

Post by graphicsMan » Wed Jul 24, 2013 6:03 am

cool :)

hobold
Posts: 56
Joined: Wed Dec 21, 2011 6:08 pm

Re: Quadrics kinda sorta work for real time

Post by hobold » Tue Dec 23, 2014 12:32 pm

With absolutely no pride whatsoever, I hereby announce the release of source code.

There isn't much in it for you, dear readers, but if you want to see for yourself, surf to http://www.vectorizer.org/boar/index.html and scroll down a bit to the blog section. There you will find a tarball and a few sentences of explanation.

Thank you for your attention.

Post Reply