Go to the documentation of this file.
29 #ifndef __ProgressiveMeshGenerator_H_
30 #define __ProgressiveMeshGenerator_H_
89 template<
typename T,
unsigned S>
110 struct PMCollapseCostLess;
168 unsigned int vertexID[3];
217 template<
typename IndexType>
232 bool hasSrcID(
unsigned int srcID,
unsigned short submeshID);
233 size_t findDstID(
unsigned int srcID,
unsigned short submeshID);
240 #endif // ifndef NDEBUG
void computeLods(LodConfig &lodConfigs)
iterator add(const T &item)
void addEdge(PMVertex *v, const PMEdge &edge)
void assertValidVertex(PMVertex *v)
PMEdge(PMVertex *destination)
vector< PMVertex >::type VertexList
void addVertexData(VertexData *vertexData, bool useSharedVertexLookup)
ProgressiveMeshGenerator()
void assertOutdatedCollapseCost(PMVertex *vertex)
VectorSet< PMTriangle *, 7 > VTriangles
CollapseCostHeap::iterator costHeapPosition
VectorSet< PMEdge, 8 > VEdges
bool remove(const T &item)
bool isDuplicateTriangle(PMTriangle *triangle, PMTriangle *triangle2)
unsigned int getVertexID(const PMVertex *v) const
VertexLookupList mVertexLookup
PMEdge * getPointer(VEdges::iterator it)
SmallVector< T, S >::iterator iterator
vector< PMTriangle >::type TriangleList
void removeExists(const T &item)
PMTriangle * isDuplicateTriangle(PMTriangle *triangle)
void removeTriangleFromEdges(PMTriangle *triangle, PMVertex *skip=NULL)
SmallVector - This is a 'vector' (really, a variable-sized array), optimized for the case when the ar...
iterator findExists(const T &item)
void printTriangle(PMTriangle *triangle, stringstream &str)
UniqueVertexSet mUniqueVertexSet
virtual ~ProgressiveMeshGenerator()
void replaceExists(const T &oldItem, const T &newItem)
iterator find(const T &item)
virtual void getAutoconfig(MeshPtr &inMesh, LodConfig &outLodConfig)
Fills LOD Config with a config, which works on any mesh.
Summary class collecting together vertex source information.
vector< PMIndexBufferInfo >::type IndexBufferInfoList
ProgressiveMeshGenerator * mGen
CollapseCostHeap mCollapseCostHeap
HashSet< PMVertex *, PMVertexHash, PMVertexEqual > UniqueVertexSet
void updateVertexCollapseCost(PMVertex *src)
bool hasSrcID(unsigned int srcID, unsigned short submeshID)
size_t calcLodVertexCount(const LodLevel &lodConfig)
void collapse(PMVertex *vertex)
multimap< Real, PMVertex * >::type CollapseCostHeap
void computeVertexCollapseCost(PMVertex *vertex)
void computeNormal()
Vertex ID in the buffer associated with the submeshID.
vector< PMCollapsedEdge >::type CollapsedEdges
int getTriangleID(PMTriangle *triangle)
void addIndexData(IndexData *indexData, bool useSharedVertexLookup, unsigned short submeshID)
void generateLodLevels(LodConfig &lodConfig)
Generates the LOD levels for a mesh.
PMVertex * collapseTo
Triangle ID set, which are using this vertex.
void addNotExists(const T &item)
TriangleList mTriangleList
bool isBorderVertex(const PMVertex *vertex) const
vector< PMVertex * >::type VertexLookupList
size_t findDstID(unsigned int srcID, unsigned short submeshID)
virtual void generateLodLevels(LodConfig &lodConfig)=0
Generates the LOD levels for a mesh.
StringStream stringstream
void removeEdge(PMVertex *v, const PMEdge &edge)
void addTriangleToEdges(PMTriangle *triangle)
bool hasVertex(const PMVertex *v) const
IndexBufferInfoList mIndexBufferInfoList
void replaceVertexID(PMTriangle *triangle, unsigned int oldID, unsigned int newID, PMVertex *dst)
virtual ~ProgressiveMeshGeneratorBase()
float Real
Software floating point type.
Real computeEdgeCollapseCost(PMVertex *src, PMEdge *dstEdge)
Improved version of ProgressiveMesh.
PMTriangle * findSideTriangle(const PMVertex *v1, const PMVertex *v2)
Real mMeshBoundingSphereRadius
VertexLookupList mSharedVertexLookup
bool operator==(STLAllocator< T, P > const &, STLAllocator< T2, P > const &)
determine equality, can memory from another allocator be released by this allocator,...
virtual void generateAutoconfiguredLodLevels(MeshPtr &mesh)
Generates the LOD levels for a mesh without configuring it.
bool operator<(SharedPtr< T > const &a, SharedPtr< U > const &b)
PMVertexHash(ProgressiveMeshGenerator *gen)
Summary class collecting together index data source information.
Standard 3-dimensional vector.
Structure for automatic LOD configuration.
String mMeshName
The name of the mesh being processed.
CollapsedEdges tmpCollapsedEdges
void addIndexDataImpl(IndexType *iPos, const IndexType *iEnd, VertexLookupList &lookup, unsigned short submeshID)
Copyright © 2012 Torus Knot Software Ltd

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.