17 #ifndef __GU_Detail_h__
18 #define __GU_Detail_h__
81 namespace GA_PrimCompat {
class TypeMask; }
106 class GU_CookSelectionReplaceStash;
124 class GU_OffsetParms;
147 template<
typename Prec>
157 class gu_ValueLookupCache;
178 merge(*src, primGroup,
214 void duplicate(
const GU_Detail& gdp,
int = 0,
227 : myRingZero(ringzero)
228 , myRingValence(ringvalence)
233 {
return myRingZero; }
235 {
return myRingValence; }
250 void findBoundaryPoints(
253 const RingRef *ringref =
nullptr,
260 void findSelectionBoundaryPoints(
271 void buildRingZeroPoints(
288 void buildRingZeroPoints(
296 void buildRingZeroVertices(
300 void buildRingZeroPrimitives(
311 bool read,
bool write)
const override;
323 float ymin = -1,
float ymax = 1,
324 float zmin = -1,
float zmax = 1,
325 int xdiv = 0,
int ydiv = 0,
int zdiv = 0,
326 int enforcementBars = 0,
327 int doConsolidatePoints = 0);
330 int orderx = 4,
int ordery = 4,
int orderz=4,
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);
338 int orderx = 4,
int ordery = 4,
int orderz=4,
339 float xmin = -0.5F,
float xmax = 0.5F,
340 float ymin = -0.5F,
float ymax = 0.5F,
341 float zmin = -0.5F,
float zmax = 0.5F,
343 bool consolidate =
false);
345 GU_PrimMesh *meshCube(
int xdiv,
int ydiv,
int zdiv,
346 float xmin = -0.5F,
float xmax = 0.5F,
347 float ymin = -0.5F,
float ymax = 0.5F,
348 float zmin = -0.5F,
float zmax = 0.5F,
350 bool consolidate =
false);
352 GU_PrimPoly *polymeshCube(
int xdiv,
int ydiv,
int zdiv,
353 float xmin = -0.5F,
float xmax = 0.5F,
354 float ymin = -0.5F,
float ymax = 0.5F,
355 float zmin = -0.5F,
float zmax = 0.5F,
357 bool consolidate =
false);
377 float xsize=1,
float ysize=1,
378 float xc = 0,
float yc = 0,
float zc = 0,
385 float xsize=1,
float ysize=1,
386 float xc = 0,
float yc = 0,
float zc = 0,
391 float xsize=1,
float ysize=1,
392 float xc = 0,
float yc = 0,
float zc = 0,
396 float xsize=1,
float ysize=1,
397 float xc = 0,
float yc = 0,
float zc = 0,
400 int wrapu = 0,
int wrapv = 0);
402 int orderu = 4,
int orderv = 4,
403 int interpEndsU = 1,
int interpEndsV = 1,
404 float xsize=1,
float ysize=1,
405 float xc = 0,
float yc = 0,
float zc = 0,
408 int wrapu = 0,
int wrapv = 0);
410 int orderu = 4,
int orderv = 4,
411 float xsize=1,
float ysize=1,
412 float xc = 0,
float yc = 0,
float zc = 0,
415 int wrapu = 0,
int wrapv = 0);
428 float (*ptOutside)(
const UT_Vector3 &,
void *),
431 int xdiv,
int ydiv,
int zdiv,
432 bool makepolysoup =
false);
438 bool makepolysoup =
false);
441 int divx,
int divy,
int divz,
443 bool makepolysoup =
false);
447 void buildMetaXsection(
469 bool doPos,
bool doClr,
bool doNml,
bool doTxt,
470 bool doVoxels,
bool doSlerp,
471 const char *ptidattr,
const char *primidattr);
480 int size,
bool doPos,
bool doClr,
481 bool doNml,
bool doTxt,
482 bool doVoxels,
bool doSlerp,
483 const char *ptidattr,
const char *primidattr,
497 bool forceConsAll = false,
499 bool accurate = false);
508 bool accurate = false);
522 ONLYCONS_GRP_PROP_LEAST = 0,
524 ONLYCONS_GRP_PROP_INTERSECT
535 bool deleteconsolidated = false,
536 OnlyConsGroupPropagateType
538 ONLYCONS_GRP_PROP_LEAST,
539 bool accurate = false);
543 bool forceConsAll = false,
544 bool accurate = false);
547 bool accurate = false);
559 int fastConsolidatePointUVs(
float distance,
571 int fastConsolidateVertexUVs(
float distance,
599 bool snapptpos = true,
601 bool accurate = true);
610 SNAP_ATTRIBUTES_AVERAGE = 0,
611 SNAP_ATTRIBUTES_INDEX
621 float xlines,
float ylines,
float zlines,
622 float xoff,
float yoff,
float zoff,
627 void snapGridPointUVs(
int type,
628 float xlines,
float ylines,
float zlines,
629 float xoff,
float yoff,
float zoff,
633 void snapGridPointUVs(
635 float xlines,
float ylines,
float zlines,
636 float xoff,
float yoff,
float zoff,
640 void snapGridVertexUVs(
int type,
641 float xlines,
float ylines,
float zlines,
642 float xoff,
float yoff,
float zoff,
646 void snapGridVertexUVs(
648 float xlines,
float ylines,
float zlines,
649 float xoff,
float yoff,
float zoff,
656 int buildHoles(
float dist = 0.001F,
float angle = 0.2F,
681 bool removeRepPoints = false,
683 bool deleteDegenPrimPoints = false,
684 bool deleteOrphanedPoints = false,
685 bool deleteDegenerateBridges = false);
693 bool checkRepPoints = false,
701 int applyToVertex = -1,
int fixPolySeams = 0,
709 int applyToVertex = -1,
int fixPolySeams = 0,
715 bool scaleTexture(
float umult = 1,
float uoff = 0,
716 float vmult = 1,
float voff = 0,
717 float wmult = 1,
float woff = 0,
720 float umult = 1,
float uoff = 0,
721 float vmult = 1,
float voff = 0,
722 float wmult = 1,
float woff = 0,
724 bool rotateTexture(
float angle,
731 void transformPointTexture(const
UT_Matrix4& mat,
735 void transformPointTexture(
744 void computeSoftTransformPointTextureCache(
753 void computeSoftTransformPointTextureCache(
766 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);
785 void softTransformPointTexture(
788 float tx,
float ty,
float tz,
789 float rx,
float ry,
float rz,
790 float sx,
float sy,
float sz,
791 float s_xy,
float s_xz,
float s_yz,
792 float px,
float py,
float pz,
797 bool *falloff_written =
nullptr);
799 void transformVertexTexture(const
UT_Matrix4& mat,
803 void transformVertexTexture(
814 void computeSoftTransformVertexTextureCache(
819 bool ignore_uv_connectivity) const;
826 void computeSoftTransformVertexTextureCache(
832 bool ignore_uv_connectivity) const;
840 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);
859 void softTransformVertexTexture(
862 float tx,
float ty,
float tz,
863 float rx,
float ry,
float rz,
864 float sx,
float sy,
float sz,
865 float s_xy,
float s_xz,
float s_yz,
866 float px,
float py,
float pz,
871 bool *falloff_written =
nullptr);
880 bool computeAvgNormal(
884 bool computeAvgNormal(
902 void convertMetaballs(
914 { sortPoints(array,
GA_Range(array), axis); }
921 { sortPrims(array,
GA_Range(array), axis); }
946 { sortPoints(array,
GA_Range(array), o, d); }
951 { sortPrims(array,
GA_Range(array), o, d); }
976 { sortElements(array,
GA_Range(array), order); }
978 { sortElements(array,
GA_Range(array), order); }
1002 void shift(
int uoffset,
int voffset,
1009 { shiftPoints(map,
GA_Range(map), offset); }
1011 { shiftPrims(map,
GA_Range(map), offset); }
1026 bool update_attributes =
true);
1031 { reversePoints(map,
GA_Range(map)); }
1033 { reversePrims(map,
GA_Range(map)); }
1046 { proximityPoints(points,
GA_Range(points), point); }
1049 { proximityPrims(primitives,
GA_Range(primitives), point); }
1066 { vertexOrder(points,
GA_Range(points)); }
1085 bool flipedges =
false,
bool avoiddegeneracy =
false);
1095 bool flipedges =
false,
1096 bool avoiddegeneracy =
false);
1105 const GA_Detail *restgdp=0,
bool flipedges =
false,
1106 bool avoiddegeneracy =
false);
1111 float tol = 0.0001F,
1118 bool clippts =
false);
1130 fpreal tolerance = 0.00001,
1139 int normlize = 0,
int outputGroups = 0,
1154 void crease(
bool split,
1158 fpreal tolerance = 0.00001,
1168 void fractalize(
int seed = 1,
float roughness = 0.6F,
1169 float scaleby=1,
int divs=1,
1170 int fixedBoundry = 1,
int useVtxNorms = 0,
1172 const char *nmlattribname =
nullptr,
1173 float nx = 0,
float ny = 0,
float nz = 1,
1183 fpreal clip_tolerance = 0.0001,
1184 fpreal consilidate_tolerance = 0.001);
1187 bool tetrahedralizeForShrink(
const GA_PointGroup *ptGroup = 0,
1213 int reparameterize = 0);
1218 int reparameterize = 0);
1248 unsigned vorder = 0,
int vwrap = 0,
1249 int doskin = 1,
int nprims = -1,
1254 unsigned vorder = 0,
int vwrap = 0,
1255 int doskin = 1,
int nprims = -1,
1287 void filletRoundNetwork(
1335 int xdiv,
int ydiv,
int zdiv,
1349 void applyTraceTexture(
float xres,
float yres,
float resolution);
1364 int order=4,
int wrapped=0,
1368 int order=4,
int wrapped=0,
1370 const bool elevate_order_if_required =
true);
1382 int order=4,
int wrapped=0,
1387 int order=4,
int wrapped=0,
1392 int order=4,
int wrapped=0,
1395 const bool elevate_order_if_required =
true);
1398 int order = 4,
int corner=0);
1401 int order = 4,
int wrapped=0,
int corner=0);
1404 int order = 4,
int wrapped=0,
int corner=0);
1408 int uOrder=4,
int vOrder=4,
1419 int uOrder=4,
int vOrder=4,
1420 bool uWrapped=
false,
bool vWrapped=
false,
1431 int uOrder=4,
int vOrder=4,
1442 int uOrder=4,
int vOrder=4,
1443 bool uWrapped=
false,
bool vWrapped=
false,
1459 float tol=1e-1F,
float smooth=0.0F,
1460 int noMultipleKnots=1);
1463 int order=4,
int wrapped=0,
1464 float tol=1e-1F,
float smooth=0.0F,
1465 int noMultipleKnots=1);
1469 int uOrder=4,
int vOrder=4,
1471 float tol=1e-1F,
float smooth=0.0F,
1472 int uNoMultipleKnots=1,
1473 int vNoMultipleKnots=1);
1476 int uOrder=4,
int vOrder=4,
1477 int uWrapped=0,
int vWrapped=0,
1479 float tol=1e-1F,
float smooth=0.0F,
1480 int uNoMultipleKnots=1,
1481 int vNoMultipleKnots=1);
1486 void refine(
float *uunit,
int ulen,
1487 float *vunit,
int vlen,
1488 int countu=1,
int countv=1,
1492 void unrefine(
float umin,
float umax,
1493 float vmin,
float vmax,
1494 int countu=1,
int countv=1,
1495 float utol=0.001F,
float vtol=0.001F,
1498 void subdivide(
float *uunit,
int ulen,
1499 float *vunit,
int vlen,
1513 return scale1.isValid() || scale2.isValid();
1520 if (!gah.
isValid())
return uval;
1521 return gah.
get(off) * uval;
1523 float apply(
const GEO_Primitive *prim,
float uval,
int side)
const;
1527 int extract(
float *uunit,
int ulen,
1528 float *vunit,
int vlen,
1531 int op = 0,
int keepOriginal = 0,
1532 int atbreakpoints = 0,
int use_arc_length = 0,
1533 DomainScaleAttribs uscale = DomainScaleAttribs(),
1534 DomainScaleAttribs vscale = DomainScaleAttribs());
1536 void extractIsoParms(
float *uunit,
int ulen,
1537 float *vunit,
int vlen,
1540 DomainScaleAttribs uscale=DomainScaleAttribs(),
1541 DomainScaleAttribs vscale=DomainScaleAttribs());
1543 void extractPoints(
float *uunit,
int ulen,
1544 float *vunit,
int vlen,
1547 bool use_arc_length =
false,
1548 DomainScaleAttribs uscale=DomainScaleAttribs(),
1549 DomainScaleAttribs vscale=DomainScaleAttribs());
1551 void extractProfiles(
float *uunit,
int ulen,
1552 float *vunit,
int vlen,
1554 DomainScaleAttribs uscale=DomainScaleAttribs(),
1555 DomainScaleAttribs vscale=DomainScaleAttribs());
1557 void extractIsoParmsAtBreak(
float *uunit,
int ulen,
1558 float *vunit,
int vlen,
1561 DomainScaleAttribs uscale=DomainScaleAttribs(),
1562 DomainScaleAttribs vscale=DomainScaleAttribs());
1564 void extractPointsAtBreak(
float *uunit,
int ulen,
1565 float *vunit,
int vlen,
1568 bool use_arc_length =
false,
1569 DomainScaleAttribs uscale=DomainScaleAttribs(),
1570 DomainScaleAttribs vscale=DomainScaleAttribs());
1572 void extractProfilesAtBreak(
float *uunit,
int ulen,
1573 float *vunit,
int vlen,
1575 DomainScaleAttribs uscale=DomainScaleAttribs(),
1576 DomainScaleAttribs vscale=DomainScaleAttribs());
1579 int cut(
float *uunit,
int ulen,
1580 float *vunit,
int vlen,
1582 int keepin=1,
int keepout=0,
int atbreakpoints = 0,
1583 int allU = 0,
int allV = 0,
int use_arc_length = 0,
1584 DomainScaleAttribs uscale = DomainScaleAttribs(),
1585 DomainScaleAttribs vscale = DomainScaleAttribs());
1593 bool deleteAll =
true);
1603 int *pointIndexTable = 0);
1615 int info(std::ostream &os,
1616 int max_group_lines=15,
1619 bool instanced=
false)
const;
1623 int max_group_lines=15,
1626 bool instanced=
false)
const;
1661 float tmax = 1E17F,
float tol = 1E-12F,
1664 float *u = 0,
float *
v = 0,
1665 int ignoretrim = 1) const;
1672 int commonFaceConfig(
1674 GA_PrimCompat::TypeMask &
type,
int &
order,
1675 bool &
open,
bool &ends) const;
1676 int commonFaceConfig(
1678 GA_PrimCompat::TypeMask &type,
int &order,
1679 bool &open,
bool &ends) const;
1681 GA_PrimCompat::TypeMask &type,
1682 int &orderu,
int &orderv,
1683 bool &openu,
bool &openv,
1684 bool &endsu,
bool &endsv) const;
1694 int makeFacesCompatible(
1697 bool mustopen = false,
1698 bool mustends = false,
1699 bool nonrational = false,
1700 GA_PrimCompat::TypeMask *extratype = 0,
1701 bool equalcvs = true);
1702 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);
1720 int makeFacesCompatible(
1725 bool mustopen = false,
1726 bool mustends = false,
1727 bool nonrational = false,
1728 GA_PrimCompat::TypeMask *extratype = 0,
1729 bool equalcvs = true);
1736 float lwidth1,
float lwidth2,
1737 float rwidth1,
float rwidth2,
1738 int sharp,
int &lstart,
int &rstart,
1739 int &lmax,
int &rmax,
1745 static
int getSubdividedCV(
GEO_Hull *hull,
int udir,
float unit);
1746 static
int getSubdividedCV(
GEO_Face *face,
float unit);
1753 static
exint getIOTranslatorCount();
1759 static
GA_Detail::IOStatus statH9File(const
char *filename,
1763 static
bool isFormatSupported(const
char *filename);
1788 int makeSurfacesCompatible(
1791 bool mustopenu=false,
bool mustopenv=false,
1792 bool mustendsu=false,
bool mustendsv=false,
1793 bool equalcvsu=true,
bool equalcvsv=true,
1794 GA_PrimCompat::TypeMask *extratype = 0);
1804 const char *msg = 0)
const
1809 const char *msg = 0)
const
1827 bool ordered =
false,
1828 bool clear_matching =
false);
1848 bool hasShallowCookSelectionReference(
1857 void removeCookSelection();
1861 void updateCookSelectionDataIds();
1867 void stashCookSelectionBeforeReplaceWith(
1868 GU_CookSelectionReplaceStash &stash)
const;
1880 void replaceCookSelection(
1882 GU_CookSelectionReplaceStash *stash);
1895 void removeInlinePoints(
float tol,
1903 bool ignoreOpenFaces =
false,
1904 float tolerance = 0.001F,
1905 bool onlyPolys =
true);
1907 bool ignoreOpenFaces =
false,
1908 float tolerance = 0.001F,
1909 bool onlyPolys =
true);
1914 void deleteGroupGeometry(
const GA_Group &group);
1919 bool del_inline_points,
1921 bool del_unused_points = true,
1922 bool del_bridges = true);
1936 GU_BRIDGEMODE_DELETE
1939 bool del_inline_points,
1941 bool del_unused_points,
1942 BridgeMode bridge_mode,
1943 bool del_degenerate_bridges,
1944 bool boundary_curves);
1949 bool rotattribs =
false,
1966 bool quadcut =
false,
1967 bool forcecut =
true,
1970 bool quadcomplete =
false,
1971 bool modifyGdp =
true,
1973 bool fixEnds =
false,
1974 bool grpExcludeExtraEdges =
false);
1978 void divideEdges(
const GA_EdgeGroup &edgegroup,
int numdivs = 1,
1979 bool applytoall =
true,
1980 bool use_shared_points =
false,
1983 bool preserve_edge_dir =
false);
1987 bool use_shared_points,
1990 bool preserve_edge_dir,
2001 void transformBreakpoints(const
UT_Matrix4 &mat,
2003 int quickxform = 0);
2011 bool removedegen = true,
2012 bool updatenmls = true,
2021 float insetdist,
float nmldist);
2037 int refinement_iterations = 6) const;
2042 int refinement_iterations = 6) const;
2064 void clearCachedBounds();
2069 static
void loadIODSOs();
2070 static
bool runDSO(const
char* lib_path);
2081 static
bool matchASCIIFileExtension(const
UT_StringRef &filename);
2094 class AttribValueLookupTable;
2095 class AttribSingleValueLookupTable;
2097 const AttribValueLookupTable *getLookupTable(const
GA_Attribute *attrib) const;
2098 const AttribSingleValueLookupTable *getSingleLookupTable(const
GA_Attribute *attrib) const;
2103 GU_Detail *cloneForCache(
bool copy_unique_id) const;
2109 void cloneForCache(
GU_Detail &dest,
bool copy_unique_id,
bool copy_detail=true) const;
2113 void createAttributesFromOptions(const
UT_Options *opts,
2134 int order,
int wrapped,
2138 void fillGrid(
GEO_Hull &hull,
int rows,
int cols,
2139 float x_size,
float y_size,
2140 float x_center,
float y_center,
2144 void convertPolysToHull(
2146 bool keep_original);
2147 void convertToSoups(
2149 bool keep_original);
2150 void convertVolumesToVDBs(
2152 bool keep_original);
2153 void convertVDBsToVolumes(
2155 bool keep_original);
2156 void convertVolumesToPolys(
2158 bool keep_original);
2159 void convertMetasToPolys(
2161 bool keep_original);
2162 void convertTetsToPolys(
2164 bool keep_original);
2167 bool keep_original);
2174 int orderx,
int ordery,
int orderz,
2175 float xmin,
float xmax,
2176 float ymin,
float ymax,
2177 float zmin,
float zmax,
2183 bool checkRepPoints,
2188 bool makepolysoup = false);
2192 bool makepolysoup = false);
2193 int adjustStepBox(
float &
min,
float &
max,
float step);
2197 bool makepolysoup = false);
2213 myBoundingCache =
nullptr;
2214 myVisibleBoundingCache =
nullptr;
2215 myValueLookupCache =
nullptr;
2221 template <
bool VISIBLE_ONLY>
class BoundingCacheT;
2223 template <
bool VISIBLE_ONLY>
2224 static bool getCachedBoundsImpl(
2227 BoundingCacheT<VISIBLE_ONLY> *&cache);
2229 mutable BoundingCacheT<false> *myBoundingCache;
2230 mutable BoundingCacheT<true> *myVisibleBoundingCache;
2232 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.
GR_API bool buildGrid(RE_RenderContext r, UT_Vector2F size, UT_UniquePtr< RV_Geometry > &out_geo)
#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
GA_Size GEO_API GEOsplitPoints(GEO_Detail *detail, const GA_ElementGroup *group=nullptr, const GA_AttributeFilter *filter=nullptr)
GU_Detail(const GU_Detail *src, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
GA_API const UT_StringHolder trans
CE_API bool refine(const CE_OSDRefinement &topo, const CE_OSDEvaluator &eval, const cl::Buffer &coarse, CE_FloatArray &refined_data)
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
A map of string to various well defined value types.
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)
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)