From 5eb5d33aa1b862bfebd03b6d02e28acc0e2c5139 Mon Sep 17 00:00:00 2001 From: David Williams Date: Fri, 13 Jun 2008 21:05:45 +0000 Subject: [PATCH] Mesh decimation now works for levels 0,1,2 and 3. --- PolyVoxCore/source/SurfaceExtractors.cpp | 2 +- PolyVoxCore/source/SurfaceExtractorsDecimated.cpp | 4 ++-- PolyVoxCore/source/VolumeChangeTracker.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PolyVoxCore/source/SurfaceExtractors.cpp b/PolyVoxCore/source/SurfaceExtractors.cpp index 08c67878..bffbb8bd 100644 --- a/PolyVoxCore/source/SurfaceExtractors.cpp +++ b/PolyVoxCore/source/SurfaceExtractors.cpp @@ -29,7 +29,7 @@ namespace PolyVox regionGeometry.m_patchSingleMaterial = new IndexedSurfacePatch(false); regionGeometry.m_v3dRegionPosition = iterChangedRegions->getLowerCorner(); - generateDecimatedMeshDataForRegion(volume.getVolumeData(), 1, *iterChangedRegions, regionGeometry.m_patchSingleMaterial); + generateDecimatedMeshDataForRegion(volume.getVolumeData(), 0, *iterChangedRegions, regionGeometry.m_patchSingleMaterial); //genMultiFromSingle(regionGeometry.m_patchSingleMaterial, regionGeometry.m_patchMultiMaterial); diff --git a/PolyVoxCore/source/SurfaceExtractorsDecimated.cpp b/PolyVoxCore/source/SurfaceExtractorsDecimated.cpp index 3612d374..b93deaa2 100644 --- a/PolyVoxCore/source/SurfaceExtractorsDecimated.cpp +++ b/PolyVoxCore/source/SurfaceExtractorsDecimated.cpp @@ -39,10 +39,10 @@ namespace PolyVox const uint8_t uStepSize = uLevel == 0 ? 1 : 1 << uLevel; - //When generating the mesh for a region we actually look one voxel outside it in the + //When generating the mesh for a region we actually look outside it in the // back, bottom, right direction. Protect against access violations by cropping region here Region regVolume = volumeData->getEnclosingRegion(); - regVolume.setUpperCorner(regVolume.getUpperCorner() - Vector3DInt32(uLevel+uStepSize,uLevel+uStepSize,uLevel+uStepSize)); + regVolume.setUpperCorner(regVolume.getUpperCorner() - Vector3DInt32(2*uStepSize-1,2*uStepSize-1,2*uStepSize-1)); region.cropTo(regVolume); //Offset from volume corner diff --git a/PolyVoxCore/source/VolumeChangeTracker.cpp b/PolyVoxCore/source/VolumeChangeTracker.cpp index 02bd8604..6b933d15 100644 --- a/PolyVoxCore/source/VolumeChangeTracker.cpp +++ b/PolyVoxCore/source/VolumeChangeTracker.cpp @@ -64,7 +64,7 @@ namespace PolyVox listToFill.clear(); //Regenerate meshes. - for(uint16_t regionZ = 0; regionZ < POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS-1; ++regionZ) + for(uint16_t regionZ = 0; regionZ < POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS; ++regionZ) //for(uint16_t regionZ = 0; regionZ < 1; ++regionZ) { for(uint16_t regionY = 0; regionY < POLYVOX_VOLUME_SIDE_LENGTH_IN_REGIONS; ++regionY)