Hello, I'm trying to use this function to produce terrain using the built-in paging system.
Here's the code:
Code:
class PerlinNoisePager : public PolyVox::PagedVolume<MaterialDensityPair44>::Pager
{
public:
/// Constructor
PerlinNoisePager()
:PagedVolume<MaterialDensityPair44>::Pager()
{
}
/// Destructor
virtual ~PerlinNoisePager() {};
virtual void pageIn(const PolyVox::Region& region, PagedVolume<MaterialDensityPair44>::Chunk* pChunk)
{
FastNoise n;
n.SetFractalOctaves(2);
for (int x = region.getLowerX(); x <= region.getUpperX(); x++)
{
for (int y = region.getLowerY(); y <= region.getUpperY(); y++)
{
for (int z = region.getLowerZ(); z <= region.getUpperZ(); z++)
{
MaterialDensityPair44 voxel;
//Even setting this to 245 or 255 doesn't produce vertices.
voxel.setMaterial(n.GetValueFractal(x, y, z) * 40);
voxel.setDensity(MaterialDensityPair44::getMaxDensity());
//Wrte the voxel value into the volume
pChunk->setVoxel(x - region.getLowerX(), y - region.getLowerY(), z -region.getLowerZ(), voxel);
}
}
}
}
virtual void pageOut(const PolyVox::Region& region, PagedVolume<MaterialDensityPair44>::Chunk* /*pChunk*/)
{
std::cout << "warning unloading region: " << region.getLowerCorner() << " -> " << region.getUpperCorner() << std::endl;
}
};
Here's the code that calls this stuff:
Code:
PerlinNoisePager* pager = new PerlinNoisePager();
PagedVolume<MaterialDensityPair44> volData(pager, 8 * 1024 * 1024, 32);
PolyVox::Region reg2(Vector3DInt32(0, 0, 0), Vector3DInt32(154, 154, 154));
auto mesh = extractMarchingCubesMesh(&volData, reg2);
std::cout << "#vertices: " << mesh.getNoOfVertices() << std::endl;
This does not produce vertices but if I use the cubic extractor it does. Any ideas?
Thank you!