17 #ifndef __GU_Detail_h__
18 #define __GU_Detail_h__
79 namespace GA_PrimCompat {
class TypeMask; }
105 class GU_CookSelectionReplaceStash;
123 class GU_OffsetParms;
152 class gu_ValueLookupCache;
173 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(
306 bool read,
bool write)
const override;
318 float ymin = -1,
float ymax = 1,
319 float zmin = -1,
float zmax = 1,
320 int xdiv = 0,
int ydiv = 0,
int zdiv = 0,
321 int enforcementBars = 0,
322 int doConsolidatePoints = 0);
325 int orderx = 4,
int ordery = 4,
int orderz=4,
326 float xmin = -0.5F,
float xmax = 0.5F,
327 float ymin = -0.5F,
float ymax = 0.5F,
328 float zmin = -0.5F,
float zmax = 0.5F,
330 bool consolidate =
false);
333 int orderx = 4,
int ordery = 4,
int orderz=4,
334 float xmin = -0.5F,
float xmax = 0.5F,
335 float ymin = -0.5F,
float ymax = 0.5F,
336 float zmin = -0.5F,
float zmax = 0.5F,
338 bool consolidate =
false);
340 GU_PrimMesh *meshCube(
int xdiv,
int ydiv,
int zdiv,
341 float xmin = -0.5F,
float xmax = 0.5F,
342 float ymin = -0.5F,
float ymax = 0.5F,
343 float zmin = -0.5F,
float zmax = 0.5F,
345 bool consolidate =
false);
347 GU_PrimPoly *polymeshCube(
int xdiv,
int ydiv,
int zdiv,
348 float xmin = -0.5F,
float xmax = 0.5F,
349 float ymin = -0.5F,
float ymax = 0.5F,
350 float zmin = -0.5F,
float zmax = 0.5F,
352 bool consolidate =
false);
367 float xsize=1,
float ysize=1,
368 float xc = 0,
float yc = 0,
float zc = 0,
375 float xsize=1,
float ysize=1,
376 float xc = 0,
float yc = 0,
float zc = 0,
381 float xsize=1,
float ysize=1,
382 float xc = 0,
float yc = 0,
float zc = 0,
386 float xsize=1,
float ysize=1,
387 float xc = 0,
float yc = 0,
float zc = 0,
390 int wrapu = 0,
int wrapv = 0);
392 int orderu = 4,
int orderv = 4,
393 int interpEndsU = 1,
int interpEndsV = 1,
394 float xsize=1,
float ysize=1,
395 float xc = 0,
float yc = 0,
float zc = 0,
398 int wrapu = 0,
int wrapv = 0);
400 int orderu = 4,
int orderv = 4,
401 float xsize=1,
float ysize=1,
402 float xc = 0,
float yc = 0,
float zc = 0,
405 int wrapu = 0,
int wrapv = 0);
418 float (*ptOutside)(
const UT_Vector3 &,
void *),
421 int xdiv,
int ydiv,
int zdiv,
422 bool makepolysoup =
false);
428 bool makepolysoup =
false);
431 int divx,
int divy,
int divz,
433 bool makepolysoup =
false);
437 void buildMetaXsection(
459 bool doPos,
bool doClr,
bool doNml,
bool doTxt,
460 bool doVoxels,
bool doSlerp,
461 const char *ptidattr,
const char *primidattr);
470 int size,
bool doPos,
bool doClr,
471 bool doNml,
bool doTxt,
472 bool doVoxels,
bool doSlerp,
473 const char *ptidattr,
const char *primidattr,
487 bool forceConsAll = false,
489 bool accurate = false);
498 bool accurate = false);
512 ONLYCONS_GRP_PROP_LEAST = 0,
514 ONLYCONS_GRP_PROP_INTERSECT
525 bool deleteconsolidated = false,
526 OnlyConsGroupPropagateType
528 ONLYCONS_GRP_PROP_LEAST,
529 bool accurate = false);
533 bool forceConsAll = false,
534 bool accurate = false);
537 bool accurate = false);
549 int fastConsolidatePointUVs(
float distance,
561 int fastConsolidateVertexUVs(
float distance,
589 bool snapptpos = true,
591 bool accurate = true);
600 SNAP_ATTRIBUTES_AVERAGE = 0,
601 SNAP_ATTRIBUTES_INDEX
611 float xlines,
float ylines,
float zlines,
612 float xoff,
float yoff,
float zoff,
617 void snapGridPointUVs(
int type,
618 float xlines,
float ylines,
float zlines,
619 float xoff,
float yoff,
float zoff,
623 void snapGridPointUVs(
625 float xlines,
float ylines,
float zlines,
626 float xoff,
float yoff,
float zoff,
630 void snapGridVertexUVs(
int type,
631 float xlines,
float ylines,
float zlines,
632 float xoff,
float yoff,
float zoff,
636 void snapGridVertexUVs(
638 float xlines,
float ylines,
float zlines,
639 float xoff,
float yoff,
float zoff,
646 int buildHoles(
float dist = 0.001F,
float angle = 0.2F,
671 bool removeRepPoints = false,
673 bool deleteDegenPrimPoints = false,
674 bool deleteOrphanedPoints = false,
675 bool deleteDegenerateBridges = false);
683 bool checkRepPoints = false,
691 int applyToVertex = -1,
int fixPolySeams = 0,
699 int applyToVertex = -1,
int fixPolySeams = 0,
705 bool scaleTexture(
float umult = 1,
float uoff = 0,
706 float vmult = 1,
float voff = 0,
707 float wmult = 1,
float woff = 0,
710 float umult = 1,
float uoff = 0,
711 float vmult = 1,
float voff = 0,
712 float wmult = 1,
float woff = 0,
714 bool rotateTexture(
float angle,
721 void transformPointTexture(const
UT_Matrix4& mat,
725 void transformPointTexture(
734 void computeSoftTransformPointTextureCache(
743 void computeSoftTransformPointTextureCache(
756 void softTransformPointTexture(
758 float tx,
float ty,
float tz,
759 float rx,
float ry,
float rz,
760 float sx,
float sy,
float sz,
761 float s_xy,
float s_xz,
float s_yz,
762 float px,
float py,
float pz,
767 bool *falloff_written =
nullptr);
775 void softTransformPointTexture(
778 float tx,
float ty,
float tz,
779 float rx,
float ry,
float rz,
780 float sx,
float sy,
float sz,
781 float s_xy,
float s_xz,
float s_yz,
782 float px,
float py,
float pz,
787 bool *falloff_written =
nullptr);
789 void transformVertexTexture(const
UT_Matrix4& mat,
793 void transformVertexTexture(
804 void computeSoftTransformVertexTextureCache(
809 bool ignore_uv_connectivity) const;
816 void computeSoftTransformVertexTextureCache(
822 bool ignore_uv_connectivity) const;
830 void softTransformVertexTexture(
832 float tx,
float ty,
float tz,
833 float rx,
float ry,
float rz,
834 float sx,
float sy,
float sz,
835 float s_xy,
float s_xz,
float s_yz,
836 float px,
float py,
float pz,
841 bool *falloff_written =
nullptr);
849 void softTransformVertexTexture(
852 float tx,
float ty,
float tz,
853 float rx,
float ry,
float rz,
854 float sx,
float sy,
float sz,
855 float s_xy,
float s_xz,
float s_yz,
856 float px,
float py,
float pz,
861 bool *falloff_written =
nullptr);
870 bool computeAvgNormal(
874 bool computeAvgNormal(
892 void convertMetaballs(
904 { sortPoints(array,
GA_Range(array), axis); }
911 { sortPrims(array,
GA_Range(array), axis); }
936 { sortPoints(array,
GA_Range(array), o, d); }
941 { sortPrims(array,
GA_Range(array), o, d); }
966 { sortElements(array,
GA_Range(array), order); }
968 { sortElements(array,
GA_Range(array), order); }
992 void shift(
int uoffset,
int voffset,
999 { shiftPoints(map,
GA_Range(map), offset); }
1001 { shiftPrims(map,
GA_Range(map), offset); }
1016 bool update_attributes =
true);
1021 { reversePoints(map,
GA_Range(map)); }
1023 { reversePrims(map,
GA_Range(map)); }
1036 { proximityPoints(points,
GA_Range(points), point); }
1039 { proximityPrims(primitives,
GA_Range(primitives), point); }
1056 { vertexOrder(points,
GA_Range(points)); }
1075 bool flipedges =
false,
bool avoiddegeneracy =
false);
1085 bool flipedges =
false,
1086 bool avoiddegeneracy =
false);
1095 const GA_Detail *restgdp=0,
bool flipedges =
false,
1096 bool avoiddegeneracy =
false);
1101 float tol = 0.0001F,
1108 bool clippts =
false);
1120 fpreal tolerance = 0.00001,
1129 int normlize = 0,
int outputGroups = 0,
1144 void crease(
bool split,
1148 fpreal tolerance = 0.00001,
1158 void fractalize(
int seed = 1,
float roughness = 0.6F,
1159 float scaleby=1,
int divs=1,
1160 int fixedBoundry = 1,
int useVtxNorms = 0,
1162 const char *nmlattribname =
nullptr,
1163 float nx = 0,
float ny = 0,
float nz = 1,
1173 fpreal clip_tolerance = 0.0001,
1174 fpreal consilidate_tolerance = 0.001);
1177 bool tetrahedralizeForShrink(
const GA_PointGroup *ptGroup = 0,
1203 int reparameterize = 0);
1208 int reparameterize = 0);
1238 unsigned vorder = 0,
int vwrap = 0,
1239 int doskin = 1,
int nprims = -1,
1244 unsigned vorder = 0,
int vwrap = 0,
1245 int doskin = 1,
int nprims = -1,
1277 void filletRoundNetwork(
1325 int xdiv,
int ydiv,
int zdiv,
1339 void applyTraceTexture(
float xres,
float yres,
float resolution);
1354 int order=4,
int wrapped=0,
1358 int order=4,
int wrapped=0,
1360 const bool elevate_order_if_required =
true);
1372 int order=4,
int wrapped=0,
1377 int order=4,
int wrapped=0,
1382 int order=4,
int wrapped=0,
1385 const bool elevate_order_if_required =
true);
1388 int order = 4,
int corner=0);
1391 int order = 4,
int wrapped=0,
int corner=0);
1394 int order = 4,
int wrapped=0,
int corner=0);
1398 int uOrder=4,
int vOrder=4,
1409 int uOrder=4,
int vOrder=4,
1410 bool uWrapped=
false,
bool vWrapped=
false,
1421 int uOrder=4,
int vOrder=4,
1432 int uOrder=4,
int vOrder=4,
1433 bool uWrapped=
false,
bool vWrapped=
false,
1449 float tol=1e-1F,
float smooth=0.0F,
1450 int noMultipleKnots=1);
1453 int order=4,
int wrapped=0,
1454 float tol=1e-1F,
float smooth=0.0F,
1455 int noMultipleKnots=1);
1459 int uOrder=4,
int vOrder=4,
1461 float tol=1e-1F,
float smooth=0.0F,
1462 int uNoMultipleKnots=1,
1463 int vNoMultipleKnots=1);
1466 int uOrder=4,
int vOrder=4,
1467 int uWrapped=0,
int vWrapped=0,
1469 float tol=1e-1F,
float smooth=0.0F,
1470 int uNoMultipleKnots=1,
1471 int vNoMultipleKnots=1);
1476 void refine(
float *uunit,
int ulen,
1477 float *vunit,
int vlen,
1478 int countu=1,
int countv=1,
1482 void unrefine(
float umin,
float umax,
1483 float vmin,
float vmax,
1484 int countu=1,
int countv=1,
1485 float utol=0.001F,
float vtol=0.001F,
1488 void subdivide(
float *uunit,
int ulen,
1489 float *vunit,
int vlen,
1503 return scale1.isValid() || scale2.isValid();
1510 if (!gah.
isValid())
return uval;
1511 return gah.
get(off) * uval;
1513 float apply(
const GEO_Primitive *prim,
float uval,
int side)
const;
1517 int extract(
float *uunit,
int ulen,
1518 float *vunit,
int vlen,
1521 int op = 0,
int keepOriginal = 0,
1522 int atbreakpoints = 0,
int use_arc_length = 0,
1523 DomainScaleAttribs uscale = DomainScaleAttribs(),
1524 DomainScaleAttribs vscale = DomainScaleAttribs());
1526 void extractIsoParms(
float *uunit,
int ulen,
1527 float *vunit,
int vlen,
1530 DomainScaleAttribs uscale=DomainScaleAttribs(),
1531 DomainScaleAttribs vscale=DomainScaleAttribs());
1533 void extractPoints(
float *uunit,
int ulen,
1534 float *vunit,
int vlen,
1537 bool use_arc_length =
false,
1538 DomainScaleAttribs uscale=DomainScaleAttribs(),
1539 DomainScaleAttribs vscale=DomainScaleAttribs());
1541 void extractProfiles(
float *uunit,
int ulen,
1542 float *vunit,
int vlen,
1544 DomainScaleAttribs uscale=DomainScaleAttribs(),
1545 DomainScaleAttribs vscale=DomainScaleAttribs());
1547 void extractIsoParmsAtBreak(
float *uunit,
int ulen,
1548 float *vunit,
int vlen,
1551 DomainScaleAttribs uscale=DomainScaleAttribs(),
1552 DomainScaleAttribs vscale=DomainScaleAttribs());
1554 void extractPointsAtBreak(
float *uunit,
int ulen,
1555 float *vunit,
int vlen,
1558 bool use_arc_length =
false,
1559 DomainScaleAttribs uscale=DomainScaleAttribs(),
1560 DomainScaleAttribs vscale=DomainScaleAttribs());
1562 void extractProfilesAtBreak(
float *uunit,
int ulen,
1563 float *vunit,
int vlen,
1565 DomainScaleAttribs uscale=DomainScaleAttribs(),
1566 DomainScaleAttribs vscale=DomainScaleAttribs());
1569 int cut(
float *uunit,
int ulen,
1570 float *vunit,
int vlen,
1572 int keepin=1,
int keepout=0,
int atbreakpoints = 0,
1573 int allU = 0,
int allV = 0,
int use_arc_length = 0,
1574 DomainScaleAttribs uscale = DomainScaleAttribs(),
1575 DomainScaleAttribs vscale = DomainScaleAttribs());
1583 bool deleteAll =
true);
1593 int *pointIndexTable = 0);
1605 int info(std::ostream &os,
1606 int max_group_lines=15,
1609 bool instanced=
false)
const;
1613 int max_group_lines=15,
1616 bool instanced=
false)
const;
1651 float tmax = 1E17F,
float tol = 1E-12F,
1654 float *u = 0,
float *
v = 0,
1655 int ignoretrim = 1) const;
1662 int commonFaceConfig(
1664 GA_PrimCompat::TypeMask &
type,
int &
order,
1665 bool &
open,
bool &ends) const;
1666 int commonFaceConfig(
1668 GA_PrimCompat::TypeMask &type,
int &order,
1669 bool &open,
bool &ends) const;
1671 GA_PrimCompat::TypeMask &type,
1672 int &orderu,
int &orderv,
1673 bool &openu,
bool &openv,
1674 bool &endsu,
bool &endsv) const;
1684 int makeFacesCompatible(
1687 bool mustopen = false,
1688 bool mustends = false,
1689 bool nonrational = false,
1690 GA_PrimCompat::TypeMask *extratype = 0,
1691 bool equalcvs = true);
1692 int makeFacesCompatible(
1695 bool mustopen = false,
1696 bool mustends = false,
1697 bool nonrational = false,
1698 GA_PrimCompat::TypeMask *extratype = 0,
1699 bool equalcvs = true);
1700 int makeFacesCompatible(
1705 bool mustopen = false,
1706 bool mustends = false,
1707 bool nonrational = false,
1708 GA_PrimCompat::TypeMask *extratype = 0,
1709 bool equalcvs = true);
1710 int makeFacesCompatible(
1715 bool mustopen = false,
1716 bool mustends = false,
1717 bool nonrational = false,
1718 GA_PrimCompat::TypeMask *extratype = 0,
1719 bool equalcvs = true);
1726 float lwidth1,
float lwidth2,
1727 float rwidth1,
float rwidth2,
1728 int sharp,
int &lstart,
int &rstart,
1729 int &lmax,
int &rmax,
1735 static
int getSubdividedCV(
GEO_Hull *hull,
int udir,
float unit);
1736 static
int getSubdividedCV(
GEO_Face *face,
float unit);
1743 static
exint getIOTranslatorCount();
1749 static
GA_Detail::IOStatus statH9File(const
char *filename,
1753 static
bool isFormatSupported(const
char *filename);
1778 int makeSurfacesCompatible(
1781 bool mustopenu=false,
bool mustopenv=false,
1782 bool mustendsu=false,
bool mustendsv=false,
1783 bool equalcvsu=true,
bool equalcvsv=true,
1784 GA_PrimCompat::TypeMask *extratype = 0);
1794 const char *msg = 0)
const
1799 const char *msg = 0)
const
1817 bool ordered =
false,
1818 bool clear_matching =
false);
1838 bool hasShallowCookSelectionReference(
1847 void removeCookSelection();
1851 void updateCookSelectionDataIds();
1857 void stashCookSelectionBeforeReplaceWith(
1858 GU_CookSelectionReplaceStash &stash)
const;
1870 void replaceCookSelection(
1872 GU_CookSelectionReplaceStash *stash);
1885 void removeInlinePoints(
float tol,
1893 bool ignoreOpenFaces =
false,
1894 float tolerance = 0.001F,
1895 bool onlyPolys =
true);
1897 bool ignoreOpenFaces =
false,
1898 float tolerance = 0.001F,
1899 bool onlyPolys =
true);
1904 void deleteGroupGeometry(
const GA_Group &group);
1909 bool del_inline_points,
1911 bool del_unused_points = true,
1912 bool del_bridges = true);
1926 GU_BRIDGEMODE_DELETE
1929 bool del_inline_points,
1931 bool del_unused_points,
1932 BridgeMode bridge_mode,
1933 bool del_degenerate_bridges,
1934 bool boundary_curves);
1939 bool rotattribs =
false,
1956 bool quadcut =
false,
1957 bool forcecut =
true,
1960 bool quadcomplete =
false,
1961 bool modifyGdp =
true,
1963 bool fixEnds =
false,
1964 bool grpExcludeExtraEdges =
false);
1968 void divideEdges(
const GA_EdgeGroup &edgegroup,
int numdivs = 1,
1969 bool applytoall =
true,
1970 bool use_shared_points =
false,
1973 bool preserve_edge_dir =
false);
1977 bool use_shared_points,
1980 bool preserve_edge_dir,
1991 void transformBreakpoints(const
UT_Matrix4 &mat,
1993 int quickxform = 0);
2001 bool removedegen = true,
2002 bool updatenmls = true,
2011 float insetdist,
float nmldist);
2027 int refinement_iterations = 6) const;
2032 int refinement_iterations = 6) const;
2054 void clearCachedBounds();
2059 static
void loadIODSOs();
2060 static
bool runDSO(const
char* lib_path);
2071 static
bool matchASCIIFileExtension(const
UT_StringRef &filename);
2084 class AttribValueLookupTable;
2085 class AttribSingleValueLookupTable;
2087 const AttribValueLookupTable *getLookupTable(const
GA_Attribute *attrib) const;
2088 const AttribSingleValueLookupTable *getSingleLookupTable(const
GA_Attribute *attrib) const;
2093 GU_Detail *cloneForCache(
bool copy_unique_id) const;
2099 void cloneForCache(
GU_Detail &dest,
bool copy_unique_id,
bool copy_detail=true) const;
2118 int order,
int wrapped,
2122 void fillGrid(
GEO_Hull &hull,
int rows,
int cols,
2123 float x_size,
float y_size,
2124 float x_center,
float y_center,
2128 void convertPolysToHull(
2130 bool keep_original);
2131 void convertToSoups(
2133 bool keep_original);
2134 void convertVolumesToVDBs(
2136 bool keep_original);
2137 void convertVDBsToVolumes(
2139 bool keep_original);
2140 void convertVolumesToPolys(
2142 bool keep_original);
2143 void convertMetasToPolys(
2145 bool keep_original);
2146 void convertTetsToPolys(
2148 bool keep_original);
2151 bool keep_original);
2158 int orderx,
int ordery,
int orderz,
2159 float xmin,
float xmax,
2160 float ymin,
float ymax,
2161 float zmin,
float zmax,
2167 bool checkRepPoints,
2172 bool makepolysoup = false);
2176 bool makepolysoup = false);
2177 int adjustStepBox(
float &
min,
float &
max,
float step);
2181 bool makepolysoup = false);
2196 myBoundingCache =
nullptr;
2197 myVisibleBoundingCache =
nullptr;
2198 myValueLookupCache =
nullptr;
2204 template <
bool VISIBLE_ONLY>
class BoundingCacheT;
2206 template <
bool VISIBLE_ONLY>
2207 static bool getCachedBoundsImpl(
2210 BoundingCacheT<VISIBLE_ONLY> *&cache);
2212 mutable BoundingCacheT<false> *myBoundingCache;
2213 mutable BoundingCacheT<true> *myVisibleBoundingCache;
2215 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
virtual UT_UniquePtr< GA_CEAttribute > buildTopologyCEAttribute(GA_Topology::TopologyCE topotype, GA_StorageClass storage, GA_Precision precision, int &tuplesize, bool isarray, bool read, bool write) const
GLdouble GLdouble GLint GLint const GLdouble * points
void sortElements(GA_IndexMap &array, fpreal *order)
const GA_IndexMap & getPrimitiveMap() const
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the and then *wait for them to all complete We provide a helper class
SIM_API const UT_StringHolder angle
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
getFileOption("OpenEXR:storage") storage
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)
TIL_API bool stitch(StitchWriter &w, const UT_Span< TileReader * > &tiles, bool top_down)
void reversePrimitiveList()
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint vorder
GA_API const UT_StringHolder twist
Arbitrarily Oriented Bounding (OBB)
int64 getMemoryUsage(bool inclusive) const override
Compute memory usage (includes all shared memory)
OnlyConsGroupPropagateType
PUGI__FN 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)
Manager to keep track of global handle to name mappings.
void addWarning(GU_ErrorCodes code, const char *msg=0) const
Tto convert(const Tfrom &source)
void merge(const GEO_Detail &src, const GA_PrimitiveGroup *primGrp=nullptr, bool mergePrimGroup=true, bool insertPrimsAtHead=false, bool keep_internal_groups=true, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
**But if you need a result
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
#define GA_INVALID_OFFSET
GU_API void GUdivideEdges(GU_Detail &detail, const UT_Array< GU_PerEdgeDiv > &div_locs, GA_PointGroup &new_points_group)
A range of elements in an index-map.
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
#define SYS_DEPRECATED_REPLACE(__V__, __R__)
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)
GLint GLint GLsizei GLint GLenum GLenum type
const GA_IndexMap & getPointMap() const
float apply(GA_Offset off, float uval, int side) 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
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)
GLdouble GLdouble GLint GLint order
void shiftPoints(GA_IndexMap &map, GA_Size offset)
void sortPointList(fpreal *order)
png_const_structrp png_const_inforp int * unit
SYS_FORCE_INLINE T get(GA_Offset off, int comp=0) const
void sortPointList(int seed)
HUSD_API const char * resolution()
#define SYS_DEPRECATED_HDK(__V__)
SYS_DECLARE_LEGACY_TR(GU_Detail)
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
GA_API const UT_StringHolder transform
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
ImageBuf OIIO_API warp(const ImageBuf &src, M33fParam M, string_view filtername=string_view(), float filterwidth=0.0f, bool recompute_roi=false, ImageBuf::WrapMode wrap=ImageBuf::WrapDefault, ROI roi={}, int nthreads=0)
void addMessage(GU_ErrorCodes code, const char *msg=0) const
SYS_FORCE_INLINE bool isValid() const
GLenum GLint GLint * precision
Class to return information about a GA_Detail.
ImageBuf OIIO_API cut(const ImageBuf &src, ROI roi={}, int nthreads=0)
GA_API const UT_StringHolder parms
virtual bool smooth(GA_AttributeOperand &d, GA_AttributeOperand &min, GA_AttributeOperand &max, GA_AttributeOperand &t) const
d = SYSsmooth(min, max, t);
const UT_IntArray & myRingValence
void sortPrimitiveList(int seed)
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)
GU_API GA_PrimitiveFactory & GUgetFactory()
void sortPrimitiveList(GU_AxisType axis)
bool process(T &func, UT_WorkBuffer &fullpath, exint fullpath_len, const UT_StringArray &paths, const UT_Array< FS_Stat > &stats)
Utility function to process the contents of the traverse() function.
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)
void sortPointList(GU_AxisType axis)
void OIIO_UTIL_API split(string_view str, std::vector< string_view > &result, string_view sep=string_view(), int maxsplit=-1)
void sortPrims(GA_IndexMap &array, GU_AxisType axis=GU_XAXIS)
SIM_API const UT_StringHolder distance
GU_Detail(const GU_Detail *src, GA_PrimitiveGroup *primGroup, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
void sortPrimitiveList(fpreal *order)
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER IMATH_HOSTDEVICE IMATH_CONSTEXPR14 T clip(const T &p, const Box< T > &box) IMATH_NOEXCEPT
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)