25 #ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H 26 #define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H 28 #include "../version.h" 30 #include "../far/patchTable.h" 33 namespace OPENSUBDIV_VERSION {
39 class TopologyRefiner;
111 struct BuilderContext;
126 static void identifyAdaptivePatches(BuilderContext & context);
128 static void populateAdaptivePatches(BuilderContext & context,
131 static void allocateVertexTables(BuilderContext
const & context,
134 static void allocateFVarChannels(BuilderContext
const & context,
137 static PatchParam computePatchParam(BuilderContext
const & context,
139 int boundaryMask,
int transitionMask);
152 unsigned int _hasPatch : 1;
153 unsigned int _isRegular : 1;
154 unsigned int _transitionMask : 4;
155 unsigned int _boundaryMask : 4;
156 unsigned int _boundaryIndex : 2;
157 unsigned int _boundaryCount : 3;
158 unsigned int _hasBoundaryEdge : 3;
159 unsigned int _isSingleCrease : 1;
162 void assignBoundaryPropertiesFromEdgeMask(
int boundaryEdgeMask);
163 void assignBoundaryPropertiesFromVertexMask(
int boundaryVertexMask);
164 void assignTransitionPropertiesFromEdgeMask(
int boundaryVertexMask);
172 using namespace OPENSUBDIV_VERSION;
use legacy (2.x) Gregory patches (4 cp + valence table) as end-caps
unsigned int endCapType
EndCapType.
Container for arrays of parametric patches.
unsigned int generateFVarTables
Generate face-varying patch tables.
use BSpline basis patches (16 cp) as end-caps
Public options for the PatchTable factory.
use Gregory basis patches (20 cp) as end-caps
void SetEndCapType(EndCapType e)
Set endcap patch type.
Factory for constructing a PatchTable from a TopologyRefiner.
Stores topology data for a specified set of refinement options.
EndCapType GetEndCapType() const
Get endcap patch type.
unsigned int shareEndCapPatchPoints
unsigned int useInfSharpPatch
Use infinitely-sharp patch.
Options(unsigned int maxIsolation=10)
unsigned int triangulateQuads
Triangulate 'QUADS' primitives (Uniform mode only)
unsigned int maxIsolationLevel
Cap adaptive feature isolation to the given level (max. 10)
int numFVarChannels
Number of channel indices and interpolation modes passed.
unsigned int useSingleCreasePatch
Use single crease patch.
unsigned int generateFVarLegacyLinearPatches
Generate all linear face-varying patches (legacy)
unsigned int generateAllLevels
Include levels from 'firstLevel' to 'maxLevel' (Uniform mode only)
int const * fvarChannelIndices
List containing the indices of the channels selected for the factory.
static PatchTable * Create(TopologyRefiner const &refiner, Options options=Options())
Factory constructor for PatchTable.
use bilinear quads (4 cp) as end-caps
std::vector< PatchFaceTag > PatchTagVector