Skip to content

Research and Propsals for Comments #46

@QuantumEntangledAndy

Description

@QuantumEntangledAndy

Hello again.

I have been getting back into my volume based rendering in rust and wanted to discuss some of the research with you.


Bakers

I have been looking at other surfacing algorithms and some of which I think we can implement into the bakers.

  • Marching Tetrahedra
    • Similar to marching cubes but meshes are always manifold
    • Uses about 4x the number of verticies
  • Transvoxel
    • This generates smooth meshes with LOD so that further aways vertices are further apart
    • This might be nice to add for non-block like terrain
  • Dual marching cubes
    • Like marching cubes but creates fewer vertices on the planes then at the corners

Links:

  • voxel tools go code for a similar project to this (includes transvoxel)
  • smooth terrain blog blog post on making smooth terrain from volume data (includes comparison of different surfacing methods)
  • voxel gfx Page that explains how to implement dual marching cubes as well as other aspects like trilinear shaders and octtrees for the LOD

Chunk Trees

With regards to a tree structure to hold chunks the most interesting one I've seen is this one by voxel gfx it holds the chunks in an octtree where each level represents higher detail. This has the nice benefit of allowing LODS to page in and out

On a more general structure I think we could use a method like dual grid to help work out the neighbors in a chunk tree

Density

Currently the chunks are all integer values on a grid. But it might be more useful to represent them as densities on a grid. There are a few benefits to this:

  • Early exit
    • A density map is meshed by finding the surface of an isovalue, if the density at a voxel is very far away from this isovalue we could assume that neighboring voxels are also likely to be far away from the isosurface and can be skipped.
  • Interpolation
    • We can interpolate values off of the grid points, this could be useful for working out arbitary LOD levels from the same source data
  • Gradients
    • We can work out gradients. This can be used for the normal calculations and can be used for more complex meshing algorithms like Dual Contours that require gradients.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions