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); }
985 void shift(
int uoffset,
int voffset,
992 { shiftPoints(map,
GA_Range(map), offset); }
994 { shiftPrims(map,
GA_Range(map), offset); }
1009 bool update_attributes =
true);
1014 { reversePoints(map,
GA_Range(map)); }
1016 { reversePrims(map,
GA_Range(map)); }
1029 { proximityPoints(points,
GA_Range(points), point); }
1032 { proximityPrims(primitives,
GA_Range(primitives), point); }
1049 { vertexOrder(points,
GA_Range(points)); }
1068 bool flipedges =
false,
bool avoiddegeneracy =
false);
1078 bool flipedges =
false,
1079 bool avoiddegeneracy =
false);
1088 const GA_Detail *restgdp=0,
bool flipedges =
false,
1089 bool avoiddegeneracy =
false);
1094 float tol = 0.0001F,
1101 bool clippts =
false);
1113 fpreal tolerance = 0.00001,
1122 int normlize = 0,
int outputGroups = 0,
1137 void crease(
bool split,
1141 fpreal tolerance = 0.00001,
1151 void fractalize(
int seed = 1,
float roughness = 0.6F,
1152 float scaleby=1,
int divs=1,
1153 int fixedBoundry = 1,
int useVtxNorms = 0,
1155 const char *nmlattribname =
nullptr,
1156 float nx = 0,
float ny = 0,
float nz = 1,
1166 fpreal clip_tolerance = 0.0001,
1167 fpreal consilidate_tolerance = 0.001);
1170 bool tetrahedralizeForShrink(
const GA_PointGroup *ptGroup = 0,
1196 int reparameterize = 0);
1201 int reparameterize = 0);
1231 unsigned vorder = 0,
int vwrap = 0,
1232 int doskin = 1,
int nprims = -1,
1237 unsigned vorder = 0,
int vwrap = 0,
1238 int doskin = 1,
int nprims = -1,
1270 void filletRoundNetwork(
1316 const GU_Detail *deform,
int xdiv,
int ydiv,
int zdiv,
1330 void applyTraceTexture(
float xres,
float yres,
float resolution);
1345 int order=4,
int wrapped=0,
1349 int order=4,
int wrapped=0,
1351 const bool elevate_order_if_required =
true);
1363 int order=4,
int wrapped=0,
1368 int order=4,
int wrapped=0,
1373 int order=4,
int wrapped=0,
1376 const bool elevate_order_if_required =
true);
1379 int order = 4,
int corner=0);
1382 int order = 4,
int wrapped=0,
int corner=0);
1385 int order = 4,
int wrapped=0,
int corner=0);
1389 int uOrder=4,
int vOrder=4,
1400 int uOrder=4,
int vOrder=4,
1401 bool uWrapped=
false,
bool vWrapped=
false,
1412 int uOrder=4,
int vOrder=4,
1423 int uOrder=4,
int vOrder=4,
1424 bool uWrapped=
false,
bool vWrapped=
false,
1440 float tol=1e-1F,
float smooth=0.0F,
1441 int noMultipleKnots=1);
1444 int order=4,
int wrapped=0,
1445 float tol=1e-1F,
float smooth=0.0F,
1446 int noMultipleKnots=1);
1450 int uOrder=4,
int vOrder=4,
1452 float tol=1e-1F,
float smooth=0.0F,
1453 int uNoMultipleKnots=1,
1454 int vNoMultipleKnots=1);
1457 int uOrder=4,
int vOrder=4,
1458 int uWrapped=0,
int vWrapped=0,
1460 float tol=1e-1F,
float smooth=0.0F,
1461 int uNoMultipleKnots=1,
1462 int vNoMultipleKnots=1);
1467 void refine(
float *uunit,
int ulen,
1468 float *vunit,
int vlen,
1469 int countu=1,
int countv=1,
1473 void unrefine(
float umin,
float umax,
1474 float vmin,
float vmax,
1475 int countu=1,
int countv=1,
1476 float utol=0.001F,
float vtol=0.001F,
1479 void subdivide(
float *uunit,
int ulen,
1480 float *vunit,
int vlen,
1494 return scale1.isValid() || scale2.isValid();
1501 if (!gah.
isValid())
return uval;
1502 return gah.
get(off) * uval;
1504 float apply(
const GEO_Primitive *prim,
float uval,
int side)
const;
1508 int extract(
float *uunit,
int ulen,
1509 float *vunit,
int vlen,
1512 int op = 0,
int keepOriginal = 0,
1513 int atbreakpoints = 0,
int use_arc_length = 0,
1514 DomainScaleAttribs uscale = DomainScaleAttribs(),
1515 DomainScaleAttribs vscale = DomainScaleAttribs());
1517 void extractIsoParms(
float *uunit,
int ulen,
1518 float *vunit,
int vlen,
1521 DomainScaleAttribs uscale=DomainScaleAttribs(),
1522 DomainScaleAttribs vscale=DomainScaleAttribs());
1524 void extractPoints(
float *uunit,
int ulen,
1525 float *vunit,
int vlen,
1528 bool use_arc_length =
false,
1529 DomainScaleAttribs uscale=DomainScaleAttribs(),
1530 DomainScaleAttribs vscale=DomainScaleAttribs());
1532 void extractProfiles(
float *uunit,
int ulen,
1533 float *vunit,
int vlen,
1535 DomainScaleAttribs uscale=DomainScaleAttribs(),
1536 DomainScaleAttribs vscale=DomainScaleAttribs());
1538 void extractIsoParmsAtBreak(
float *uunit,
int ulen,
1539 float *vunit,
int vlen,
1542 DomainScaleAttribs uscale=DomainScaleAttribs(),
1543 DomainScaleAttribs vscale=DomainScaleAttribs());
1545 void extractPointsAtBreak(
float *uunit,
int ulen,
1546 float *vunit,
int vlen,
1549 bool use_arc_length =
false,
1550 DomainScaleAttribs uscale=DomainScaleAttribs(),
1551 DomainScaleAttribs vscale=DomainScaleAttribs());
1553 void extractProfilesAtBreak(
float *uunit,
int ulen,
1554 float *vunit,
int vlen,
1556 DomainScaleAttribs uscale=DomainScaleAttribs(),
1557 DomainScaleAttribs vscale=DomainScaleAttribs());
1560 int cut(
float *uunit,
int ulen,
1561 float *vunit,
int vlen,
1563 int keepin=1,
int keepout=0,
int atbreakpoints = 0,
1564 int allU = 0,
int allV = 0,
int use_arc_length = 0,
1565 DomainScaleAttribs uscale = DomainScaleAttribs(),
1566 DomainScaleAttribs vscale = DomainScaleAttribs());
1574 bool deleteAll =
true);
1584 int *pointIndexTable = 0);
1596 int info(std::ostream &os,
1597 int max_group_lines=15,
1600 bool instanced=
false)
const;
1604 int max_group_lines=15,
1607 bool instanced=
false)
const;
1642 float tmax = 1E17F,
float tol = 1E-12F,
1645 float *u = 0,
float *
v = 0,
1646 int ignoretrim = 1) const;
1653 int commonFaceConfig(
1655 GA_PrimCompat::TypeMask &
type,
int &
order,
1656 bool &
open,
bool &ends) const;
1657 int commonFaceConfig(
1659 GA_PrimCompat::TypeMask &type,
int &order,
1660 bool &open,
bool &ends) const;
1662 GA_PrimCompat::TypeMask &type,
1663 int &orderu,
int &orderv,
1664 bool &openu,
bool &openv,
1665 bool &endsu,
bool &endsv) const;
1675 int makeFacesCompatible(
1678 bool mustopen = false,
1679 bool mustends = false,
1680 bool nonrational = false,
1681 GA_PrimCompat::TypeMask *extratype = 0,
1682 bool equalcvs = true);
1683 int makeFacesCompatible(
1686 bool mustopen = false,
1687 bool mustends = false,
1688 bool nonrational = false,
1689 GA_PrimCompat::TypeMask *extratype = 0,
1690 bool equalcvs = true);
1691 int makeFacesCompatible(
1696 bool mustopen = false,
1697 bool mustends = false,
1698 bool nonrational = false,
1699 GA_PrimCompat::TypeMask *extratype = 0,
1700 bool equalcvs = true);
1701 int makeFacesCompatible(
1706 bool mustopen = false,
1707 bool mustends = false,
1708 bool nonrational = false,
1709 GA_PrimCompat::TypeMask *extratype = 0,
1710 bool equalcvs = true);
1717 float lwidth1,
float lwidth2,
1718 float rwidth1,
float rwidth2,
1719 int sharp,
int &lstart,
int &rstart,
1720 int &lmax,
int &rmax,
1726 static
int getSubdividedCV(
GEO_Hull *hull,
int udir,
float unit);
1727 static
int getSubdividedCV(
GEO_Face *face,
float unit);
1734 static
exint getIOTranslatorCount();
1740 static
GA_Detail::IOStatus statH9File(const
char *filename,
1744 static
bool isFormatSupported(const
char *filename);
1769 int makeSurfacesCompatible(
1772 bool mustopenu=false,
bool mustopenv=false,
1773 bool mustendsu=false,
bool mustendsv=false,
1774 bool equalcvsu=true,
bool equalcvsv=true,
1775 GA_PrimCompat::TypeMask *extratype = 0);
1785 const char *msg = 0)
const
1790 const char *msg = 0)
const
1808 bool ordered =
false,
1809 bool clear_matching =
false);
1829 bool hasShallowCookSelectionReference(
1838 void removeCookSelection();
1842 void updateCookSelectionDataIds();
1848 void stashCookSelectionBeforeReplaceWith(
1849 GU_CookSelectionReplaceStash &stash)
const;
1861 void replaceCookSelection(
1863 GU_CookSelectionReplaceStash *stash);
1876 void removeInlinePoints(
float tol,
1884 bool ignoreOpenFaces =
false,
1885 float tolerance = 0.001F,
1886 bool onlyPolys =
true);
1888 bool ignoreOpenFaces =
false,
1889 float tolerance = 0.001F,
1890 bool onlyPolys =
true);
1895 void deleteGroupGeometry(
const GA_Group &group);
1900 bool del_inline_points,
1902 bool del_unused_points = true,
1903 bool del_bridges = true);
1917 GU_BRIDGEMODE_DELETE
1920 bool del_inline_points,
1922 bool del_unused_points,
1923 BridgeMode bridge_mode,
1924 bool del_degenerate_bridges,
1925 bool boundary_curves);
1930 bool rotattribs =
false,
1947 bool quadcut =
false,
1948 bool forcecut =
true,
1951 bool quadcomplete =
false,
1952 bool modifyGdp =
true,
1954 bool fixEnds =
false);
1958 void divideEdges(
const GA_EdgeGroup &edgegroup,
int numdivs = 1,
1959 bool applytoall =
true,
1960 bool use_shared_points =
false,
1963 bool preserve_edge_dir =
false);
1967 bool use_shared_points,
1970 bool preserve_edge_dir,
1981 void transformBreakpoints(const
UT_Matrix4 &mat,
1983 int quickxform = 0);
1991 bool removedegen = true,
1992 bool updatenmls = true,
2001 float insetdist,
float nmldist);
2017 int refinement_iterations = 6) const;
2022 int refinement_iterations = 6) const;
2044 void clearCachedBounds();
2049 static
void loadIODSOs();
2060 static
bool matchASCIIFileExtension(const
UT_StringRef &filename);
2073 class AttribValueLookupTable;
2074 class AttribSingleValueLookupTable;
2076 const AttribValueLookupTable *getLookupTable(const
GA_Attribute *attrib) const;
2077 const AttribSingleValueLookupTable *getSingleLookupTable(const
GA_Attribute *attrib) const;
2082 GU_Detail *cloneForCache(
bool copy_unique_id) const;
2088 void cloneForCache(
GU_Detail &dest,
bool copy_unique_id,
bool copy_detail=true) const;
2107 int order,
int wrapped,
2111 void fillGrid(
GEO_Hull &hull,
int rows,
int cols,
2112 float x_size,
float y_size,
2113 float x_center,
float y_center,
2117 void convertPolysToHull(
2119 bool keep_original);
2120 void convertToSoups(
2122 bool keep_original);
2123 void convertVolumesToVDBs(
2125 bool keep_original);
2126 void convertVDBsToVolumes(
2128 bool keep_original);
2129 void convertVolumesToPolys(
2131 bool keep_original);
2132 void convertMetasToPolys(
2134 bool keep_original);
2135 void convertTetsToPolys(
2137 bool keep_original);
2140 bool keep_original);
2147 int orderx,
int ordery,
int orderz,
2148 float xmin,
float xmax,
2149 float ymin,
float ymax,
2150 float zmin,
float zmax,
2156 bool checkRepPoints,
2161 bool makepolysoup = false);
2165 bool makepolysoup = false);
2166 int adjustStepBox(
float &
min,
float &
max,
float step);
2170 bool makepolysoup = false);
2185 myBoundingCache =
nullptr;
2186 myVisibleBoundingCache =
nullptr;
2187 myValueLookupCache =
nullptr;
2193 template <
bool VISIBLE_ONLY>
class BoundingCacheT;
2195 template <
bool VISIBLE_ONLY>
2196 static bool getCachedBoundsImpl(
2199 BoundingCacheT<VISIBLE_ONLY> *&cache);
2201 mutable BoundingCacheT<false> *myBoundingCache;
2202 mutable BoundingCacheT<true> *myVisibleBoundingCache;
2204 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)
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
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)
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
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)
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)
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)
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)
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 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)