realazthat wrote:
A Volume class that instead of storing the entire volume, simply implements getVoxel(). This makes it more amenable to procedurally generated volumes. Caching/compressing etc. is all up to the implementer.
I think that with the work to seperate volume representation from the algorithms (
here), we may already be able to do what your describing. Or if not then we're certainly pretty close. At any rate I do agree it a useful and interesting feature
realazthat wrote:
A smarter Marcher for some use cases, would be given a starting voxel position, and only march along surfaces. Thus, instead of iterating through n^3 voxels, it would travel across O(n^2) in a normal use case. Of course it is possible to make a surface that has a worst case of O(n^3) but that would obviously not be a good use case for a "Crawling"/"Creeping" Marcher.
Yes, I think it's an interesting approach. But I think the difficult part is choosing a starting point, especially if you have several disconnected surfaces. One of the links mentions it's a good option for metaballs (when the starting points are easy to find) but I think in the general case it is more difficult.
realazthat wrote:
Together these two ideas can allow for faster and *much* less memory hungry mesh generation from voxels.
Maybe. I think this could go either way depending on the data and the size of the region being extracted.
realazthat wrote:
Oh and btw, I really love your coding style; it matches my own +/- some tricks.
Thanks
realazthat wrote:
But fractal noise naturally builds down from the top ... that is, you get a low resolution of noise (smoothed out), and you then add its own (faded) image four times into itself at half resolution; this adds detail, but from a distance this detail is not really visible. I am trying to apply the same idea to voxel generation. I dunno if it will mess up the crack-patching algorithm; I'll get back to you...
Maybe... I'm not sure how well this will work. You're in uncharted territory here
realazthat wrote:
To support destructibility in my world, I intend to use an inverse Volume; one that would indicate where the world differs from the noise generator. Thus, my volume's getPixel would first check the inverse Volume, then if it finds nothing, it would ask the noise generator for a voxel (I am using the Simplex noise generator for 3D btw).
Yes, this sounds sensible. Your inverse volume would be mostly empty and so would compress down very well.