Work on cubic extractor tests.
This commit is contained in:
parent
3c82652f46
commit
be47aec7f7
@ -189,7 +189,7 @@ namespace PolyVox
|
|||||||
};
|
};
|
||||||
|
|
||||||
template<typename VolumeType, typename MeshType, typename IsQuadNeeded = DefaultIsQuadNeeded<typename VolumeType::VoxelType> >
|
template<typename VolumeType, typename MeshType, typename IsQuadNeeded = DefaultIsQuadNeeded<typename VolumeType::VoxelType> >
|
||||||
void extractCubicProvidedMesh(VolumeType* volData, Region region, MeshType* result, IsQuadNeeded isQuadNeeded = IsQuadNeeded(), WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true)
|
void extractCubicMeshCustom(VolumeType* volData, Region region, MeshType* result, IsQuadNeeded isQuadNeeded = IsQuadNeeded(), WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true)
|
||||||
{
|
{
|
||||||
CubicSurfaceExtractor<VolumeType, MeshType, IsQuadNeeded> extractor(volData, region, result, isQuadNeeded, eWrapMode, tBorderValue, bMergeQuads);
|
CubicSurfaceExtractor<VolumeType, MeshType, IsQuadNeeded> extractor(volData, region, result, isQuadNeeded, eWrapMode, tBorderValue, bMergeQuads);
|
||||||
extractor.execute();
|
extractor.execute();
|
||||||
@ -199,7 +199,7 @@ namespace PolyVox
|
|||||||
Mesh<CubicVertex<typename VolumeType::VoxelType> > extractCubicMesh(VolumeType* volData, Region region, IsQuadNeeded isQuadNeeded = IsQuadNeeded(), WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true)
|
Mesh<CubicVertex<typename VolumeType::VoxelType> > extractCubicMesh(VolumeType* volData, Region region, IsQuadNeeded isQuadNeeded = IsQuadNeeded(), WrapMode eWrapMode = WrapModes::Border, typename VolumeType::VoxelType tBorderValue = typename VolumeType::VoxelType(), bool bMergeQuads = true)
|
||||||
{
|
{
|
||||||
Mesh< CubicVertex<typename VolumeType::VoxelType> > result;
|
Mesh< CubicVertex<typename VolumeType::VoxelType> > result;
|
||||||
extractCubicProvidedMesh(volData, region, &result, isQuadNeeded, eWrapMode, tBorderValue, bMergeQuads);
|
extractCubicMeshCustom(volData, region, &result, isQuadNeeded, eWrapMode, tBorderValue, bMergeQuads);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,9 @@ public:
|
|||||||
|
|
||||||
bool operator()(VoxelType back, VoxelType front, VoxelType& materialToUse)
|
bool operator()(VoxelType back, VoxelType front, VoxelType& materialToUse)
|
||||||
{
|
{
|
||||||
if ((back > 0) && (front == 0))
|
// Not a useful test - it just does something different
|
||||||
|
// to the DefaultIsQuadNeeded so we can check it compiles.
|
||||||
|
if ((back > 1) && (front <= 1))
|
||||||
{
|
{
|
||||||
materialToUse = static_cast<VoxelType>(back);
|
materialToUse = static_cast<VoxelType>(back);
|
||||||
return true;
|
return true;
|
||||||
@ -241,27 +243,31 @@ void TestCubicSurfaceExtractor::testExecute()
|
|||||||
}
|
}
|
||||||
QCOMPARE(result, uExpectedSumOfVerticesAndIndices);
|
QCOMPARE(result, uExpectedSumOfVerticesAndIndices);
|
||||||
|
|
||||||
|
// Test with default mesh and contoller types.
|
||||||
auto uint8Vol = createAndFillVolumeWithNoise<uint8_t>(0, 2);
|
auto uint8Vol = createAndFillVolumeWithNoise<uint8_t>(0, 2);
|
||||||
auto uint8Mesh = extractCubicMesh(uint8Vol, uint8Vol->getEnclosingRegion());
|
auto uint8Mesh = extractCubicMesh(uint8Vol, uint8Vol->getEnclosingRegion());
|
||||||
QCOMPARE(uint8Mesh.getNoOfVertices(), uint32_t(57687));
|
QCOMPARE(uint8Mesh.getNoOfVertices(), uint32_t(57687));
|
||||||
QCOMPARE(uint8Mesh.getNoOfIndices(), uint32_t(216234));
|
QCOMPARE(uint8Mesh.getNoOfIndices(), uint32_t(216234));
|
||||||
|
|
||||||
|
// Test with default mesh type but user-provided controller.
|
||||||
auto int8Vol = createAndFillVolumeWithNoise<int8_t>(0, 2);
|
auto int8Vol = createAndFillVolumeWithNoise<int8_t>(0, 2);
|
||||||
auto int8Mesh = extractCubicMesh(int8Vol, int8Vol->getEnclosingRegion(), DefaultIsQuadNeeded<int8_t>());
|
auto int8Mesh = extractCubicMesh(int8Vol, int8Vol->getEnclosingRegion(), CustomIsQuadNeeded<int8_t>());
|
||||||
QCOMPARE(int8Mesh.getNoOfVertices(), uint32_t(57687));
|
QCOMPARE(int8Mesh.getNoOfVertices(), uint32_t(29027));
|
||||||
QCOMPARE(int8Mesh.getNoOfIndices(), uint32_t(216234));
|
QCOMPARE(int8Mesh.getNoOfIndices(), uint32_t(178356));
|
||||||
|
|
||||||
|
// Test with default controller but user-provided mesh.
|
||||||
auto uint32Vol = createAndFillVolumeWithNoise<uint32_t>(0, 2);
|
auto uint32Vol = createAndFillVolumeWithNoise<uint32_t>(0, 2);
|
||||||
Mesh< CubicVertex< uint32_t >, uint16_t > uint32Mesh;
|
Mesh< CubicVertex< uint32_t >, uint16_t > uint32Mesh;
|
||||||
extractCubicProvidedMesh(uint32Vol, uint32Vol->getEnclosingRegion(), &uint32Mesh);
|
extractCubicMeshCustom(uint32Vol, uint32Vol->getEnclosingRegion(), &uint32Mesh);
|
||||||
QCOMPARE(uint32Mesh.getNoOfVertices(), uint16_t(57687));
|
QCOMPARE(uint32Mesh.getNoOfVertices(), uint16_t(57687));
|
||||||
QCOMPARE(uint32Mesh.getNoOfIndices(), uint32_t(216234));
|
QCOMPARE(uint32Mesh.getNoOfIndices(), uint32_t(216234));
|
||||||
|
|
||||||
|
// Test with both mesh and controller being provided by the user.
|
||||||
auto int32Vol = createAndFillVolumeWithNoise<int32_t>(0, 2);
|
auto int32Vol = createAndFillVolumeWithNoise<int32_t>(0, 2);
|
||||||
Mesh< CubicVertex< int32_t >, uint16_t > int32Mesh;
|
Mesh< CubicVertex< int32_t >, uint16_t > int32Mesh;
|
||||||
extractCubicProvidedMesh(int32Vol, int32Vol->getEnclosingRegion(), &int32Mesh, DefaultIsQuadNeeded<int32_t>());
|
extractCubicMeshCustom(int32Vol, int32Vol->getEnclosingRegion(), &int32Mesh, CustomIsQuadNeeded<int32_t>());
|
||||||
QCOMPARE(int32Mesh.getNoOfVertices(), uint16_t(57687));
|
QCOMPARE(int32Mesh.getNoOfVertices(), uint16_t(29027));
|
||||||
QCOMPARE(int32Mesh.getNoOfIndices(), uint32_t(216234));
|
QCOMPARE(int32Mesh.getNoOfIndices(), uint32_t(178356));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user