17 #ifndef __GU_Detail_h__
18 #define __GU_Detail_h__
78 namespace GA_PrimCompat {
class TypeMask; }
104 class GU_CookSelectionReplaceStash;
122 class GU_OffsetParms;
151 class gu_ValueLookupCache;
172 merge(*src, primGroup,
209 void duplicate(
const GU_Detail& gdp,
int = 0,
222 : myRingZero(ringzero)
223 , myRingValence(ringvalence)
228 {
return myRingZero; }
230 {
return myRingValence; }
245 void findBoundaryPoints(
248 const RingRef *ringref =
nullptr,
255 void findSelectionBoundaryPoints(
266 void buildRingZeroPoints(
283 void buildRingZeroPoints(
291 void buildRingZeroVertices(
295 void buildRingZeroPrimitives(
308 float ymin = -1,
float ymax = 1,
309 float zmin = -1,
float zmax = 1,
310 int xdiv = 0,
int ydiv = 0,
int zdiv = 0,
311 int enforcementBars = 0,
312 int doConsolidatePoints = 0);
315 int orderx = 4,
int ordery = 4,
int orderz=4,
316 float xmin = -0.5F,
float xmax = 0.5F,
317 float ymin = -0.5F,
float ymax = 0.5F,
318 float zmin = -0.5F,
float zmax = 0.5F,
320 bool consolidate =
false);
323 int orderx = 4,
int ordery = 4,
int orderz=4,
324 float xmin = -0.5F,
float xmax = 0.5F,
325 float ymin = -0.5F,
float ymax = 0.5F,
326 float zmin = -0.5F,
float zmax = 0.5F,
328 bool consolidate =
false);
330 GU_PrimMesh *meshCube(
int xdiv,
int ydiv,
int zdiv,
331 float xmin = -0.5F,
float xmax = 0.5F,
332 float ymin = -0.5F,
float ymax = 0.5F,
333 float zmin = -0.5F,
float zmax = 0.5F,
335 bool consolidate =
false);
337 GU_PrimPoly *polymeshCube(
int xdiv,
int ydiv,
int zdiv,
338 float xmin = -0.5F,
float xmax = 0.5F,
339 float ymin = -0.5F,
float ymax = 0.5F,
340 float zmin = -0.5F,
float zmax = 0.5F,
342 bool consolidate =
false);
357 float xsize=1,
float ysize=1,
358 float xc = 0,
float yc = 0,
float zc = 0,
365 float xsize=1,
float ysize=1,
366 float xc = 0,
float yc = 0,
float zc = 0,
371 float xsize=1,
float ysize=1,
372 float xc = 0,
float yc = 0,
float zc = 0,
376 float xsize=1,
float ysize=1,
377 float xc = 0,
float yc = 0,
float zc = 0,
380 int wrapu = 0,
int wrapv = 0);
382 int orderu = 4,
int orderv = 4,
383 int interpEndsU = 1,
int interpEndsV = 1,
384 float xsize=1,
float ysize=1,
385 float xc = 0,
float yc = 0,
float zc = 0,
388 int wrapu = 0,
int wrapv = 0);
390 int orderu = 4,
int orderv = 4,
391 float xsize=1,
float ysize=1,
392 float xc = 0,
float yc = 0,
float zc = 0,
395 int wrapu = 0,
int wrapv = 0);
408 float (*ptOutside)(
const UT_Vector3 &,
void *),
411 int xdiv,
int ydiv,
int zdiv,
412 bool makepolysoup =
false);
418 bool makepolysoup =
false);
421 int divx,
int divy,
int divz,
423 bool makepolysoup =
false);
427 void buildMetaXsection(
449 bool doPos,
bool doClr,
bool doNml,
bool doTxt,
450 bool doVoxels,
bool doSlerp,
451 const char *ptidattr,
const char *primidattr);
460 int size,
bool doPos,
bool doClr,
461 bool doNml,
bool doTxt,
462 bool doVoxels,
bool doSlerp,
463 const char *ptidattr,
const char *primidattr,
477 bool forceConsAll = false,
479 bool accurate = false);
488 bool accurate = false);
502 ONLYCONS_GRP_PROP_LEAST = 0,
504 ONLYCONS_GRP_PROP_INTERSECT
515 bool deleteconsolidated = false,
516 OnlyConsGroupPropagateType
518 ONLYCONS_GRP_PROP_LEAST,
519 bool accurate = false);
523 bool forceConsAll = false,
524 bool accurate = false);
527 bool accurate = false);
539 int fastConsolidatePointUVs(
float distance,
551 int fastConsolidateVertexUVs(
float distance,
579 bool snapptpos = true,
581 bool accurate = true);
590 SNAP_ATTRIBUTES_AVERAGE = 0,
591 SNAP_ATTRIBUTES_INDEX
601 float xlines,
float ylines,
float zlines,
602 float xoff,
float yoff,
float zoff,
607 void snapGridPointUVs(
int type,
608 float xlines,
float ylines,
float zlines,
609 float xoff,
float yoff,
float zoff,
613 void snapGridPointUVs(
615 float xlines,
float ylines,
float zlines,
616 float xoff,
float yoff,
float zoff,
620 void snapGridVertexUVs(
int type,
621 float xlines,
float ylines,
float zlines,
622 float xoff,
float yoff,
float zoff,
626 void snapGridVertexUVs(
628 float xlines,
float ylines,
float zlines,
629 float xoff,
float yoff,
float zoff,
636 int buildHoles(
float dist = 0.001F,
float angle = 0.2F,
661 bool removeRepPoints = false,
663 bool deleteDegenPrimPoints = false,
664 bool deleteOrphanedPoints = false,
665 bool deleteDegenerateBridges = false);
673 bool checkRepPoints = false,
681 int applyToVertex = -1,
int fixPolySeams = 0,
689 int applyToVertex = -1,
int fixPolySeams = 0,
695 bool scaleTexture(
float umult = 1,
float uoff = 0,
696 float vmult = 1,
float voff = 0,
697 float wmult = 1,
float woff = 0,
700 float umult = 1,
float uoff = 0,
701 float vmult = 1,
float voff = 0,
702 float wmult = 1,
float woff = 0,
704 bool rotateTexture(
float angle,
715 void transformPointTexture(
724 void computeSoftTransformPointTextureCache(
733 void computeSoftTransformPointTextureCache(
746 void softTransformPointTexture(
748 float tx,
float ty,
float tz,
749 float rx,
float ry,
float rz,
750 float sx,
float sy,
float sz,
751 float s_xy,
float s_xz,
float s_yz,
752 float px,
float py,
float pz,
757 bool *falloff_written =
nullptr);
765 void softTransformPointTexture(
768 float tx,
float ty,
float tz,
769 float rx,
float ry,
float rz,
770 float sx,
float sy,
float sz,
771 float s_xy,
float s_xz,
float s_yz,
772 float px,
float py,
float pz,
777 bool *falloff_written =
nullptr);
779 void transformVertexTexture(const
UT_Matrix4& mat,
783 void transformVertexTexture(
794 void computeSoftTransformVertexTextureCache(
799 bool ignore_uv_connectivity) const;
806 void computeSoftTransformVertexTextureCache(
812 bool ignore_uv_connectivity) const;
820 void softTransformVertexTexture(
822 float tx,
float ty,
float tz,
823 float rx,
float ry,
float rz,
824 float sx,
float sy,
float sz,
825 float s_xy,
float s_xz,
float s_yz,
826 float px,
float py,
float pz,
831 bool *falloff_written =
nullptr);
839 void softTransformVertexTexture(
842 float tx,
float ty,
float tz,
843 float rx,
float ry,
float rz,
844 float sx,
float sy,
float sz,
845 float s_xy,
float s_xz,
float s_yz,
846 float px,
float py,
float pz,
851 bool *falloff_written =
nullptr);
860 bool computeAvgNormal(
864 bool computeAvgNormal(
880 void convertMetaballs(
892 { sortPoints(array,
GA_Range(array), axis); }
899 { sortPrims(array,
GA_Range(array), axis); }
924 { sortPoints(array,
GA_Range(array), o, d); }
929 { sortPrims(array,
GA_Range(array), o, d); }
954 { sortElements(array,
GA_Range(array), order); }
956 { sortElements(array,
GA_Range(array), order); }
973 void shift(
int uoffset,
int voffset,
980 { shiftPoints(map,
GA_Range(map), offset); }
982 { shiftPrims(map,
GA_Range(map), offset); }
997 bool update_attributes =
true);
1002 { reversePoints(map,
GA_Range(map)); }
1004 { reversePrims(map,
GA_Range(map)); }
1017 { proximityPoints(points,
GA_Range(points), point); }
1020 { proximityPrims(primitives,
GA_Range(primitives), point); }
1037 { vertexOrder(points,
GA_Range(points)); }
1056 bool flipedges =
false,
bool avoiddegeneracy =
false);
1066 bool flipedges =
false,
1067 bool avoiddegeneracy =
false);
1076 const GA_Detail *restgdp=0,
bool flipedges =
false,
1077 bool avoiddegeneracy =
false);
1082 float tol = 0.0001F,
1089 bool clippts =
false);
1094 int normlize = 0,
int outputGroups = 0,
1100 void fractalize(
int seed = 1,
float roughness = 0.6F,
1101 float scaleby=1,
int divs=1,
1102 int fixedBoundry = 1,
int useVtxNorms = 0,
1103 float nx = 0,
float ny = 0,
float nz = 1,
1113 fpreal clip_tolerance = 0.0001,
1114 fpreal consilidate_tolerance = 0.001);
1117 bool tetrahedralizeForShrink(
const GA_PointGroup *ptGroup = 0,
1143 int reparameterize = 0);
1148 int reparameterize = 0);
1178 unsigned vorder = 0,
int vwrap = 0,
1179 int doskin = 1,
int nprims = -1,
1184 unsigned vorder = 0,
int vwrap = 0,
1185 int doskin = 1,
int nprims = -1,
1217 void filletRoundNetwork(
1263 const GU_Detail *deform,
int xdiv,
int ydiv,
int zdiv,
1277 void applyTraceTexture(
float xres,
float yres,
float resolution);
1292 int order=4,
int wrapped=0,
1296 int order=4,
int wrapped=0,
1298 const bool elevate_order_if_required =
true);
1310 int order=4,
int wrapped=0,
1315 int order=4,
int wrapped=0,
1320 int order=4,
int wrapped=0,
1323 const bool elevate_order_if_required =
true);
1326 int order = 4,
int corner=0);
1329 int order = 4,
int wrapped=0,
int corner=0);
1332 int order = 4,
int wrapped=0,
int corner=0);
1336 int uOrder=4,
int vOrder=4,
1347 int uOrder=4,
int vOrder=4,
1348 bool uWrapped=
false,
bool vWrapped=
false,
1359 int uOrder=4,
int vOrder=4,
1370 int uOrder=4,
int vOrder=4,
1371 bool uWrapped=
false,
bool vWrapped=
false,
1387 float tol=1e-1F,
float smooth=0.0F,
1388 int noMultipleKnots=1);
1391 int order=4,
int wrapped=0,
1392 float tol=1e-1F,
float smooth=0.0F,
1393 int noMultipleKnots=1);
1397 int uOrder=4,
int vOrder=4,
1399 float tol=1e-1F,
float smooth=0.0F,
1400 int uNoMultipleKnots=1,
1401 int vNoMultipleKnots=1);
1404 int uOrder=4,
int vOrder=4,
1405 int uWrapped=0,
int vWrapped=0,
1407 float tol=1e-1F,
float smooth=0.0F,
1408 int uNoMultipleKnots=1,
1409 int vNoMultipleKnots=1);
1414 void refine(
float *uunit,
int ulen,
1415 float *vunit,
int vlen,
1416 int countu=1,
int countv=1,
1420 void unrefine(
float umin,
float umax,
1421 float vmin,
float vmax,
1422 int countu=1,
int countv=1,
1423 float utol=0.001F,
float vtol=0.001F,
1426 void subdivide(
float *uunit,
int ulen,
1427 float *vunit,
int vlen,
1432 int extract(
float *uunit,
int ulen,
1433 float *vunit,
int vlen,
1436 int op = 0,
int keepOriginal = 0,
1437 int atbreakpoints = 0,
int use_arc_length = 0);
1439 void extractIsoParms(
float *uunit,
int ulen,
1440 float *vunit,
int vlen,
1444 void extractPoints(
float *uunit,
int ulen,
1445 float *vunit,
int vlen,
1449 void extractProfiles(
float *uunit,
int ulen,
1450 float *vunit,
int vlen,
1453 void extractIsoParmsAtBreak(
float *uunit,
int ulen,
1454 float *vunit,
int vlen,
1458 void extractPointsAtBreak(
float *uunit,
int ulen,
1459 float *vunit,
int vlen,
1463 void extractProfilesAtBreak(
float *uunit,
int ulen,
1464 float *vunit,
int vlen,
1468 int cut(
float *uunit,
int ulen,
1469 float *vunit,
int vlen,
1471 int keepin=1,
int keepout=0,
int atbreakpoints = 0,
1472 int allU = 0,
int allV = 0,
int use_arc_length = 0);
1480 bool deleteAll =
true);
1490 int *pointIndexTable = 0);
1502 int info(std::ostream &os,
1503 int max_group_lines=15,
1506 bool instanced=
false)
const;
1510 int max_group_lines=15,
1513 bool instanced=
false)
const;
1548 float tmax = 1E17F,
float tol = 1E-12F,
1551 float *u = 0,
float *
v = 0,
1552 int ignoretrim = 1)
const;
1559 int commonFaceConfig(
1561 GA_PrimCompat::TypeMask &
type,
int &
order,
1562 bool &
open,
bool &ends) const;
1563 int commonFaceConfig(
1565 GA_PrimCompat::TypeMask &type,
int &order,
1566 bool &open,
bool &ends) const;
1568 GA_PrimCompat::TypeMask &type,
1569 int &orderu,
int &orderv,
1570 bool &openu,
bool &openv,
1571 bool &endsu,
bool &endsv) const;
1581 int makeFacesCompatible(
1584 bool mustopen = false,
1585 bool mustends = false,
1586 bool nonrational = false,
1587 GA_PrimCompat::TypeMask *extratype = 0,
1588 bool equalcvs = true);
1589 int makeFacesCompatible(
1592 bool mustopen = false,
1593 bool mustends = false,
1594 bool nonrational = false,
1595 GA_PrimCompat::TypeMask *extratype = 0,
1596 bool equalcvs = true);
1597 int makeFacesCompatible(
1602 bool mustopen = false,
1603 bool mustends = false,
1604 bool nonrational = false,
1605 GA_PrimCompat::TypeMask *extratype = 0,
1606 bool equalcvs = true);
1607 int makeFacesCompatible(
1612 bool mustopen = false,
1613 bool mustends = false,
1614 bool nonrational = false,
1615 GA_PrimCompat::TypeMask *extratype = 0,
1616 bool equalcvs = true);
1623 float lwidth1,
float lwidth2,
1624 float rwidth1,
float rwidth2,
1625 int sharp,
int &lstart,
int &rstart,
1626 int &lmax,
int &rmax,
1632 static
int getSubdividedCV(
GEO_Hull *hull,
int udir,
float unit);
1633 static
int getSubdividedCV(
GEO_Face *
face,
float unit);
1640 static
exint getIOTranslatorCount();
1646 static
GA_Detail::IOStatus statH9File(const
char *filename,
1650 static
bool isFormatSupported(const
char *filename);
1675 int makeSurfacesCompatible(
1678 bool mustopenu=false,
bool mustopenv=false,
1679 bool mustendsu=false,
bool mustendsv=false,
1680 bool equalcvsu=true,
bool equalcvsv=true,
1681 GA_PrimCompat::TypeMask *extratype = 0);
1691 const char *msg = 0)
const
1696 const char *msg = 0)
const
1714 bool ordered =
false,
1715 bool clear_matching =
false);
1735 bool hasShallowCookSelectionReference(
1744 void removeCookSelection();
1748 void updateCookSelectionDataIds();
1754 void stashCookSelectionBeforeReplaceWith(
1755 GU_CookSelectionReplaceStash &stash)
const;
1767 void replaceCookSelection(
1769 GU_CookSelectionReplaceStash *stash);
1782 void removeInlinePoints(
float tol,
1790 bool ignoreOpenFaces =
false,
1791 float tolerance = 0.001F,
1792 bool onlyPolys =
true);
1794 bool ignoreOpenFaces =
false,
1795 float tolerance = 0.001F,
1796 bool onlyPolys =
true);
1806 bool del_inline_points,
1808 bool del_unused_points = true,
1809 bool del_bridges = true);
1823 GU_BRIDGEMODE_DELETE
1826 bool del_inline_points,
1828 bool del_unused_points,
1829 BridgeMode bridge_mode,
1830 bool del_degenerate_bridges,
1831 bool boundary_curves);
1836 bool rotattribs =
false,
1853 bool quadcut =
false,
1854 bool forcecut =
true,
1857 bool quadcomplete =
false,
1858 bool modifyGdp =
true,
1860 bool fixEnds =
false);
1864 void divideEdges(
const GA_EdgeGroup &edgegroup,
int numdivs = 1,
1865 bool applytoall =
true,
1866 bool use_shared_points =
false,
1869 bool preserve_edge_dir =
false);
1873 bool use_shared_points,
1876 bool preserve_edge_dir,
1888 int quickxform = 0);
1896 bool removedegen =
true,
1897 bool updatenmls =
true,
1906 float insetdist,
float nmldist);
1936 void clearCachedBounds();
1941 static void loadIODSOs();
1965 class AttribValueLookupTable;
1966 class AttribSingleValueLookupTable;
1968 const AttribValueLookupTable *getLookupTable(
const GA_Attribute *attrib)
const;
1969 const AttribSingleValueLookupTable *getSingleLookupTable(
const GA_Attribute *attrib)
const;
1974 GU_Detail *cloneForCache(
bool copy_unique_id)
const;
1980 void cloneForCache(
GU_Detail &dest,
bool copy_unique_id,
bool copy_detail=
true)
const;
1995 template <
typename ArrayType>
1997 const ArrayType &gpData,
1999 int order,
int wrapped,
2003 void fillGrid(
GEO_Hull &hull,
int rows,
int cols,
2004 float x_size,
float y_size,
2005 float x_center,
float y_center,
2009 void convertPolysToHull(
2011 bool keep_original);
2012 void convertToSoups(
2014 bool keep_original);
2015 void convertVolumesToVDBs(
2017 bool keep_original);
2018 void convertVDBsToVolumes(
2020 bool keep_original);
2021 void convertVolumesToPolys(
2023 bool keep_original);
2024 void convertMetasToPolys(
2026 bool keep_original);
2027 void convertTetsToPolys(
2029 bool keep_original);
2032 bool keep_original);
2039 int orderx,
int ordery,
int orderz,
2040 float xmin,
float xmax,
2041 float ymin,
float ymax,
2042 float zmin,
float zmax,
2048 bool checkRepPoints,
2053 bool makepolysoup =
false);
2057 bool makepolysoup =
false);
2058 int adjustStepBox(
float &
min,
float &
max,
float step);
2062 bool makepolysoup =
false);
2073 friend class GU_PrimitiveFactory;
2077 myBoundingCache =
nullptr;
2078 myValueLookupCache =
nullptr;
2084 class BoundingCache;
2085 BoundingCache *myBoundingCache;
2087 mutable gu_ValueLookupCache *myValueLookupCache;
virtual void clearCaches()
A class to manage an ordered array which has fixed offset handles.
void sortPrims(GA_IndexMap &array, const UT_Vector3 &o, const UT_Vector3 &d)
UT_ErrorSeverity getSeverity()
GA_API const UT_StringHolder dist
Definition of a geometry attribute.
SYS_VISIBILITY_EXPORT void newGeometryIO(void *)
GT_API const UT_StringHolder filename
GLuint GLdouble GLdouble GLint GLint order
void sortElements(GA_IndexMap &array, fpreal *order)
const GA_IndexMap & getPrimitiveMap() const
MatType shear(Axis axis0, Axis axis1, typename MatType::value_type shear)
Set the matrix to a shear along axis0 by a fraction of axis1.
#define SYS_VISIBILITY_EXPORT
const UT_IntArray & ringValence() const
virtual GA_Detail * cloneEmptyDetail(bool clone_attributes) const =0
SYS_VISIBILITY_EXPORT void newGeometryPrim(GA_PrimitiveFactory *factory)
#define SYS_DEPRECATED_HDK_REPLACE(__V__, __R__)
void sortPoints(GA_IndexMap &array, const UT_Vector3 &o, const UT_Vector3 &d)
void reversePrimitiveList()
GA_API const UT_StringHolder twist
Arbitrarily Oriented Bounding (OBB)
int64 getMemoryUsage(bool inclusive) const override
Compute memory usage (includes all shared memory)
OnlyConsGroupPropagateType
void reverse(I begin, I end)
void shiftPrimitiveList(GA_Size aoffset)
UT_API UT_ErrorManager * UTgetErrorManager()
void proximityPoints(GA_IndexMap &points, const UT_Vector3 &point)
void vertexOrder(GA_IndexMap &points)
ImageBuf OIIO_API min(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
void addWarning(GU_ErrorCodes code, const char *msg=0) const
Tto convert(const Tfrom &source)
void proximityPrims(GA_IndexMap &primitives, const UT_Vector3 &point)
Structure for the PolySouping code.
UT_ErrorSeverity addError(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
exint GA_Size
Defines the bit width for index and offset types in GA.
const UT_Array< GA_OffsetArray > & myRingZero
GLuint GLuint GLfloat weight
#define GA_INVALID_OFFSET
A range of elements in an index-map.
GLuint GLenum GLenum transform
OIIO_FORCEINLINE bool extract(const vbool4 &a)
vint4 blend(const vint4 &a, const vint4 &b, const vbool4 &mask)
void sortPointList(exint *order)
GU_API void snapPoints(GU_Detail &qgdp, const GU_Detail *tgdp, const PointSnapParms &parms)
const GA_IndexMap & getPointMap() const
GR_API RE_Geometry * buildGrid(RE_Render *r, UT_Vector3F center, UT_Vector2F size, Orientation orient, const char *cache_name=NULL)
GU_Detail(const GU_Detail *src, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
GA_API const UT_StringHolder trans
GLsizei GLsizei GLfloat distance
void reversePoints(GA_IndexMap &map)
GU_API void snapGrid(GU_Detail &gdp, const GridSnapParms &parms)
GLsizei GLsizei GLchar * source
void reversePrims(GA_IndexMap &map)
void shiftPrims(GA_IndexMap &map, GA_Size offset)
const GA_IndexMap & getIndexMap(GA_AttributeOwner owner) const
NURBS basis classes which maintain knot vectors.
void shiftPointList(GA_Size aoffset)
virtual void statVolumes(GA_Stat &stat, uint level=0xffff) const
Fill out only the volume information.
void shiftPoints(GA_IndexMap &map, GA_Size offset)
void sortPointList(fpreal *order)
png_const_structrp png_const_inforp int * unit
void sortPointList(int seed)
HUSD_API const char * resolution()
#define SYS_DEPRECATED_HDK(__V__)
void sortPrimitiveList(const UT_Vector3 &o, const UT_Vector3 &d)
void sortPointList(const UT_Vector3 &o, const UT_Vector3 &d)
UT_Array< GU_SplitLoc * > GU_SplitLocArray
bool copy(const GEO_Detail &src, GEO_CopyMethod method=GEO_COPY_ONCE, bool this_parameter_is_ignored=true, bool keep_internal_groups=true, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
UT_SharedPtr< GU_Selection > GU_SelectionHandle
GA_API const UT_StringHolder orient
GU_Detail(bool full_topology)
void sortElements(GA_IndexMap &array, exint *order)
IMATH_HOSTDEVICE constexpr int divs(int x, int y) IMATH_NOEXCEPT
void addMessage(GU_ErrorCodes code, const char *msg=0) const
GLuint GLdouble GLdouble GLint GLint const GLdouble * points
Class to return information about a GA_Detail.
ImageBuf OIIO_API cut(const ImageBuf &src, ROI roi={}, int nthreads=0)
virtual bool smooth(GA_AttributeOperand &d, GA_AttributeOperand &min, GA_AttributeOperand &max, GA_AttributeOperand &t) const
d = SYSsmooth(min, max, t);
GLsizei const GLint box[]
const UT_IntArray & myRingValence
void sortPrimitiveList(int seed)
GLfloat GLfloat GLfloat GLfloat nx
UT_ErrorSeverity addWarning(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
GA_GroupType
An ordinal enum for the different types of groups in GA.
RingRef(const UT_Array< GA_OffsetArray > &ringzero, const UT_IntArray &ringvalence)
void countMemory(UT_MemoryCounter &counter, bool inclusive) const override
void proximityToPointList(const UT_Vector3 &point)
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
void transformBreakpoints(const UT_Matrix4T< FLOAT_T > &mat, const GA_BreakpointGroup *grp=0, bool just_P=false, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=NULL)
static GA_IntrinsicManager::Registrar registerIntrinsics(GA_PrimitiveFactory &factory)
GU_API GA_PrimitiveFactory & GUgetFactory()
void sortPrimitiveList(GU_AxisType axis)
Container class for all geometry.
const UT_Array< GA_OffsetArray > & ringZero() const
void proximityToPrimitiveList(const UT_Vector3 &point)
GA_Size GEO_API GEOsplitPoints(GEO_Detail *detail, const GA_ElementGroup *group=nullptr)
ImageBuf OIIO_API warp(const ImageBuf &src, const Imath::M33f &M, string_view filtername=string_view(), float filterwidth=0.0f, bool recompute_roi=false, ImageBuf::WrapMode wrap=ImageBuf::WrapDefault, ROI roi={}, int nthreads=0)
GLuint GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint vorder
void sortPointList(GU_AxisType axis)
void sortPrims(GA_IndexMap &array, GU_AxisType axis=GU_XAXIS)
GU_Detail(const GU_Detail *src, GA_PrimitiveGroup *primGroup, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
void sortPrimitiveList(fpreal *order)
GA_API const UT_StringHolder rest
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER IMATH_HOSTDEVICE IMATH_CONSTEXPR14 T clip(const T &p, const Box< T > &box) IMATH_NOEXCEPT
void merge(const GEO_Detail &src, const GA_PrimitiveGroup *primGrp=nullptr, bool mergePrimGroup=true, bool insertPrimsAtHead=false, GA_GBPointRedirectArray *dest_to_src_ptarray=nullptr, bool keep_internal_groups=true, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
GLenum GLuint GLint GLenum face
void addError(GU_ErrorCodes code, const char *msg=0) const
UT_ErrorSeverity addMessage(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
void sortPrimitiveList(exint *order)