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