TopologyLevel is an interface for accessing data in a specific level of a refined topology hierarchy. Instances of TopologyLevel are created and owned by a TopologyRefiner, which will return const-references to them. Such references are only valid during the lifetime of TopologyRefiner that created and returned them, and only for a given refinement, i.e. if the TopologyRefiner is re-refined, any references to TopoologyLevels are invalidated. More...
#include <topologyLevel.h>
Public Member Functions | |
TopologyLevel () | |
~TopologyLevel () | |
Methods to inspect the overall inventory of components: | |
All three main component types are indexed locally within each level. For some topological relationships – notably face-vertices, which is often the only relationship of interest – the total number of entries is also made available. | |
int | GetNumVertices () const |
Return the number of vertices in this level. More... | |
int | GetNumFaces () const |
Return the number of faces in this level. More... | |
int | GetNumEdges () const |
Return the number of edges in this level. More... | |
int | GetNumFaceVertices () const |
Return the total number of face-vertices, i.e. the sum of all vertices for all faces. More... | |
Methods to inspect topological relationships for individual components: | |
With three main component types (vertices, faces and edges), for each of the three components the TopologyLevel stores the incident/adjacent components of the other two types. So there are six relationships available for immediate inspection. All are accessed by methods that return an array of fixed size containing the indices of the incident components. For some of the relations, i.e. those for which the incident components are of higher order or 'contain' the component itself (e.g. a vertex has incident faces that contain it), an additional 'local index' is available that identifies the component within each of its neighbors. For example, if vertex V is the k'th vertex in some face F, then when F occurs in the set of incident vertices of V, the local index corresponding to F will be k. The ordering of local indices matches the ordering of the incident component to which it corresponds. | |
ConstIndexArray | GetFaceVertices (Index f) const |
Access the vertices incident a given face. More... | |
ConstIndexArray | GetFaceEdges (Index f) const |
Access the edges incident a given face. More... | |
ConstIndexArray | GetEdgeVertices (Index e) const |
Access the vertices incident a given edge. More... | |
ConstIndexArray | GetEdgeFaces (Index e) const |
Access the faces incident a given edge. More... | |
ConstIndexArray | GetVertexFaces (Index v) const |
Access the faces incident a given vertex. More... | |
ConstIndexArray | GetVertexEdges (Index v) const |
Access the edges incident a given vertex. More... | |
ConstLocalIndexArray | GetVertexFaceLocalIndices (Index v) const |
Access the local indices of a vertex with respect to its incident faces. More... | |
ConstLocalIndexArray | GetVertexEdgeLocalIndices (Index v) const |
Access the local indices of a vertex with respect to its incident edges. More... | |
ConstLocalIndexArray | GetEdgeFaceLocalIndices (Index e) const |
Access the local indices of an edge with respect to its incident faces. More... | |
Index | FindEdge (Index v0, Index v1) const |
Identify the edge matching the given vertex pair. More... | |
Methods to inspect feature tags for individual components: | |
While only a subset of components may have been tagged with features such as sharpness, all such features have a default value and so all components can be inspected. | |
float | GetEdgeSharpness (Index e) const |
Return the sharpness assigned a given edge. More... | |
float | GetVertexSharpness (Index v) const |
Return the sharpness assigned a given vertex. More... | |
bool | IsFaceHole (Index f) const |
Return if a given face has been tagged as a hole. More... | |
Sdc::Crease::Rule | GetVertexRule (Index v) const |
Return the subdivision rule assigned a given vertex specific to this level. More... | |
Methods to inspect face-varying data: | |
Face-varying data is organized into topologically independent channels, each with an integer identifier. Access to face-varying data generally requires the specification of a channel, though with a single channel being a common situation the first/only channel will be assumed if unspecified. A face-varying channel is composed of a set of values that may be shared by faces meeting at a common vertex. Just as there are set of vertices that are associated with faces by index (ranging from 0 to num-vertices - 1), face-varying values are also referenced by index (ranging from 0 to num-values -1). The face-varying values associated with a face are accessed similarly to the way in which vertices associated with the face are accessed – an array of fixed size containing the indices for each corner is provided for inspection, iteration, etc. | |
int | GetNumFVarChannels () const |
Return the number of face-varying channels (should be same for all levels) More... | |
int | GetNumFVarValues (int channel=0) const |
Return the total number of face-varying values in a particular channel (the upper bound of a face-varying value index) More... | |
ConstIndexArray | GetFaceFVarValues (Index f, int channel=0) const |
Access the face-varying values associated with a particular face. More... | |
Methods to identify parent or child components in adjoining levels of refinement: | |
ConstIndexArray | GetFaceChildFaces (Index f) const |
Access the child faces (in the next level) of a given face. More... | |
ConstIndexArray | GetFaceChildEdges (Index f) const |
Access the child edges (in the next level) of a given face. More... | |
ConstIndexArray | GetEdgeChildEdges (Index e) const |
Access the child edges (in the next level) of a given edge. More... | |
Index | GetFaceChildVertex (Index f) const |
Return the child vertex (in the next level) of a given face. More... | |
Index | GetEdgeChildVertex (Index e) const |
Return the child vertex (in the next level) of a given edge. More... | |
Index | GetVertexChildVertex (Index v) const |
Return the child vertex (in the next level) of a given vertex. More... | |
Index | GetFaceParentFace (Index f) const |
Return the parent face (in the previous level) of a given face. More... | |
Debugging aides: | |
bool | ValidateTopology () const |
void | PrintTopology (bool children=true) const |
Friends | |
class | TopologyRefiner |
TopologyLevel is an interface for accessing data in a specific level of a refined topology hierarchy. Instances of TopologyLevel are created and owned by a TopologyRefiner, which will return const-references to them. Such references are only valid during the lifetime of TopologyRefiner that created and returned them, and only for a given refinement, i.e. if the TopologyRefiner is re-refined, any references to TopoologyLevels are invalidated.
Definition at line 47 of file topologyLevel.h.
|
inline |
Definition at line 214 of file topologyLevel.h.
|
inline |
Definition at line 215 of file topologyLevel.h.
Identify the edge matching the given vertex pair.
Definition at line 118 of file topologyLevel.h.
|
inline |
Access the child edges (in the next level) of a given edge.
Definition at line 182 of file topologyLevel.h.
Return the child vertex (in the next level) of a given edge.
Definition at line 188 of file topologyLevel.h.
|
inline |
Access the local indices of an edge with respect to its incident faces.
Definition at line 115 of file topologyLevel.h.
|
inline |
Access the faces incident a given edge.
Definition at line 100 of file topologyLevel.h.
|
inline |
Return the sharpness assigned a given edge.
Definition at line 129 of file topologyLevel.h.
|
inline |
Access the vertices incident a given edge.
Definition at line 97 of file topologyLevel.h.
|
inline |
Access the child edges (in the next level) of a given face.
Definition at line 179 of file topologyLevel.h.
|
inline |
Access the child faces (in the next level) of a given face.
Definition at line 176 of file topologyLevel.h.
Return the child vertex (in the next level) of a given face.
Definition at line 185 of file topologyLevel.h.
|
inline |
Access the edges incident a given face.
Definition at line 94 of file topologyLevel.h.
|
inline |
Access the face-varying values associated with a particular face.
Definition at line 169 of file topologyLevel.h.
Return the parent face (in the previous level) of a given face.
Definition at line 194 of file topologyLevel.h.
|
inline |
Access the vertices incident a given face.
Definition at line 91 of file topologyLevel.h.
|
inline |
Return the number of edges in this level.
Definition at line 66 of file topologyLevel.h.
|
inline |
Return the number of faces in this level.
Definition at line 63 of file topologyLevel.h.
|
inline |
Return the total number of face-vertices, i.e. the sum of all vertices for all faces.
Definition at line 69 of file topologyLevel.h.
|
inline |
Return the number of face-varying channels (should be same for all levels)
Definition at line 162 of file topologyLevel.h.
|
inline |
Return the total number of face-varying values in a particular channel (the upper bound of a face-varying value index)
Definition at line 166 of file topologyLevel.h.
|
inline |
Return the number of vertices in this level.
Definition at line 60 of file topologyLevel.h.
Return the child vertex (in the next level) of a given vertex.
Definition at line 191 of file topologyLevel.h.
|
inline |
Access the local indices of a vertex with respect to its incident edges.
Definition at line 112 of file topologyLevel.h.
|
inline |
Access the edges incident a given vertex.
Definition at line 106 of file topologyLevel.h.
|
inline |
Access the local indices of a vertex with respect to its incident faces.
Definition at line 109 of file topologyLevel.h.
|
inline |
Access the faces incident a given vertex.
Definition at line 103 of file topologyLevel.h.
|
inline |
Return the subdivision rule assigned a given vertex specific to this level.
Definition at line 138 of file topologyLevel.h.
|
inline |
Return the sharpness assigned a given vertex.
Definition at line 132 of file topologyLevel.h.
|
inline |
Return if a given face has been tagged as a hole.
Definition at line 135 of file topologyLevel.h.
|
inline |
Definition at line 201 of file topologyLevel.h.
|
inline |
Definition at line 200 of file topologyLevel.h.
|
friend |
Definition at line 206 of file topologyLevel.h.