24#ifndef OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H
25#define OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H
27#include "../version.h"
29#include "../sdc/types.h"
30#include "../sdc/options.h"
31#include "../far/types.h"
32#include "../far/topologyLevel.h"
38namespace OPENSUBDIV_VERSION {
40namespace Vtr {
namespace internal {
class SparseSelector; } }
41namespace Far {
namespace internal {
class FeatureMask; } }
213 template <
class MESH>
219 template <
typename REAL>
234 TopologyRefiner & operator=(TopologyRefiner
const &) {
return *
this; }
237 internal::FeatureMask
const & mask,
242 void initializeInventory();
247 void assembleFarLevels();
254 unsigned int _isUniform : 1;
255 unsigned int _hasHoles : 1;
256 unsigned int _hasIrregFaces : 1;
257 unsigned int _regFaceSize : 3;
258 unsigned int _maxLevel : 4;
261 UniformOptions _uniformOptions;
262 AdaptiveOptions _adaptiveOptions;
268 int _totalFaceVertices;
272 bool _baseLevelOwned;
274 std::vector<Vtr::internal::Level *> _levels;
275 std::vector<Vtr::internal::Refinement *> _refinements;
277 std::vector<TopologyLevel> _farLevels;
284 return _levels[0]->getNumFVarChannels();
289 return _levels[0]->getFVarOptions(channel).GetFVarLinearInterpolation();
295using namespace OPENSUBDIV_VERSION;
Vtr::ConstIndexArray ConstIndexArray
SchemeType
Enumerated type for all subdivision schemes supported by OpenSubdiv.
Applies refinement operations to generic primvar data.
Object used to compute and query ptex face indices.
An interface for accessing data in a specific level of a refined topology hierarchy.
Factory for constructing TopologyRefiners from specific mesh classes.
Stores topology data for a specified set of refinement options.
TopologyRefiner(TopologyRefiner const &source)
int GetMaxValence() const
Returns the maximum vertex valence in all levels.
Vtr::internal::Level const & getLevel(int l) const
bool HasHoles() const
Returns true if faces have been tagged as holes.
int GetNumLevels() const
Returns the number of refinement levels.
int GetNumFVarValuesTotal(int channel=0) const
Returns the total number of face-varying values in all levels.
Vtr::internal::Refinement const & getRefinement(int l) const
Sdc::Options GetSchemeOptions() const
Returns the subdivision options.
Vtr::internal::Level & getLevel(int l)
bool IsUniform() const
Returns true if uniform refinement has been applied.
Sdc::SchemeType GetSchemeType() const
Returns the subdivision scheme.
int GetMaxLevel() const
Returns the highest level of refinement.
TopologyRefiner(Sdc::SchemeType type, Sdc::Options options=Sdc::Options())
Constructor.
int GetNumEdgesTotal() const
Returns the total number of edges in all levels.
friend class PatchBuilder
int GetNumFVarChannels() const
Returns the number of face-varying channels in the tables.
UniformOptions GetUniformOptions() const
Returns the options specified on refinement.
int GetNumFacesTotal() const
Returns the total number of edges in all levels.
int GetNumFaceVerticesTotal() const
Returns the total number of face vertices in all levels.
Vtr::internal::Refinement & getRefinement(int l)
void RefineUniform(UniformOptions options)
Refine the topology uniformly.
~TopologyRefiner()
Destructor.
friend class PatchTableBuilder
TopologyLevel const & GetLevel(int level) const
Returns a handle to access data specific to a particular level.
int GetNumVerticesTotal() const
Returns the total number of vertices in all levels.
void Unrefine()
Unrefine the topology, keeping only the base level.
AdaptiveOptions GetAdaptiveOptions() const
Returns the options specified on refinement.
Sdc::Options::FVarLinearInterpolation GetFVarLinearInterpolation(int channel=0) const
Returns the face-varying interpolation rule set for a given channel.
void RefineAdaptive(AdaptiveOptions options, ConstIndexArray selectedFaces=ConstIndexArray())
Feature Adaptive topology refinement.
Uniform refinement options.
unsigned int refinementLevel
Number of refinement iterations.
unsigned int orderVerticesFromFacesFirst
unsigned int fullTopologyInLastLevel
UniformOptions(int level)
Adaptive refinement options.
unsigned int secondaryLevel
unsigned int orderVerticesFromFacesFirst
AdaptiveOptions(int level)
unsigned int isolationLevel
unsigned int useSingleCreasePatch
unsigned int useInfSharpPatch
unsigned int considerFVarChannels
Private base class of Factories for constructing TopologyRefiners.
All supported options applying to subdivision scheme.