Jump to content
  • Advertisement
  • entries
    2
  • comments
    4
  • views
    211

A Novel Approach To (Non-Manifold) Dual Contouring

LifeIsGood

709 views

For the sake of "completness", my first entry is about the very first algorithm I came up when I was thinking about new solutions to procedural meshing / extracting a polygon mesh from implicit geometry (e.g. from a signed distance function, SDF)

You can find out more about it in this thread right here.

At first, I liked the idea. However, the more I worked on the algorithm, the more I found characteristics that I dislike about this approach.
You can read about the pro's in the thread linked above, so here is the stuff that I dislike now:

  • The algorithm is a typical "voxel" algorithm. It relies on a 3D grid.
  • It may suffer from floating-point imprecision
  • It lost it's simpleness. The idea behind the algorithm was to find a simple alternative to DC. This is still very true for the 2D version of the algorithm, but for the 3D version, not so much...
    I had to account for more & more "special cases" during the development of the algorithm, resulting in an algorithm that wasn't simple enough anymore for my taste.


4 Comments


Recommended Comments

Quote
  • The algorithm is a typical "voxel" algorithm. It relies on a 3D grid.

I think this limitation is only acceptable if you aim for realtime generation.

Otherwise i would take a remeshing approach. That's much harder to do, but can produce good results. This is a good example: https://github.com/wjakob/instant-meshes

Really most research here is about irregular mesh to optimized regular mesh, not volume to mesh, but this could be done as well of course.

 

Share this comment


Link to comment

I want to deform meshs in realtime, so while a precomputation of a general mesh is fine, it should be the same possible in realtime.

But yeah, not really working on this algorithm anymore, anyways.

Share this comment


Link to comment

I've been kind of batting an idea around in my head of adding a sharp comers to marching cubes. This would have the advantage of generating manifold geometry.  I was thinking that you could just add an extra data parameter to each voxel, which the meshing algorithm would use in combination with the 256 case field code, to build commonly used cases like building corners and and stuff like that.  You would implement each case as needed and kind of build up a library of voxel types. In this way you wouldn't have to use a QEF and hopefully it would be reasonably fast.  The down side is I think it would be hard to do the level transitions needed in terrain, but for smaller objects where all the voxels can change size at the same time for LOD, it might be OK.

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!