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(
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,
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(
890 void convertMetaballs(
902 { sortPoints(array,
GA_Range(array), axis); }
909 { sortPrims(array,
GA_Range(array), axis); }
934 { sortPoints(array,
GA_Range(array), o, d); }
939 { sortPrims(array,
GA_Range(array), o, d); }
964 { sortElements(array,
GA_Range(array), order); }
966 { sortElements(array,
GA_Range(array), order); }
983 void shift(
int uoffset,
int voffset,
990 { shiftPoints(map,
GA_Range(map), offset); }
992 { shiftPrims(map,
GA_Range(map), offset); }
1007 bool update_attributes =
true);
1012 { reversePoints(map,
GA_Range(map)); }
1014 { reversePrims(map,
GA_Range(map)); }
1027 { proximityPoints(points,
GA_Range(points), point); }
1030 { proximityPrims(primitives,
GA_Range(primitives), point); }
1047 { vertexOrder(points,
GA_Range(points)); }
1066 bool flipedges =
false,
bool avoiddegeneracy =
false);
1076 bool flipedges =
false,
1077 bool avoiddegeneracy =
false);
1086 const GA_Detail *restgdp=0,
bool flipedges =
false,
1087 bool avoiddegeneracy =
false);
1092 float tol = 0.0001F,
1099 bool clippts =
false);
1104 int normlize = 0,
int outputGroups = 0,
1110 void fractalize(
int seed = 1,
float roughness = 0.6F,
1111 float scaleby=1,
int divs=1,
1112 int fixedBoundry = 1,
int useVtxNorms = 0,
1114 const char *nmlattribname =
nullptr,
1115 float nx = 0,
float ny = 0,
float nz = 1,
1125 fpreal clip_tolerance = 0.0001,
1126 fpreal consilidate_tolerance = 0.001);
1129 bool tetrahedralizeForShrink(
const GA_PointGroup *ptGroup = 0,
1155 int reparameterize = 0);
1160 int reparameterize = 0);
1190 unsigned vorder = 0,
int vwrap = 0,
1191 int doskin = 1,
int nprims = -1,
1196 unsigned vorder = 0,
int vwrap = 0,
1197 int doskin = 1,
int nprims = -1,
1229 void filletRoundNetwork(
1275 const GU_Detail *deform,
int xdiv,
int ydiv,
int zdiv,
1289 void applyTraceTexture(
float xres,
float yres,
float resolution);
1304 int order=4,
int wrapped=0,
1308 int order=4,
int wrapped=0,
1310 const bool elevate_order_if_required =
true);
1322 int order=4,
int wrapped=0,
1327 int order=4,
int wrapped=0,
1332 int order=4,
int wrapped=0,
1335 const bool elevate_order_if_required =
true);
1338 int order = 4,
int corner=0);
1341 int order = 4,
int wrapped=0,
int corner=0);
1344 int order = 4,
int wrapped=0,
int corner=0);
1348 int uOrder=4,
int vOrder=4,
1359 int uOrder=4,
int vOrder=4,
1360 bool uWrapped=
false,
bool vWrapped=
false,
1371 int uOrder=4,
int vOrder=4,
1382 int uOrder=4,
int vOrder=4,
1383 bool uWrapped=
false,
bool vWrapped=
false,
1399 float tol=1e-1F,
float smooth=0.0F,
1400 int noMultipleKnots=1);
1403 int order=4,
int wrapped=0,
1404 float tol=1e-1F,
float smooth=0.0F,
1405 int noMultipleKnots=1);
1409 int uOrder=4,
int vOrder=4,
1411 float tol=1e-1F,
float smooth=0.0F,
1412 int uNoMultipleKnots=1,
1413 int vNoMultipleKnots=1);
1416 int uOrder=4,
int vOrder=4,
1417 int uWrapped=0,
int vWrapped=0,
1419 float tol=1e-1F,
float smooth=0.0F,
1420 int uNoMultipleKnots=1,
1421 int vNoMultipleKnots=1);
1426 void refine(
float *uunit,
int ulen,
1427 float *vunit,
int vlen,
1428 int countu=1,
int countv=1,
1432 void unrefine(
float umin,
float umax,
1433 float vmin,
float vmax,
1434 int countu=1,
int countv=1,
1435 float utol=0.001F,
float vtol=0.001F,
1438 void subdivide(
float *uunit,
int ulen,
1439 float *vunit,
int vlen,
1453 return scale1.isValid() || scale2.isValid();
1460 if (!gah.
isValid())
return uval;
1461 return gah.
get(off) * uval;
1463 float apply(
const GEO_Primitive *prim,
float uval,
int side)
const;
1467 int extract(
float *uunit,
int ulen,
1468 float *vunit,
int vlen,
1471 int op = 0,
int keepOriginal = 0,
1472 int atbreakpoints = 0,
int use_arc_length = 0,
1473 DomainScaleAttribs uscale = DomainScaleAttribs(),
1474 DomainScaleAttribs vscale = DomainScaleAttribs());
1476 void extractIsoParms(
float *uunit,
int ulen,
1477 float *vunit,
int vlen,
1480 DomainScaleAttribs uscale=DomainScaleAttribs(),
1481 DomainScaleAttribs vscale=DomainScaleAttribs());
1483 void extractPoints(
float *uunit,
int ulen,
1484 float *vunit,
int vlen,
1487 bool use_arc_length =
false,
1488 DomainScaleAttribs uscale=DomainScaleAttribs(),
1489 DomainScaleAttribs vscale=DomainScaleAttribs());
1491 void extractProfiles(
float *uunit,
int ulen,
1492 float *vunit,
int vlen,
1494 DomainScaleAttribs uscale=DomainScaleAttribs(),
1495 DomainScaleAttribs vscale=DomainScaleAttribs());
1497 void extractIsoParmsAtBreak(
float *uunit,
int ulen,
1498 float *vunit,
int vlen,
1501 DomainScaleAttribs uscale=DomainScaleAttribs(),
1502 DomainScaleAttribs vscale=DomainScaleAttribs());
1504 void extractPointsAtBreak(
float *uunit,
int ulen,
1505 float *vunit,
int vlen,
1508 bool use_arc_length =
false,
1509 DomainScaleAttribs uscale=DomainScaleAttribs(),
1510 DomainScaleAttribs vscale=DomainScaleAttribs());
1512 void extractProfilesAtBreak(
float *uunit,
int ulen,
1513 float *vunit,
int vlen,
1515 DomainScaleAttribs uscale=DomainScaleAttribs(),
1516 DomainScaleAttribs vscale=DomainScaleAttribs());
1519 int cut(
float *uunit,
int ulen,
1520 float *vunit,
int vlen,
1522 int keepin=1,
int keepout=0,
int atbreakpoints = 0,
1523 int allU = 0,
int allV = 0,
int use_arc_length = 0,
1524 DomainScaleAttribs uscale = DomainScaleAttribs(),
1525 DomainScaleAttribs vscale = DomainScaleAttribs());
1533 bool deleteAll =
true);
1543 int *pointIndexTable = 0);
1555 int info(std::ostream &os,
1556 int max_group_lines=15,
1559 bool instanced=
false)
const;
1563 int max_group_lines=15,
1566 bool instanced=
false)
const;
1601 float tmax = 1E17F,
float tol = 1E-12F,
1604 float *u = 0,
float *
v = 0,
1605 int ignoretrim = 1)
const;
1612 int commonFaceConfig(
1614 GA_PrimCompat::TypeMask &
type,
int &
order,
1615 bool &
open,
bool &ends) const;
1616 int commonFaceConfig(
1618 GA_PrimCompat::TypeMask &type,
int &order,
1619 bool &open,
bool &ends) const;
1621 GA_PrimCompat::TypeMask &type,
1622 int &orderu,
int &orderv,
1623 bool &openu,
bool &openv,
1624 bool &endsu,
bool &endsv) const;
1634 int makeFacesCompatible(
1637 bool mustopen = false,
1638 bool mustends = false,
1639 bool nonrational = false,
1640 GA_PrimCompat::TypeMask *extratype = 0,
1641 bool equalcvs = true);
1642 int makeFacesCompatible(
1645 bool mustopen = false,
1646 bool mustends = false,
1647 bool nonrational = false,
1648 GA_PrimCompat::TypeMask *extratype = 0,
1649 bool equalcvs = true);
1650 int makeFacesCompatible(
1655 bool mustopen = false,
1656 bool mustends = false,
1657 bool nonrational = false,
1658 GA_PrimCompat::TypeMask *extratype = 0,
1659 bool equalcvs = true);
1660 int makeFacesCompatible(
1665 bool mustopen = false,
1666 bool mustends = false,
1667 bool nonrational = false,
1668 GA_PrimCompat::TypeMask *extratype = 0,
1669 bool equalcvs = true);
1676 float lwidth1,
float lwidth2,
1677 float rwidth1,
float rwidth2,
1678 int sharp,
int &lstart,
int &rstart,
1679 int &lmax,
int &rmax,
1685 static
int getSubdividedCV(
GEO_Hull *hull,
int udir,
float unit);
1686 static
int getSubdividedCV(
GEO_Face *face,
float unit);
1693 static
exint getIOTranslatorCount();
1699 static
GA_Detail::IOStatus statH9File(const
char *filename,
1703 static
bool isFormatSupported(const
char *filename);
1728 int makeSurfacesCompatible(
1731 bool mustopenu=false,
bool mustopenv=false,
1732 bool mustendsu=false,
bool mustendsv=false,
1733 bool equalcvsu=true,
bool equalcvsv=true,
1734 GA_PrimCompat::TypeMask *extratype = 0);
1744 const char *msg = 0)
const
1749 const char *msg = 0)
const
1767 bool ordered =
false,
1768 bool clear_matching =
false);
1788 bool hasShallowCookSelectionReference(
1797 void removeCookSelection();
1801 void updateCookSelectionDataIds();
1807 void stashCookSelectionBeforeReplaceWith(
1808 GU_CookSelectionReplaceStash &stash)
const;
1820 void replaceCookSelection(
1822 GU_CookSelectionReplaceStash *stash);
1835 void removeInlinePoints(
float tol,
1843 bool ignoreOpenFaces =
false,
1844 float tolerance = 0.001F,
1845 bool onlyPolys =
true);
1847 bool ignoreOpenFaces =
false,
1848 float tolerance = 0.001F,
1849 bool onlyPolys =
true);
1854 void deleteGroupGeometry(
const GA_Group &group);
1859 bool del_inline_points,
1861 bool del_unused_points = true,
1862 bool del_bridges = true);
1876 GU_BRIDGEMODE_DELETE
1879 bool del_inline_points,
1881 bool del_unused_points,
1882 BridgeMode bridge_mode,
1883 bool del_degenerate_bridges,
1884 bool boundary_curves);
1889 bool rotattribs =
false,
1906 bool quadcut =
false,
1907 bool forcecut =
true,
1910 bool quadcomplete =
false,
1911 bool modifyGdp =
true,
1913 bool fixEnds =
false);
1917 void divideEdges(
const GA_EdgeGroup &edgegroup,
int numdivs = 1,
1918 bool applytoall =
true,
1919 bool use_shared_points =
false,
1922 bool preserve_edge_dir =
false);
1926 bool use_shared_points,
1929 bool preserve_edge_dir,
1942 int quickxform = 0);
1950 bool removedegen = true,
1951 bool updatenmls = true,
1960 float insetdist,
float nmldist);
1976 int refinement_iterations = 6) const;
1981 int refinement_iterations = 6) const;
2003 void clearCachedBounds();
2008 static
void loadIODSOs();
2019 static
bool matchASCIIFileExtension(const
UT_StringRef &filename);
2032 class AttribValueLookupTable;
2033 class AttribSingleValueLookupTable;
2035 const AttribValueLookupTable *getLookupTable(const
GA_Attribute *attrib) const;
2036 const AttribSingleValueLookupTable *getSingleLookupTable(const
GA_Attribute *attrib) const;
2041 GU_Detail *cloneForCache(
bool copy_unique_id) const;
2047 void cloneForCache(
GU_Detail &dest,
bool copy_unique_id,
bool copy_detail=true) const;
2062 template <typename ArrayType>
2064 const ArrayType &gpData,
2066 int order,
int wrapped,
2070 void fillGrid(
GEO_Hull &hull,
int rows,
int cols,
2071 float x_size,
float y_size,
2072 float x_center,
float y_center,
2076 void convertPolysToHull(
2078 bool keep_original);
2079 void convertToSoups(
2081 bool keep_original);
2082 void convertVolumesToVDBs(
2084 bool keep_original);
2085 void convertVDBsToVolumes(
2087 bool keep_original);
2088 void convertVolumesToPolys(
2090 bool keep_original);
2091 void convertMetasToPolys(
2093 bool keep_original);
2094 void convertTetsToPolys(
2096 bool keep_original);
2099 bool keep_original);
2106 int orderx,
int ordery,
int orderz,
2107 float xmin,
float xmax,
2108 float ymin,
float ymax,
2109 float zmin,
float zmax,
2115 bool checkRepPoints,
2120 bool makepolysoup = false);
2124 bool makepolysoup = false);
2125 int adjustStepBox(
float &
min,
float &
max,
float step);
2129 bool makepolysoup = false);
2144 myBoundingCache =
nullptr;
2145 myVisibleBoundingCache =
nullptr;
2146 myValueLookupCache =
nullptr;
2152 template <
bool VISIBLE_ONLY>
class BoundingCacheT;
2154 template <
bool VISIBLE_ONLY>
2155 static bool getCachedBoundsImpl(
2158 BoundingCacheT<VISIBLE_ONLY> *&cache);
2160 mutable BoundingCacheT<false> *myBoundingCache;
2161 mutable BoundingCacheT<true> *myVisibleBoundingCache;
2163 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.
void read(T &in, bool &v)
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 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)
void write(T &out, bool v)
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)