Renamed SurfaceExtractionController to MarchingCubesController.
This commit is contained in:
parent
eceb6851c0
commit
9a498bad7b
@ -62,7 +62,7 @@ SET(CORE_INC_FILES
|
|||||||
include/PolyVoxCore/SimpleVolume.inl
|
include/PolyVoxCore/SimpleVolume.inl
|
||||||
include/PolyVoxCore/SimpleVolumeBlock.inl
|
include/PolyVoxCore/SimpleVolumeBlock.inl
|
||||||
include/PolyVoxCore/SimpleVolumeSampler.inl
|
include/PolyVoxCore/SimpleVolumeSampler.inl
|
||||||
include/PolyVoxCore/SurfaceExtractionController.h
|
include/PolyVoxCore/MarchingCubesController.h
|
||||||
include/PolyVoxCore/MarchingCubesSurfaceExtractor.h
|
include/PolyVoxCore/MarchingCubesSurfaceExtractor.h
|
||||||
include/PolyVoxCore/MarchingCubesSurfaceExtractor.inl
|
include/PolyVoxCore/MarchingCubesSurfaceExtractor.inl
|
||||||
include/PolyVoxCore/SurfaceMesh.h
|
include/PolyVoxCore/SurfaceMesh.h
|
||||||
|
@ -24,7 +24,7 @@ freely, subject to the following restrictions:
|
|||||||
#ifndef __PolyVox_Density_H__
|
#ifndef __PolyVox_Density_H__
|
||||||
#define __PolyVox_Density_H__
|
#define __PolyVox_Density_H__
|
||||||
|
|
||||||
#include "PolyVoxCore/SurfaceExtractionController.h" //We'll specialise the controller contained in here
|
#include "PolyVoxCore/MarchingCubesController.h" //We'll specialise the controller contained in here
|
||||||
#include "PolyVoxCore/Voxel.h"
|
#include "PolyVoxCore/Voxel.h"
|
||||||
|
|
||||||
#include "PolyVoxImpl/TypeDef.h"
|
#include "PolyVoxImpl/TypeDef.h"
|
||||||
@ -103,19 +103,19 @@ namespace PolyVox
|
|||||||
typedef Density<uint8_t> Density8;
|
typedef Density<uint8_t> Density8;
|
||||||
|
|
||||||
template <typename Type>
|
template <typename Type>
|
||||||
class SurfaceExtractionController< Density<Type> >
|
class MarchingCubesController< Density<Type> >
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef Type DensityType;
|
typedef Type DensityType;
|
||||||
typedef float MaterialType;
|
typedef float MaterialType;
|
||||||
|
|
||||||
SurfaceExtractionController(void)
|
MarchingCubesController(void)
|
||||||
{
|
{
|
||||||
// Default to a threshold value halfway between the min and max possible values.
|
// Default to a threshold value halfway between the min and max possible values.
|
||||||
m_tThreshold = (Density<Type>::getMinDensity() + Density<Type>::getMaxDensity()) / 2;
|
m_tThreshold = (Density<Type>::getMinDensity() + Density<Type>::getMaxDensity()) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
SurfaceExtractionController(DensityType tThreshold)
|
MarchingCubesController(DensityType tThreshold)
|
||||||
{
|
{
|
||||||
m_tThreshold = tThreshold;
|
m_tThreshold = tThreshold;
|
||||||
}
|
}
|
||||||
|
@ -21,26 +21,26 @@ freely, subject to the following restrictions:
|
|||||||
distribution.
|
distribution.
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
#ifndef __PolyVox_SurfaceExtractionController_H__
|
#ifndef __PolyVox_MarchingCubesController_H__
|
||||||
#define __PolyVox_SurfaceExtractionController_H__
|
#define __PolyVox_MarchingCubesController_H__
|
||||||
|
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
namespace PolyVox
|
namespace PolyVox
|
||||||
{
|
{
|
||||||
template<typename VoxelType>
|
template<typename VoxelType>
|
||||||
class SurfaceExtractionController
|
class MarchingCubesController
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef VoxelType DensityType;
|
typedef VoxelType DensityType;
|
||||||
typedef float MaterialType;
|
typedef float MaterialType;
|
||||||
|
|
||||||
SurfaceExtractionController(void)
|
MarchingCubesController(void)
|
||||||
{
|
{
|
||||||
m_tThreshold = ((std::numeric_limits<DensityType>::min)() + (std::numeric_limits<DensityType>::max)()) / 2;
|
m_tThreshold = ((std::numeric_limits<DensityType>::min)() + (std::numeric_limits<DensityType>::max)()) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
SurfaceExtractionController(DensityType tThreshold)
|
MarchingCubesController(DensityType tThreshold)
|
||||||
{
|
{
|
||||||
m_tThreshold = tThreshold;
|
m_tThreshold = tThreshold;
|
||||||
}
|
}
|
@ -24,7 +24,7 @@ freely, subject to the following restrictions:
|
|||||||
#ifndef __PolyVox_MaterialDensityPair_H__
|
#ifndef __PolyVox_MaterialDensityPair_H__
|
||||||
#define __PolyVox_MaterialDensityPair_H__
|
#define __PolyVox_MaterialDensityPair_H__
|
||||||
|
|
||||||
#include "PolyVoxCore/SurfaceExtractionController.h" //We'll specialise the controller contained in here
|
#include "PolyVoxCore/MarchingCubesController.h" //We'll specialise the controller contained in here
|
||||||
#include "PolyVoxCore/Voxel.h"
|
#include "PolyVoxCore/Voxel.h"
|
||||||
|
|
||||||
#include "PolyVoxImpl/TypeDef.h"
|
#include "PolyVoxImpl/TypeDef.h"
|
||||||
@ -115,19 +115,19 @@ namespace PolyVox
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename Type, uint8_t NoOfMaterialBits, uint8_t NoOfDensityBits>
|
template <typename Type, uint8_t NoOfMaterialBits, uint8_t NoOfDensityBits>
|
||||||
class SurfaceExtractionController< MaterialDensityPair<Type, NoOfMaterialBits, NoOfDensityBits> >
|
class MarchingCubesController< MaterialDensityPair<Type, NoOfMaterialBits, NoOfDensityBits> >
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef Type DensityType;
|
typedef Type DensityType;
|
||||||
typedef Type MaterialType;
|
typedef Type MaterialType;
|
||||||
|
|
||||||
SurfaceExtractionController(void)
|
MarchingCubesController(void)
|
||||||
{
|
{
|
||||||
// Default to a threshold value halfway between the min and max possible values.
|
// Default to a threshold value halfway between the min and max possible values.
|
||||||
m_tThreshold = (MaterialDensityPair<Type, NoOfMaterialBits, NoOfDensityBits>::getMinDensity() + MaterialDensityPair<Type, NoOfMaterialBits, NoOfDensityBits>::getMaxDensity()) / 2;
|
m_tThreshold = (MaterialDensityPair<Type, NoOfMaterialBits, NoOfDensityBits>::getMinDensity() + MaterialDensityPair<Type, NoOfMaterialBits, NoOfDensityBits>::getMaxDensity()) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
SurfaceExtractionController(DensityType tThreshold)
|
MarchingCubesController(DensityType tThreshold)
|
||||||
{
|
{
|
||||||
m_tThreshold = tThreshold;
|
m_tThreshold = tThreshold;
|
||||||
}
|
}
|
||||||
|
7
library/bindings/MarchingCubesController.i
Normal file
7
library/bindings/MarchingCubesController.i
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
%module MarchingCubesController
|
||||||
|
%{
|
||||||
|
#include "MarchingCubesController.h"
|
||||||
|
%}
|
||||||
|
|
||||||
|
%include "MarchingCubesController.h"
|
||||||
|
|
11
library/bindings/MarchingCubesSurfaceExtractor.i
Normal file
11
library/bindings/MarchingCubesSurfaceExtractor.i
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
%module MarchingCubesSurfaceExtractor
|
||||||
|
%{
|
||||||
|
#include "SimpleVolume.h"
|
||||||
|
#include "Material.h"
|
||||||
|
#include "MarchingCubesSurfaceExtractor.h"
|
||||||
|
%}
|
||||||
|
|
||||||
|
%include "SimpleVolume.h"
|
||||||
|
%include "MarchingCubesSurfaceExtractor.h"
|
||||||
|
|
||||||
|
%template(SurfaceExtractorSimpleVolumeDensity8) PolyVox::MarchingCubesSurfaceExtractor<PolyVox::SimpleVolume<PolyVox::Density8> >;
|
@ -38,7 +38,7 @@ const char* __str__() {
|
|||||||
%include "VertexTypes.i"
|
%include "VertexTypes.i"
|
||||||
%include "SurfaceMesh.i"
|
%include "SurfaceMesh.i"
|
||||||
//%include "SimpleVolumeSampler.i"
|
//%include "SimpleVolumeSampler.i"
|
||||||
%include "SurfaceExtractionController.i"
|
%include "MarchingCubesController.i"
|
||||||
%include "MarchingCubesSurfaceExtractor.i"
|
%include "MarchingCubesSurfaceExtractor.i"
|
||||||
//%include "CubicSurfaceExtractor.i"
|
//%include "CubicSurfaceExtractor.i"
|
||||||
//%include "CubicSurfaceExtractorWithNormals.i"
|
//%include "CubicSurfaceExtractorWithNormals.i"
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
%module SurfaceExtractionController
|
|
||||||
%{
|
|
||||||
#include "SurfaceExtractionController.h"
|
|
||||||
%}
|
|
||||||
|
|
||||||
%include "SurfaceExtractionController.h"
|
|
||||||
|
|
@ -34,12 +34,12 @@ using namespace PolyVox;
|
|||||||
|
|
||||||
// Test our ability to modify the behaviour of the MarchingCubesSurfaceExtractor. This simple example only modifies
|
// Test our ability to modify the behaviour of the MarchingCubesSurfaceExtractor. This simple example only modifies
|
||||||
// the threshold (and actually this can be achieved by passing a parameter to the constructor of the
|
// the threshold (and actually this can be achieved by passing a parameter to the constructor of the
|
||||||
// DefaultSurfaceExtractionController) but you could implement custom behaviour in the other members
|
// DefaultMarchingCubesController) but you could implement custom behaviour in the other members
|
||||||
// if you wanted too. Actually, it's not clear if this ability is really useful because I can't think
|
// if you wanted too. Actually, it's not clear if this ability is really useful because I can't think
|
||||||
// what you'd modify apart from the threshold but the ability is at least available. Also, the
|
// what you'd modify apart from the threshold but the ability is at least available. Also, the
|
||||||
// DefaultSurfaceExtractionController is templatised whereas this exmple shows that controllers don't
|
// DefaultMarchingCubesController is templatised whereas this exmple shows that controllers don't
|
||||||
// have to be.
|
// have to be.
|
||||||
class CustomSurfaceExtractionController
|
class CustomMarchingCubesController
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
float convertToDensity(float voxel)
|
float convertToDensity(float voxel)
|
||||||
@ -117,7 +117,7 @@ void testForType(SurfaceMesh<PositionMaterialNormal>& result)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SurfaceExtractionController<VoxelType> controller(50);
|
MarchingCubesController<VoxelType> controller(50);
|
||||||
MarchingCubesSurfaceExtractor< SimpleVolume<VoxelType> > extractor(&volData, volData.getEnclosingRegion(), &result, controller);
|
MarchingCubesSurfaceExtractor< SimpleVolume<VoxelType> > extractor(&volData, volData.getEnclosingRegion(), &result, controller);
|
||||||
extractor.execute();
|
extractor.execute();
|
||||||
}
|
}
|
||||||
@ -141,8 +141,8 @@ void testCustomController(SurfaceMesh<PositionMaterialNormal>& result)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CustomSurfaceExtractionController controller;
|
CustomMarchingCubesController controller;
|
||||||
MarchingCubesSurfaceExtractor< SimpleVolume<float>, CustomSurfaceExtractionController > extractor(&volData, volData.getEnclosingRegion(), &result, controller);
|
MarchingCubesSurfaceExtractor< SimpleVolume<float>, CustomMarchingCubesController > extractor(&volData, volData.getEnclosingRegion(), &result, controller);
|
||||||
extractor.execute();
|
extractor.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user