24 #ifndef OPENSUBDIV3_VTR_REFINEMENT_H 25 #define OPENSUBDIV3_VTR_REFINEMENT_H 27 #include "../version.h" 29 #include "../sdc/types.h" 30 #include "../sdc/options.h" 31 #include "../vtr/types.h" 32 #include "../vtr/level.h" 40 namespace OPENSUBDIV_VERSION {
453 using namespace OPENSUBDIV_VERSION;
void subdivideTopology(Relations const &relationsToSubdivide)
unsigned char _transitional
Index getFirstChildVertexFromFaces() const
SparseTag const & getParentEdgeSparseTag(Index e) const
Sdc::Options getOptions() const
FVarRefinement const & getFVarRefinement(int c) const
int getNumChildVerticesFromEdges() const
void populateVertexParentFromParentFaces(ChildTag const initialChildTags[2][4])
virtual void populateFaceVertexRelation()=0
void markSparseChildComponentIndices()
void populateFaceParentFromParentFaces(ChildTag const initialChildTags[2][4])
IndexVector _edgeChildVertIndex
void populateEdgeTagsFromParentEdges()
bool hasFaceVerticesFirst() const
unsigned int _faceVertices
int _childVertFromVertCount
std::vector< SparseTag > _parentVertexTag
SparseTag const & getParentFaceSparseTag(Index f) const
void populateVertexTagsFromParentVertices()
IndexVector _childFaceParentIndex
int _childFaceFromFaceCount
ConstIndexArray getEdgeChildEdges(Index parentEdge) const
IndexVector _faceChildFaceIndices
ChildTag const & getChildEdgeTag(Index e) const
void populateVertexTagsFromParentEdges()
Index getFirstChildEdgeFromFaces() const
ChildTag const & getChildFaceTag(Index f) const
void populateParentChildIndices()
SparseTag & getParentEdgeSparseTag(Index e)
int getRegularFaceSize() const
IndexVector _childVertexParentIndex
int _firstChildVertFromFace
unsigned int _minimalTopology
std::vector< FVarRefinement * > _fvarChannels
IndexVector _childEdgeParentIndex
std::vector< ChildTag > _childEdgeTag
void initializeSparseSelectionTags()
virtual void populateEdgeFaceRelation()=0
int getNumFVarChannels() const
virtual void populateFaceEdgeRelation()=0
unsigned int _edgeVertices
Index getChildFaceParentFace(Index f) const
unsigned char _parentType
std::vector< SparseTag > _parentFaceTag
int getNumChildVerticesFromFaces() const
IndexVector _faceChildEdgeIndices
void populateEdgeTagsFromParentFaces()
unsigned int _vertexFaces
Index getFirstChildVertexFromVertices() const
virtual void populateEdgeVertexRelation()=0
Level const & child() const
void populateVertexTagVectors()
void populateEdgeParentFromParentFaces(ChildTag const initialChildTags[2][4])
int _childVertFromEdgeCount
void populateEdgeParentFromParentEdges(ChildTag const initialChildTags[2][4])
void markSparseEdgeChildren()
Index getEdgeChildVertex(Index e) const
Array< Index > IndexArray
ConstIndexArray getFaceChildFaces(Index parentFace) const
int _firstChildVertFromEdge
void markSparseVertexChildren()
Sdc::Split getSplitType() const
virtual void populateVertexFaceRelation()=0
IndexArray _faceChildFaceCountsAndOffsets
unsigned int _faceVertsFirst
int _firstChildEdgeFromEdge
int _childEdgeFromFaceCount
int _childEdgeFromEdgeCount
void refine(Options options=Options())
ConstArray< Index > ConstIndexArray
void populateVertexParentFromParentVertices(ChildTag const initialChildTags[2][4])
Index getFirstChildVertexFromEdges() const
int _firstChildFaceFromFace
int _firstChildVertFromVert
bool isChildVertexComplete(Index v) const
void populateFaceTagsFromParentFaces()
SparseTag & getParentVertexSparseTag(Index v)
std::vector< SparseTag > _parentEdgeTag
unsigned char _indexInParent
All supported options applying to subdivision scheme.
void populateChildToParentMapping()
void populateVertexParentVectors(ChildTag const initialChildTags[2][4])
Level const & parent() const
void populateVertexParentFromParentEdges(ChildTag const initialChildTags[2][4])
void populateEdgeTagVectors()
virtual void populateVertexEdgeRelation()=0
ChildTag & getChildEdgeTag(Index e)
IndexVector _edgeChildEdgeIndices
int _firstChildEdgeFromFace
int getNumChildEdgesFromFaces() const
Split
Enumerated type for all face splitting schemes.
void printParentToChildMapping() const
virtual void markSparseFaceChildren()=0
void initializeChildComponentCounts()
IndexArray _faceChildEdgeCountsAndOffsets
ConstIndexArray getFaceChildEdges(Index parentFace) const
Index getChildEdgeParentIndex(Index e) const
void populateFaceParentVectors(ChildTag const initialChildTags[2][4])
int _childVertFromFaceCount
SparseTag & getParentFaceSparseTag(Index f)
Index getFirstChildEdgeFromEdges() const
void print(const Refinement *parentRefinement=0) const
void populateFaceTagVectors()
Refinement(Level const &parent, Level &child, Sdc::Options const &schemeOptions)
Index getFirstChildFaceFromFaces() const
int getChildFaceInParentFace(Index f) const
void populateVertexTagsFromParentFaces()
void subdivideSharpnessValues()
unsigned char _incomplete
virtual void allocateParentChildIndices()=0
IndexVector _vertChildVertIndex
std::vector< ChildTag > _childFaceTag
void populateEdgeParentVectors(ChildTag const initialChildTags[2][4])
void subdivideFVarChannels()
ChildTag const & getChildVertexTag(Index v) const
void populateParentToChildMapping()
void reclassifySemisharpVertices()
ChildTag & getChildFaceTag(Index f)
Index getFaceChildVertex(Index f) const
int getNumChildVerticesFromVertices() const
Index getChildVertexParentIndex(Index v) const
SparseTag const & getParentVertexSparseTag(Index v) const
int getNumChildFacesFromFaces() const
unsigned int _vertexEdges
void subdivideEdgeSharpness()
ChildTag & getChildVertexTag(Index v)
IndexVector _faceChildVertIndex
std::vector< Index > IndexVector
void subdivideVertexSharpness()
int getNumChildEdgesFromEdges() const
Index getVertexChildVertex(Index v) const
void propagateComponentTags()
std::vector< ChildTag > _childVertexTag