Vertices now know whether they are on the edge of an indexed surface patch. This allows improved smoothing.

This commit is contained in:
David Williams
2009-07-23 16:54:46 +00:00
parent ab906a03f6
commit e5d38b597e
6 changed files with 36 additions and 20 deletions

View File

@ -53,7 +53,7 @@ namespace PolyVox
void clear(void);
const bool isEmpty(void) const;
void smoothPositions(float fAmount, uint8_t uNoRequiredUses = 0);
void smoothPositions(float fAmount, bool bIncludeEdgeVertices = false);
void sumNearbyNormals(bool bNormaliseResult = true);
POLYVOX_SHARED_PTR<IndexedSurfacePatch> extractSubset(std::set<uint8_t> setMaterials);

View File

@ -104,7 +104,7 @@ namespace PolyVox
//The surface patch we are currently filling.
IndexedSurfacePatch* m_ispCurrent;
//Information about the region we a re currently processing
//Information about the region we are currently processing
Region m_regInputCropped;
Region m_regInputUncropped;
Region m_regVolumeCropped;

View File

@ -37,7 +37,10 @@ namespace PolyVox
float getMaterial(void) const;
const Vector3DFloat& getNormal(void) const;
const Vector3DFloat& getPosition(void) const;
bool isEdgeVertex(void) const;
void setEdgeVertex(bool isEdgeVertex);
void setMaterial(float materialToSet);
void setNormal(const Vector3DFloat& normalToSet);
void setPosition(const Vector3DFloat& positionToSet);
@ -46,6 +49,7 @@ namespace PolyVox
Vector3DFloat position;
Vector3DFloat normal;
float material;
bool m_bIsEdgeVertex;
};