Understanding Dual Contouring

Started by
0 comments, last by swiftcoder 7 years, 5 months ago

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.

Advertisement

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.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

This topic is closed to new replies.

Advertisement