Sign in to follow this  
Qdot543

Understanding Dual Contouring

Recommended Posts

Hello

 

I am currently researching how to generate procedural terrain. I have found Dual Contouring, which is as algorithm for generation smooth geometry from voxel information. http://www.frankpetterson.com/publications/dualcontour/dualcontour.pdf

 

however, I am having a hard time understanding the paper due to my currently understanding of mathematics

 

a have a variety of questions regarding the paper, which, after searching the internet, decided that I should just ask them here.

First of all
when they mention hermit data, do they mean.
    the point the surface intercepts the cell along its edge

    and the normal of the surface

 

When they say scalar field or density field

    are the referring to the voxel field, which is the points in space that are occupied or not.

    or is scalar field and density field, two different things

 

if implemented using an octree (I don't think you can't)

    does the leaf contain just the voxel vertex,

    or the voxel cell state,

    or both

    and/or the intersection points and normals along the edges

 

What the hell is the quadratic error function (QEF)

and how would I implement it

 

Lastly
What fields of math do I have to be familiar with to understand the paper on face value

 

Some questions might indicate I got the right picture

but I just need to confirm the details

 

if any admin feels this post is not appropriate for this section.

feel free to move it.

 

Share this post


Link to post
Share on other sites

when they mention hermit data, do they mean.     the point the surface intercepts the cell along its edge     and the normal of the surface

Yes, hermite data is both the points on the surface, and the normal to the surface at that point.

When they say scalar field or density field     are the referring to the voxel field, which is the points in space that are occupied or not.     or is scalar field and density field, two different things

A density field in this case is basically a distance field. It encodes the distance to the surface at any point (as opposed to the binary filled/empty field you'd use for minecraft-style blocky terrain).

What the hell is the quadratic error function (QEF) and how would I implement it

If you don't care about sharp corners, you can skip the QEF, and just average the points instead. That'll yield a smooth surface more reminiscent of surface nets.

Basically you take the planes formed by the normals at each hermite point in a given voxel, and use the QEF to find the point that minimises the discontinuities between those planes.

What fields of math do I have to be familiar with to understand the paper on face value

Calculus, Discrete math, and computational geometry would all be handy.

Share this post


Link to post
Share on other sites

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

Sign in to follow this