|
| IslandBundle (const GU_Detail *gdp, const GA_PrimitiveGroup *prims, const GA_EdgeGroup *seams, const GEO_DetachedHedgeInterface *hip=nullptr) |
|
void | repartitionIslands (const GA_EdgeGroup *islet_seams) |
|
void | clearDirtyFlags () |
|
int | numIslandIndices () const |
|
int | numPrimaryIslands () const |
|
const Island & | island (int i) const |
|
Island & | island (int i) |
|
SYS_FORCE_INLINE int | polyPrimaryIsland (GA_Offset poly) const |
|
SYS_FORCE_INLINE int | polyIsland (GA_Offset poly) const |
|
bool | isPrimary (const Island &island) const |
|
SYS_FORCE_INLINE int | hedgeIsland (GEO_Hedge h) const |
|
SYS_FORCE_INLINE int | vertexPrimaryIsland (GA_Offset vtx) const |
|
SYS_FORCE_INLINE int | vertexIsland (GA_Offset vtx) const |
|
bool | hasPointIndex () const |
|
SYS_FORCE_INLINE int | vtxIslandPt (GA_Offset vtx, int island_idx) const |
|
void | getIslandIndices (UT_IntArray &idxs) const |
|
template<typename Func > |
void | forEachIslandIndex (Func func, bool parallel=false) |
|
template<typename Func > |
void | forEachIsland (Func func, bool parallel=false) |
|
template<typename Func > |
void | forEachIslandIndex (Func func, bool parallel=false) const |
|
template<typename Func > |
void | forEachIsland (Func func, bool parallel=false) const |
|
template<typename Func > |
void | forEachDirtyIsland (Func func, bool parallel=false) const |
|
template<typename Func > |
void | forEachDirtyIsland (Func func, bool parallel=false) |
|
template<typename Func > |
void | forEachPrimaryIsland (Func func) const |
|
bool | isDirty (const Island &island) const |
|
void | makeDirty (const Island &island) |
|
An IslandBundle is used to store information about a collection (bundle) of primary islands determined by partitioning the polygons in a primtiive group 'prims' of a detail 'gdp' using the given group 'seams' of edges. The bundle also supports a "remapping" of the islands into secondary islands (or just "islands" after the effect) by recutting them using a second set of seams. Originally this was meant to be a simple "refining" of islands in which each primary island provided access to the secondary ones into which it was divided. Later on support was added to allow the repartitioning potentially remap the entire scene by erasing parts of the original seams that defined the primary islands thereby merging fragments from distinct primary islands into secondary ones. In this setting, each secondary island will be registered as a descendant of one of possibly several primary islands it overlaps. The other overlapped primary islands will be aware of having lost part (or all) of their territory to secondary islands held by other primary ones but without access to them.
The bundle provides methods to iterate over all primary, or current islands. In addition, the bundle provides a mechanism for quickly marking islands dirty and resetting all dirty flags. In particular, the building of secondary islands is optimized to efficiently determine the affected islands and set their dirty flags.
Definition at line 603 of file GU_Flatten2.h.