HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GU_Detail Class Reference

#include <GU_Detail.h>

+ Inheritance diagram for GU_Detail:

Classes

class  AttribSingleValueLookupTable
 
class  AttribValueLookupTable
 
struct  DomainScaleAttribs
 
class  RingRef
 

Public Types

enum  OnlyConsGroupPropagateType { ONLYCONS_GRP_PROP_LEAST = 0, ONLYCONS_GRP_PROP_UNION, ONLYCONS_GRP_PROP_INTERSECT }
 
enum  SnapAttributesType { SNAP_ATTRIBUTES_AVERAGE = 0, SNAP_ATTRIBUTES_INDEX }
 
enum  BridgeMode { GU_BRIDGEMODE_BRIDGE, GU_BRIDGEMODE_DISJOINT, GU_BRIDGEMODE_DELETE }
 
- Public Types inherited from GEO_Detail
enum  CaptureType {
  CAPTURE_BONE = 0, CAPTURE_META, CAPTURE_WIRE, CAPTURE_CLOTH,
  CAPTURE_MUSCLE
}
 Methods for manipulating capture weights (GEO_CaptureWeight.C) More...
 
enum  VisualizationType { VISTYPE_SINGLE, VISTYPE_MULTIPLE }
 
using LocalXformContextR = LocalXformContextT< fpreal >
 
using LocalXformContextF = LocalXformContextT< fpreal32 >
 
using LocalXformContextD = LocalXformContextT< fpreal64 >
 
typedef GEO_Primitive GB_MACRO_PRIM_TYPE
 
typedef UT_Array
< PointAdjacencyData
GEO_PointAdjArray
 
typedef UT_Array
< EdgeAdjacencyData
GEO_EdgeAdjArray
 
- Public Types inherited from GA_Detail
enum  GA_DestroyPointMode { GA_LEAVE_PRIMITIVES, GA_DESTROY_DEGENERATE, GA_DESTROY_DEGENERATE_INCOMPATIBLE }
 
typedef GA_Primitive GB_MACRO_PRIM_TYPE
 

Public Member Functions

 GU_Detail ()
 
 GU_Detail (bool full_topology)
 
 GU_Detail (const GU_Detail *src, GA_PrimitiveGroup *primGroup, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
 
 GU_Detail (const GU_Detail *src, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
 
 ~GU_Detail () override
 
int64 getMemoryUsage (bool inclusive) const override
 Compute memory usage (includes all shared memory) More...
 
void countMemory (UT_MemoryCounter &counter, bool inclusive) const override
 
void clearCaches () override
 
void duplicate (const GU_Detail &gdp, int=0, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
 
GA_DetailcloneEmptyDetail (bool clone_attributes) const override
 
void findBoundaryPoints (UT_BitArray &isboundary, bool checkuv, const RingRef *ringref=nullptr, const UT_StringHolder &uvattribname="uv"_UTsh) const
 
void findSelectionBoundaryPoints (const UT_BitArray &pointselection, UT_BitArray &isboundary) const
 
void buildRingZeroPoints (UT_Array< GA_OffsetArray > &ringzero, UT_IntArray *ringvalence=0) const
 
void buildRingZeroPoints (const GA_PointGroup *ptgroup, UT_Array< GA_OffsetArray > &ringzero, UT_IntArray *ringvalence=0, const GA_PrimitiveGroup *primgroup=0) const
 
void buildRingZeroVertices (UT_Array< GA_OffsetArray > &ringzero, const GA_PrimitiveGroup *prims=0) const
 
void buildRingZeroPrimitives (UT_Array< GA_OffsetArray > &ringzero) const
 
UT_UniquePtr< GA_CEAttributebuildTopologyCEAttribute (GA_Topology::TopologyCE topotype, GA_StorageClass storage, GA_Precision precision, int &tuplesize, bool isarray, bool read, bool write) const override
 
GU_PrimPolycube (float xmin=-1, float xmax=1, float ymin=-1, float ymax=1, float zmin=-1, float zmax=1, int xdiv=0, int ydiv=0, int zdiv=0, int enforcementBars=0, int doConsolidatePoints=0)
 
GU_PrimNURBSurfnurbCube (int xdiv, int ydiv, int zdiv, int orderx=4, int ordery=4, int orderz=4, float xmin=-0.5F, float xmax=0.5F, float ymin=-0.5F, float ymax=0.5F, float zmin=-0.5F, float zmax=0.5F, GEO_SurfaceType type=GEO_PATCH_QUADS, bool consolidate=false)
 
GU_PrimRBezSurfbezCube (int xdiv, int ydiv, int zdiv, int orderx=4, int ordery=4, int orderz=4, float xmin=-0.5F, float xmax=0.5F, float ymin=-0.5F, float ymax=0.5F, float zmin=-0.5F, float zmax=0.5F, GEO_SurfaceType type=GEO_PATCH_QUADS, bool consolidate=false)
 
GU_PrimMeshmeshCube (int xdiv, int ydiv, int zdiv, float xmin=-0.5F, float xmax=0.5F, float ymin=-0.5F, float ymax=0.5F, float zmin=-0.5F, float zmax=0.5F, GEO_SurfaceType type=GEO_PATCH_QUADS, bool consolidate=false)
 
GU_PrimPolypolymeshCube (int xdiv, int ydiv, int zdiv, float xmin=-0.5F, float xmax=0.5F, float ymin=-0.5F, float ymax=0.5F, float zmin=-0.5F, float zmax=0.5F, GEO_SurfaceType type=GEO_PATCH_QUADS, bool consolidate=false)
 
GA_Offset buildGrid (GU_GridParms &parms, GU_GridType type=GU_GRID_MESH)
 
GA_Offset pointGrid (int rows, int cols, float xsize=1, float ysize=1, float xc=0, float yc=0, float zc=0, GU_OrientationType plane=GU_PLANE_XY, GA_Offset startpoint=GA_INVALID_OFFSET)
 
GA_Offset polyGrid (int rows, int cols, float xsize=1, float ysize=1, float xc=0, float yc=0, float zc=0, GU_OrientationType plane=GU_PLANE_XY, GEO_SurfaceType type=GEO_PATCH_QUADS)
 
GU_PrimPolySouppolySoupGrid (int rows, int cols, float xsize=1, float ysize=1, float xc=0, float yc=0, float zc=0, GU_OrientationType plane=GU_PLANE_XY, GEO_SurfaceType type=GEO_PATCH_QUADS)
 Creates a grid that is a single polygon soup in this detail. More...
 
GU_PrimMeshmeshGrid (int rows, int cols, float xsize=1, float ysize=1, float xc=0, float yc=0, float zc=0, GU_OrientationType plane=GU_PLANE_XY, GEO_SurfaceType type=GEO_PATCH_QUADS, int wrapu=0, int wrapv=0)
 
GU_PrimNURBSurfnurbGrid (int rows, int cols, int orderu=4, int orderv=4, int interpEndsU=1, int interpEndsV=1, float xsize=1, float ysize=1, float xc=0, float yc=0, float zc=0, GU_OrientationType plane=GU_PLANE_XY, GEO_SurfaceType type=GEO_PATCH_QUADS, int wrapu=0, int wrapv=0)
 
GU_PrimRBezSurfbezGrid (int rows, int cols, int orderu=4, int orderv=4, float xsize=1, float ysize=1, float xc=0, float yc=0, float zc=0, GU_OrientationType plane=GU_PLANE_XY, GEO_SurfaceType type=GEO_PATCH_QUADS, int wrapu=0, int wrapv=0)
 
void torus (unsigned type, GU_TorusParms &parms)
 
void polyIsoSurface (float(*ptOutside)(const UT_Vector3 &, void *), void *data, const UT_BoundingBox &bbox, int xdiv, int ydiv, int zdiv, bool makepolysoup=false)
 
void buildMetaSurface (const GU_Detail *src, float lod, const GA_PrimitiveGroup *primGroup=0, bool makepolysoup=false)
 
void buildMetaSurface (const GU_Detail *src, int divx, int divy, int divz, const GA_PrimitiveGroup *primGroup=0, bool makepolysoup=false)
 
void buildMetaXsection (const GU_Detail *src, int nsections, int axis=2, int maxdepth=4, const GA_PrimitiveGroup *primGroup=nullptr)
 
void orient (const GA_PrimitiveGroup *group=0)
 orient all the polygonal faces to have the same winding direction More...
 
void extrude (GU_ExtrudeParms &parms)
 inset and extrude a face More...
 
void blend (const GU_Detail *source, float weight, bool doPos, bool doClr, bool doNml, bool doTxt, bool doVoxels, bool doSlerp, const char *ptidattr, const char *primidattr)
 
int blend (const GU_Detail *gdps[], const float weights[], int size, bool doPos, bool doClr, bool doNml, bool doTxt, bool doVoxels, bool doSlerp, const char *ptidattr, const char *primidattr, const GA_PointGroup *ptGroup)
 
void creep (GU_CreepParms &parms)
 Transform points to follow surface of path input. More...
 
GA_Size consolidatePoints (fpreal distance, const GA_PointGroup *ptGrp=0, bool forceConsAll=false, bool mark=false, bool accurate=false)
 
GA_Size fastConsolidatePoints (fpreal distance, const GA_PointGroup *ptGrp=0, bool mark=false, bool accurate=false)
 
GA_Size onlyConsolidatePoints (fpreal distance, const GA_PointGroup *ptgrp=0, bool mark=false, bool deleteconsolidated=false, OnlyConsGroupPropagateType grouppropagate=ONLYCONS_GRP_PROP_LEAST, bool accurate=false)
 
GA_Size consolidateNormals (fpreal distance, const GA_PointGroup *ptGrp=0, bool forceConsAll=false, bool accurate=false)
 
GA_Size fastConsolidateNormals (fpreal distance, const GA_PointGroup *ptGrp=0, bool accurate=false)
 
int fastConsolidatePointUVs (float distance, const GA_PointGroup &ptGrp, const GU_MetricType metric, int method, UT_Vector3 &uvw)
 
int fastConsolidatePointUVs (const GA_RWHandleV3 &uvattrib, float distance, const GA_PointGroup &ptGrp, const GU_MetricType metric, int method, UT_Vector3 &uvw)
 
int fastConsolidateVertexUVs (float distance, const GA_VertexGroup &vtxGrp, const GU_MetricType metric, int method, UT_Vector3 &uvw)
 
int fastConsolidateVertexUVs (const GA_RWHandleV3 &uvattrib, float distance, const GA_VertexGroup &vtxGrp, const GU_MetricType metric, int method, UT_Vector3 &uvw)
 
GA_Size snapPoints (int type, fpreal distance, const GA_PointGroup *ptgrp=0, bool snapptpos=true, UT_Array< GA_Attribute * > *ptattribs=0, bool accurate=true)
 
void snapGrid (int type, float xlines, float ylines, float zlines, float xoff, float yoff, float zoff, float tol, const GA_PointGroup *ptGrp=0)
 
void snapGridPointUVs (int type, float xlines, float ylines, float zlines, float xoff, float yoff, float zoff, float tol, const GA_PointGroup *ptGrp=0)
 Same as above, but with UVs... More...
 
void snapGridPointUVs (const GA_RWHandleV3 &uvattrib, int type, float xlines, float ylines, float zlines, float xoff, float yoff, float zoff, float tol, const GA_PointGroup *ptGrp=0)
 
void snapGridVertexUVs (int type, float xlines, float ylines, float zlines, float xoff, float yoff, float zoff, float tol, const GA_VertexGroup *vtxGrp=0)
 
void snapGridVertexUVs (const GA_RWHandleV3 &uvattrib, int type, float xlines, float ylines, float zlines, float xoff, float yoff, float zoff, float tol, const GA_VertexGroup *vtxGrp=0)
 
int buildHoles (float dist=0.001F, float angle=0.2F, int snapFace=0, const GA_PrimitiveGroup *primGroup=0)
 
void unHole (const GA_PrimitiveGroup *primGroup=0)
 Remove bridged holes from other than polygons. More...
 
void uniquePoints (const GA_PointGroup *group=0)
 
void uniquePrimitive (GEO_Primitive *prim)
 
GA_Size cleanData (const GA_PrimitiveGroup *primGrp=0, bool removeRepPoints=false, float tol=0.001F, bool deleteDegenPrimPoints=false, bool deleteOrphanedPoints=false, bool deleteDegenerateBridges=false)
 
GA_Size getDirtyData (GA_PrimitiveGroup *returnGrp, const GA_PrimitiveGroup *primGrp=0, bool checkRepPoints=false, float tol=0.001F)
 
bool applyTexture (GU_TextureType type, GU_AxisType axis, const GA_PrimitiveGroup *primGroup=0, int applyToVertex=-1, int fixPolySeams=0, const GU_CameraParms *userData=0)
 
bool applyTexture (const UT_StringRef &uvattribname, GU_TextureType type, GU_AxisType axis, const GA_PrimitiveGroup *primGroup=0, int applyToVertex=-1, int fixPolySeams=0, const GU_CameraParms *userData=0)
 
bool scaleTexture (float umult=1, float uoff=0, float vmult=1, float voff=0, float wmult=1, float woff=0, const GA_PrimitiveGroup *primGroup=0)
 
bool scaleTexture (const UT_StringRef &uvattribname, float umult=1, float uoff=0, float vmult=1, float voff=0, float wmult=1, float woff=0, const GA_PrimitiveGroup *primGroup=0)
 
bool rotateTexture (float angle, const GA_PrimitiveGroup *primGroup=0)
 
bool rotateTexture (const UT_StringRef &uvattribname, float angle, const GA_PrimitiveGroup *primGroup=0)
 
void transformPointTexture (const UT_Matrix4 &mat, const GA_PointGroup *ptGroup=nullptr, GEO_Delta *geodelta=0)
 Methods for transforming point and vertex texture attributes: More...
 
void transformPointTexture (const GA_RWHandleV3 &pth, const UT_Matrix4 &mat, const GA_PointGroup *ptGroup=nullptr, GEO_Delta *geodelta=0)
 
void computeSoftTransformPointTextureCache (GEO_SoftTransformCache &cache, const GA_PointGroup *ptgroup, const GEO_Rolloff &rolloff, const GU_MetricType metric) const
 
void computeSoftTransformPointTextureCache (const GA_ROHandleV3 &pttxth, GEO_SoftTransformCache &cache, const GA_PointGroup *ptgroup, const GEO_Rolloff &rolloff, const GU_MetricType metric) const
 
void softTransformPointTexture (const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, const GEO_SoftTransformCache &cache, const GEO_Rolloff &rolloff, GEO_Delta *geodelta=0, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTransformPointTexture (const GA_RWHandleV3 &ptattr, const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, const GEO_SoftTransformCache &cache, const GEO_Rolloff &rolloff, GEO_Delta *geodelta=0, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void transformVertexTexture (const UT_Matrix4 &mat, const GA_VertexGroup *vertexGroup=nullptr, GEO_Delta *geodelta=0)
 
void transformVertexTexture (const GA_RWHandleV3 &vtxh, const UT_Matrix4 &mat, const GA_VertexGroup *vertexGroup=nullptr, GEO_Delta *geodelta=0)
 
void computeSoftTransformVertexTextureCache (GEO_SoftTransformCache &cache, const GA_VertexGroup *vtxgroup, const GEO_Rolloff &rolloff, const GU_MetricType metric, bool ignore_uv_connectivity) const
 
void computeSoftTransformVertexTextureCache (const GA_ROHandleV3 &vtxh, GEO_SoftTransformCache &cache, const GA_VertexGroup *vtxgroup, const GEO_Rolloff &rolloff, const GU_MetricType metric, bool ignore_uv_connectivity) const
 
void softTransformVertexTexture (const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, const GEO_SoftTransformCache &cache, const GEO_Rolloff &rolloff, GEO_Delta *geodelta=0, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTransformVertexTexture (const GA_RWHandleV3 &vtxh, const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, const GEO_SoftTransformCache &cache, const GEO_Rolloff &rolloff, GEO_Delta *geodelta=0, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void reversePolys (const GA_PrimitiveGroup *prmGrp=0)
 Reverse polygons. More...
 
void convertMetaballs (GEO_MetaConvertParms &parms, const GA_PrimitiveGroup *prim_grp=nullptr)
 
void shift (int uoffset, int voffset, const GA_PrimitiveGroup *group=nullptr)
 
void reverse (const GA_PrimitiveGroup *group=nullptr, bool update_attributes=true)
 
void superEllipsoid (const GU_SuperQuadParms &parms)
 
void convexPoly (GEO_PrimPoly *pp, GA_ElementWranglerCache &wranglers, GA_Size maxpts=3, const GA_Detail *restgdp=0, bool flipedges=false, bool avoiddegeneracy=false)
 
void convexPolySoup (GEO_PrimPolySoup *polysoup, GA_Size maxpts=3, const GA_Detail *restgdp=0, bool flipedges=false, bool avoiddegeneracy=false)
 
void convex (GA_Size maxpts=3, const GA_PrimitiveGroup *primGroup=0, const GA_Detail *restgdp=0, bool flipedges=false, bool avoiddegeneracy=false)
 
GA_Size findNonPlanar (GA_PrimitiveGroup *nonplanargroup, float tol=0.0001F, const GA_PrimitiveGroup *searchprimgroup=nullptr)
 Add non-planar polygon primitives to nonplanargroup. More...
 
void clip (UT_Vector3 &normal, float d=0, int normlize=0, const GA_PrimitiveGroup *primGroup=0, bool clippts=false)
 
void clip (bool fill, const UT_Vector3F &origin, const UT_Vector3F &normal, fpreal tolerance=0.00001, const GA_PrimitiveGroup *group=nullptr, GA_EdgeGroup *on_edges=nullptr, GA_PrimitiveGroup *on_polygons=nullptr, GA_PrimitiveGroup *filled_polygons=nullptr)
 
void crease (UT_Vector3 &normal, float d=0, int normlize=0, int outputGroups=0, GA_PrimitiveGroup *above=0, GA_PrimitiveGroup *below=0, const GA_PrimitiveGroup *creaseGroup=0)
 
void crease (bool split, bool fill, const UT_Vector3F &origin, const UT_Vector3F &normal, fpreal tolerance=0.00001, const GA_PrimitiveGroup *group=nullptr, GA_EdgeGroup *on_edges=nullptr, GA_PrimitiveGroup *on_prims=nullptr, GA_PrimitiveGroup *above_prims=nullptr, GA_PrimitiveGroup *below_prims=nullptr, GA_PrimitiveGroup *filled_polygons=nullptr)
 
void fractalize (int seed=1, float roughness=0.6F, float scaleby=1, int divs=1, int fixedBoundry=1, int useVtxNorms=0, const char *nmlattribname=nullptr, float nx=0, float ny=0, float nz=1, const GA_PrimitiveGroup *fractalGroup=0)
 
void shrink (fpreal distance, fpreal clip_tolerance=0.0001, fpreal consilidate_tolerance=0.001)
 
bool tetrahedralizeForShrink (const GA_PointGroup *ptGroup=0, GU_Detail *gdp=0)
 preliminary routine to setup the gdp to be shrunk by the shrink routine More...
 
int nonLinearDeform (GU_DeformType type, const GU_TwistParms &parms, int &pasted)
 
GEO_Hulloffset (const GU_OffsetParms &parms)
 
GEO_Hullcoons (GEO_SurfaceType surftype, const GEO_Face &uface1, const GEO_Face &vface1, const GEO_Face *uface2=0, const GEO_Face *vface2=0)
 
GEO_Hullskin (GU_SkinParms &parms, GU_SkinCache &skin_cache)
 
int ruled (GEO_Hull *&surface, const GU_RuledParms &p, const GU_CapOptions &caps)
 
int curveNetwork (GEO_Hull *&hull, GU_CurveNetworkParms &p, int &count, GU_SkinCache &skin_cache)
 
GU_ERROR sweep (GU_SweepParms parms)
 
void rails (GU_RailParms parms)
 
GEO_Primitivejoin (GU_JoinParms &p, int &count)
 Join more faces or surfaces together. More...
 
GEO_HullfilletTrims (GU_TrimFilletParms &parms, int &count)
 Generate a fillet between two curves on surfaces: More...
 
GEO_HullfilletRound (GU_RoundFilletParms &parms)
 Generate a rounded fillet: More...
 
void filletRoundNetwork (const UT_RefMatrix< GEO_Primitive * > &facematrix, GU_RoundFilletParms &parms)
 
int fillet (GU_FilletParms &parms, int &count)
 
int revolve (const GU_RevolveParms &parms, const GU_CapOptions &caps, int &count)
 
int warp (GU_WarpParms &parms)
 Warp curves or surfaces. Return 0 if successful and -1 otherwise. More...
 
GU_ERROR curveClay (const GU_CurveClayParms &ccparm)
 Curve Clay it! More...
 
int endCap (GEO_Hull &hull, const GU_CapParms &parms)
 This puts endcaps on the specified hull. More...
 
int endCap (GEO_Face &face, const GU_CapParms &parms)
 
int setCaps (GEO_Hull &hull, const GU_CapOptions &parms, int &count)
 This places all caps on the hull. More...
 
int setCaps (GEO_Face &face, const GU_CapOptions &parms, int &count)
 
int lattice (const GU_Detail *source, const GU_Detail *rest, const GU_Detail *deform, int xdiv, int ydiv, int zdiv, const GA_PointGroup *ptgroup=0, UT_BitArray *deform_history=nullptr, GU_LatticeType type=GU_LATTICE_BEZIER)
 
int magnet (const GU_MagnetParms &parms)
 
float trace (GU_TraceParms *parms)
 trace a raster image to form closed polygons More...
 
void applyTraceTexture (float xres, float yres, float resolution)
 add point texture attributes to traced geometry More...
 
void fit2DCurve (const GU_Detail *source, float error_squared, GA_PrimitiveGroup *primGroup=0)
 fit a sequence of discrete points to a series of bezier curves More...
 
void polySpline (GU_PolysplineParms &parms, const GA_PrimitiveGroup *primGroup=0, bool deleteAll=true)
 
bool polyPatch (GU_PolypatchParms &parms, const GA_PrimitiveGroup *primGroup=0)
 
int polyReduce (GU_PolyReduceParms &parms, const GA_PrimitiveGroup *primGroup=0, int *pointIndexTable=0)
 reduce the number of polygons in a detail: More...
 
void polySoup (const GEO_PolySoupParms &parms, const GU_Detail *srcdetail)
 Create polygon soup(s), i.e. GU_PrimPolySoup, where possible in this detail. More...
 
void lsystem (GU_LSystemParms &lp)
 Create geometry through premise and rule substitution. More...
 
int info (std::ostream &os, int max_group_lines=15, bool pretty=false, const UT::ArraySet< const void * > *dontcounttheseblocks=0, bool instanced=false) const
 
void info (UT_WorkBuffer &wbuf, int max_group_lines=15, bool pretty=false, const UT::ArraySet< const void * > *dontcounttheseblocks=0, bool instanced=false) const
 
void statVolumes (GA_Stat &stat, uint level) const override
 Fills in a stat structure with the volume information. More...
 
GEO_PrimitiveintersectRay (const UT_Vector3 &o, const UT_Vector3 &d, float tmax=1E17F, float tol=1E-12F, float *dist=0, UT_Vector3 *pos=0, UT_Vector3 *nml=0, int accurate=0, float *u=0, float *v=0, int ignoretrim=1) const
 
GA_Detail::IOStatus saveH9File (const char *filename, const GA_SaveOptions *options) const
 
void align (GU_AlignParms &parms)
 Align a set of primitives by rotation and translation. More...
 
int stitch (GU_StitchParms &parms)
 
int makeSurfacesCompatible (const GA_PrimitiveGroup &insurfs, GA_PrimitiveGroup &outsurfs, bool mustopenu=false, bool mustopenv=false, bool mustendsu=false, bool mustendsv=false, bool equalcvsu=true, bool equalcvsv=true, GA_PrimCompat::TypeMask *extratype=0)
 
GU_SelectionHandle getOrCreateCookSelection (GA_GroupType group_type, bool ordered=false, bool clear_matching=false)
 
GA_GroupType getCookSelectionGroupType () const
 
GU_SelectionHandle createShallowCookSelection (GA_Group *group)
 
bool hasShallowCookSelectionReference (const GA_Group *group) const
 
GU_SelectionHandle cookSelection () const
 Returns the current cook selection;. More...
 
void removeCookSelection ()
 
void updateCookSelectionDataIds ()
 
void stashCookSelectionBeforeReplaceWith (GU_CookSelectionReplaceStash &stash) const
 Assumes a fresh GU_CookSelectionReplaceStash instance. More...
 
void replaceCookSelection (const GU_Detail &src, GU_CookSelectionReplaceStash *stash)
 
void forceCookSelection (GU_SelectionHandle sel)
 
GU_SelectionHandle stealCookSelection ()
 
void removeInlinePoints (float tol, const GA_PrimitiveGroup *prims, const GA_PointGroup *pts=nullptr)
 
void deleteGroupGeometry (const GA_Group &group)
 
void deleteEdges (GA_EdgeGroup &edgegroup, bool del_inline_points, float inlinetol, bool del_unused_points=true, bool del_bridges=true)
 Deletes edge geometry. More...
 
void dissolveEdges (const GA_EdgeGroup &edgegroup, bool del_inline_points, fpreal inlinetol, bool del_unused_points, BridgeMode bridge_mode, bool del_degenerate_bridges, bool boundary_curves)
 
void flipEdges (const GA_EdgeGroup &edgegroup, int rotations=1, bool rotattribs=false, GA_EdgeGroup *outedges=0)
 Flips edges. More...
 
void edgeSplit (const GU_SplitLocArray &splitlocs, bool quadcut=false, bool forcecut=true, GA_EdgeGroup *outedges=0, float tolerance=SYS_FTOLERANCE, bool quadcomplete=false, bool modifyGdp=true, UT_Fpreal32Array *outPositions=nullptr, bool fixEnds=false)
 
void divideEdges (const UT_Array< GU_EdgeDiv * > &divlocs, GA_PointGroup &outgrp)
 
void transformBreakpoints (const UT_Matrix4 &mat, const GA_BreakpointGroup *grp=0, int quickxform=0)
 Transform breakpoints. More...
 
void polyExtrude (const GU_PolyExtrudeParms &parms)
 Extrude faces, uses local face spaces and tries to mirror extrusions. More...
 
void edgeCollapse (const GA_EdgeGroup &edgegroup, bool removedegen=true, bool updatenmls=true, GA_PointGroup *outpoints=nullptr, const UT_Array< GA_Attribute * > *connect_attrib=nullptr)
 Collapse Edges. More...
 
void edgeCrease (const GU_EdgeCreaseParms &parms)
 Adds crease weights to edges. More...
 
void pointInset (const GA_PointGroup *ptgroup, float insetdist, float nmldist)
 Insets points. More...
 
void getOBBox (const GA_PrimitiveGroup *grp, UT_Matrix4 &transform, UT_Vector3 &radii) const
 
void getOBBoxForPrims (const GA_PrimitiveGroup *grp, UT_OBBoxD &obb, int refinement_iterations=6) const
 
void getOBBoxForPoints (const GA_PointGroup *grp, UT_OBBoxD &obb, int refinement_iterations=6) const
 
bool getCachedBounds (UT_BoundingBox &box) const
 
bool getCachedVisibleBounds (UT_BoundingBox &box) const
 
void clearCachedBounds ()
 
GA_Size makePrimsPlanar (const GA_PrimitiveGroup *grp=0)
 Make each primitive planar, returns the number of primitives xformed. More...
 
exint getUniqueValueCount (const GA_Attribute *attrib) const
 
exint getUniqueIntegerValue (const GA_Attribute *attrib, exint idx) const
 
const UT_StringHoldergetUniqueStringValue (const GA_Attribute *attrib, exint idx) const
 
GA_Range getRangeByValue (const GA_Attribute *attrib, exint v) const
 
GA_Range getRangeByValue (const GA_Attribute *attrib, const UT_StringRef &v) const
 
const AttribValueLookupTablegetLookupTable (const GA_Attribute *attrib) const
 
const
AttribSingleValueLookupTable
getSingleLookupTable (const GA_Attribute *attrib) const
 
GU_DetailcloneForCache (bool copy_unique_id) const
 
void cloneForCache (GU_Detail &dest, bool copy_unique_id, bool copy_detail=true) const
 
bool computeAvgNormal (const GA_PointGroup *group, const GA_ROHandleV3 &normals, UT_Vector3 &avg_normal) const
 
bool computeAvgNormal (const GA_PointGroup *group, UT_Vector3 &avg_normal) const
 
void convert (GEO_ConvertParms &parms)
 
void convertNew (GEO_ConvertParms &parms)
 Performs conversion, keeping the source primitives. More...
 
void sortPoints (GA_IndexMap &array, GU_AxisType axis=GU_XAXIS)
 
void sortPoints (GA_IndexMap &array, const GA_Range &range, GU_AxisType axis)
 
void sortPoints (GA_OffsetArray &array, GU_AxisType axis=GU_XAXIS)
 
void sortPrims (GA_IndexMap &array, GU_AxisType axis=GU_XAXIS)
 
void sortPrims (GA_IndexMap &array, const GA_Range &range, GU_AxisType axis)
 
void sortPointList (GU_AxisType axis)
 
void sortPrimitiveList (GU_AxisType axis)
 
void sortPointsSpatial ()
 
void sortPointsSpatial (const GA_Range &range)
 
void sortPrimsSpatial ()
 
void sortPrimsSpatial (const GA_Range &range)
 
void sortPoints (GA_IndexMap &array, const UT_Vector3 &o, const UT_Vector3 &d)
 
void sortPoints (GA_IndexMap &array, const GA_Range &range, const UT_Vector3 &o, const UT_Vector3 &d)
 
void sortPrims (GA_IndexMap &array, const UT_Vector3 &o, const UT_Vector3 &d)
 
void sortPrims (GA_IndexMap &array, const GA_Range &range, const UT_Vector3 &o, const UT_Vector3 &d)
 
void sortPointList (const UT_Vector3 &o, const UT_Vector3 &d)
 
void sortPrimitiveList (const UT_Vector3 &o, const UT_Vector3 &d)
 
void sortPoints (GA_IndexMap &array, int seed)
 
void sortPrims (GA_IndexMap &array, int seed)
 
void sortPointList (int seed)
 
void sortPrimitiveList (int seed)
 
void sortElements (GA_IndexMap &array, fpreal *order)
 
void sortElements (GA_IndexMap &array, exint *order)
 
void sortElements (GA_IndexMap &array, const GA_Range &range, fpreal *order)
 
void sortElements (GA_IndexMap &array, const GA_Range &range, exint *order)
 
void sortPointList (fpreal *order)
 
void sortPointList (exint *order)
 
void sortPrimitiveList (fpreal *order)
 
void sortPrimitiveList (exint *order)
 
void shiftPoints (GA_IndexMap &map, GA_Size offset)
 
void shiftPrims (GA_IndexMap &map, GA_Size offset)
 
void shiftPoints (GA_IndexMap &map, const GA_Range &range, GA_Size offset)
 
void shiftPrims (GA_IndexMap &map, const GA_Range &range, GA_Size offset)
 
void shiftPointList (GA_Size aoffset)
 
void shiftPrimitiveList (GA_Size aoffset)
 
void reversePoints (GA_IndexMap &map)
 
void reversePrims (GA_IndexMap &map)
 
void reversePoints (GA_IndexMap &map, const GA_Range &range)
 
void reversePrims (GA_IndexMap &map, const GA_Range &range)
 
void reversePointList ()
 
void reversePrimitiveList ()
 
void proximityPoints (GA_IndexMap &points, const UT_Vector3 &point)
 
void proximityPrims (GA_IndexMap &primitives, const UT_Vector3 &point)
 
void proximityPoints (GA_IndexMap &points, const GA_Range &range, const UT_Vector3 &point)
 
void proximityPrims (GA_IndexMap &primitives, const GA_Range &range, const UT_Vector3 &point)
 
void proximityToPointList (const UT_Vector3 &point)
 
void proximityToPrimitiveList (const UT_Vector3 &point)
 
void vertexOrder (GA_IndexMap &points)
 
void vertexOrder (GA_IndexMap &points, const GA_Range &range)
 
void sortByVertexOrder ()
 
GEO_Hullgordon (GEO_SurfaceType surftype, int accurate, const GA_PrimitiveGroup &ufaces, const GA_PrimitiveGroup &vfaces, int reparameterize=0)
 
GEO_Hullgordon (GEO_SurfaceType surftype, int accurate, const UT_Array< GEO_Primitive * > &uprims_in, const UT_Array< GEO_Primitive * > &vprims_in, GU_SkinCache &skin_cache, int reparameterize=0)
 
GEO_Hullskin (const GA_PrimitiveGroup &ucfaces, GEO_SurfaceType surftype=GEO_PATCH_QUADS, unsigned vorder=0, int vwrap=0, int doskin=1, int nprims=-1, const UT_Vector *vParmValues=0)
 
GEO_Hullskin (const UT_Array< GEO_Primitive * > &prims_in, GU_SkinCache &skin_cache, GEO_SurfaceType surftype=GEO_PATCH_QUADS, unsigned vorder=0, int vwrap=0, int doskin=1, int nprims=-1, const UT_Vector *vParmValues=0)
 
void loft (GU_LoftParms &p, const GA_PointGroup &g1, const GA_PointGroup &g2)
 
void loft (GU_LoftParms &p, const GA_PrimitiveGroup *group=0)
 
GEO_CurveinterpCurveBreakpoints (const GEO_Face &face, const GA_PrimitiveTypeId &type=GEO_PRIMNURBCURVE, int order=4, GA_ParameterizationType parmType=GA_PARAMETERIZATION_CHORD)
 
GEO_CurveinterpCurveBreakpoints (const GA_OffsetList &point_offsets, const GA_PrimitiveTypeId &type=GEO_PRIMNURBCURVE, int order=4, int wrapped=0, GA_ParameterizationType parmType=GA_PARAMETERIZATION_CHORD)
 
GEO_CurveinterpCurveBreakpoints (const UT_Vector4Array &v4Data, const GA_PrimitiveTypeId &type=GEO_PRIMNURBCURVE, int order=4, int wrapped=0, GA_ParameterizationType parmType=GA_PARAMETERIZATION_CHORD, const bool elevate_order_if_required=true)
 
GEO_CurveinterpCurveGlobal (const GEO_Face &face, const GA_PrimitiveTypeId &type=GEO_PRIMNURBCURVE, int order=4, GA_ParameterizationType parmType=GA_PARAMETERIZATION_CHORD, GA_KnotSpaceType knotSpaceType=GA_KNOT_SPACE_AVERAGING)
 
GEO_CurveinterpCurveGlobal (const GA_OffsetList &point_offsets, const GA_PrimitiveTypeId &type=GEO_PRIMNURBCURVE, int order=4, int wrapped=0, GA_ParameterizationType parmType=GA_PARAMETERIZATION_CHORD, GA_KnotSpaceType knotSpaceType=GA_KNOT_SPACE_AVERAGING)
 
GEO_CurveinterpCurveGlobal (const GA_Range &point_range, const GA_PrimitiveTypeId &type=GEO_PRIMNURBCURVE, int order=4, int wrapped=0, GA_ParameterizationType parmType=GA_PARAMETERIZATION_CHORD, GA_KnotSpaceType knotSpaceType=GA_KNOT_SPACE_AVERAGING)
 
GEO_CurveinterpCurveGlobal (const UT_Vector4Array &v4Data, const GA_PrimitiveTypeId &type=GEO_PRIMNURBCURVE, int order=4, int wrapped=0, GA_ParameterizationType parmType=GA_PARAMETERIZATION_CHORD, GA_KnotSpaceType knotSpaceType=GA_KNOT_SPACE_AVERAGING, const bool elevate_order_if_required=true)
 
GEO_CurveinterpCurveLocal (const GEO_Face &face, const GA_PrimitiveTypeId &type=GEO_PRIMBEZCURVE, int order=4, int corner=0)
 
GEO_CurveinterpCurveLocal (const UT_Array< GA_Offset > &goData, const GA_PrimitiveTypeId &type=GEO_PRIMBEZCURVE, int order=4, int wrapped=0, int corner=0)
 
GEO_CurveinterpCurveLocal (const UT_Vector4Array &v4Data, const GA_PrimitiveTypeId &type=GEO_PRIMBEZCURVE, int order=4, int wrapped=0, int corner=0)
 
GEO_TPSurfinterpSurfGlobal (const GEO_Hull &mesh, const GA_PrimitiveTypeId &type=GEO_PRIMNURBSURF, int uOrder=4, int vOrder=4, GEO_SurfaceType sType=GEO_PATCH_QUADS, GA_ParameterizationType uParmType=GA_PARAMETERIZATION_CHORD, GA_ParameterizationType vParmType=GA_PARAMETERIZATION_CHORD, GA_KnotSpaceType uKnotSpaceType=GA_KNOT_SPACE_AVERAGING, GA_KnotSpaceType vKnotSpaceType=GA_KNOT_SPACE_AVERAGING, const UT_Vector *uParmValues=0, const UT_Vector *vParmValues=0)
 
GEO_TPSurfinterpSurfGlobal (const GA_OffsetMatrix &goMesh, const GA_PrimitiveTypeId &type=GEO_PRIMNURBSURF, int uOrder=4, int vOrder=4, bool uWrapped=false, bool vWrapped=false, GEO_SurfaceType sType=GEO_PATCH_QUADS, GA_ParameterizationType uParmType=GA_PARAMETERIZATION_CHORD, GA_ParameterizationType vParmType=GA_PARAMETERIZATION_CHORD, GA_KnotSpaceType uKnotSpaceType=GA_KNOT_SPACE_AVERAGING, GA_KnotSpaceType vKnotSpaceType=GA_KNOT_SPACE_AVERAGING, const UT_Vector *uParmValues=0, const UT_Vector *vParmValues=0)
 
GEO_TPSurfinterpSurfBreakpoints (const GEO_Hull &mesh, const GA_PrimitiveTypeId &type=GEO_PRIMNURBSURF, int uOrder=4, int vOrder=4, GEO_SurfaceType sType=GEO_PATCH_QUADS, GA_ParameterizationType uParmType=GA_PARAMETERIZATION_CHORD, GA_ParameterizationType vParmType=GA_PARAMETERIZATION_CHORD, GA_KnotSpaceType uKnotSpaceType=GA_KNOT_SPACE_AVERAGING, GA_KnotSpaceType vKnotSpaceType=GA_KNOT_SPACE_AVERAGING, const UT_Vector *uParmValues=0, const UT_Vector *vParmValues=0)
 
GEO_TPSurfinterpSurfBreakpoints (const GA_OffsetMatrix &goMesh, const GA_PrimitiveTypeId &type=GEO_PRIMNURBSURF, int uOrder=4, int vOrder=4, bool uWrapped=false, bool vWrapped=false, GEO_SurfaceType sType=GEO_PATCH_QUADS, GA_ParameterizationType uParmType=GA_PARAMETERIZATION_CHORD, GA_ParameterizationType vParmType=GA_PARAMETERIZATION_CHORD, GA_KnotSpaceType uKnotSpaceType=GA_KNOT_SPACE_AVERAGING, GA_KnotSpaceType vKnotSpaceType=GA_KNOT_SPACE_AVERAGING, const UT_Vector *uParmValues=0, const UT_Vector *vParmValues=0)
 
GEO_CurveapproxCurveGlobal (const GEO_Face &face, const GA_PrimitiveTypeId &type=GEO_PRIMNURBCURVE, int order=4, float tol=1e-1F, float smooth=0.0F, int noMultipleKnots=1)
 
GEO_CurveapproxCurveGlobal (const UT_Vector4Array &v4Data, const GA_PrimitiveTypeId &type=GEO_PRIMNURBCURVE, int order=4, int wrapped=0, float tol=1e-1F, float smooth=0.0F, int noMultipleKnots=1)
 
GEO_TPSurfapproxSurfGlobal (const GEO_Hull &mesh, const GA_PrimitiveTypeId &type=GEO_PRIMNURBSURF, int uOrder=4, int vOrder=4, GEO_SurfaceType sType=GEO_PATCH_QUADS, float tol=1e-1F, float smooth=0.0F, int uNoMultipleKnots=1, int vNoMultipleKnots=1)
 
GEO_TPSurfapproxSurfGlobal (const GA_OffsetMatrix &gpMesh, const GA_PrimitiveTypeId &type=GEO_PRIMNURBSURF, int uOrder=4, int vOrder=4, int uWrapped=0, int vWrapped=0, GEO_SurfaceType sType=GEO_PATCH_QUADS, float tol=1e-1F, float smooth=0.0F, int uNoMultipleKnots=1, int vNoMultipleKnots=1)
 
void refine (float *uunit, int ulen, float *vunit, int vlen, int countu=1, int countv=1, int arcspacing=0, const GA_PrimitiveGroup *primGroup=0)
 
void unrefine (float umin, float umax, float vmin, float vmax, int countu=1, int countv=1, float utol=0.001F, float vtol=0.001F, const GA_PrimitiveGroup *primGroup=0)
 
void subdivide (float *uunit, int ulen, float *vunit, int vlen, int arcspacing=0, const GA_PrimitiveGroup *primGroup=0)
 
int extract (float *uunit, int ulen, float *vunit, int vlen, const GA_PrimitiveGroup *primGroup=0, GA_PointGroup *newPoints=0, int op=0, int keepOriginal=0, int atbreakpoints=0, int use_arc_length=0, DomainScaleAttribs uscale=DomainScaleAttribs(), DomainScaleAttribs vscale=DomainScaleAttribs())
 op = {0 = isoparms, 1 = points, 2 = profiles} More...
 
void extractIsoParms (float *uunit, int ulen, float *vunit, int vlen, GA_PrimitiveGroup *newPrims=0, const GA_PrimitiveGroup *primGroup=0, DomainScaleAttribs uscale=DomainScaleAttribs(), DomainScaleAttribs vscale=DomainScaleAttribs())
 
void extractPoints (float *uunit, int ulen, float *vunit, int vlen, GA_PointGroup *newPoints=0, const GA_PrimitiveGroup *primGroup=0, bool use_arc_length=false, DomainScaleAttribs uscale=DomainScaleAttribs(), DomainScaleAttribs vscale=DomainScaleAttribs())
 
void extractProfiles (float *uunit, int ulen, float *vunit, int vlen, const GA_PrimitiveGroup *primGroup=0, DomainScaleAttribs uscale=DomainScaleAttribs(), DomainScaleAttribs vscale=DomainScaleAttribs())
 
void extractIsoParmsAtBreak (float *uunit, int ulen, float *vunit, int vlen, GA_PrimitiveGroup *newPrims=0, const GA_PrimitiveGroup *primGroup=0, DomainScaleAttribs uscale=DomainScaleAttribs(), DomainScaleAttribs vscale=DomainScaleAttribs())
 
void extractPointsAtBreak (float *uunit, int ulen, float *vunit, int vlen, GA_PointGroup *newPoints=0, const GA_PrimitiveGroup *primGroup=0, bool use_arc_length=false, DomainScaleAttribs uscale=DomainScaleAttribs(), DomainScaleAttribs vscale=DomainScaleAttribs())
 
void extractProfilesAtBreak (float *uunit, int ulen, float *vunit, int vlen, const GA_PrimitiveGroup *primGroup=0, DomainScaleAttribs uscale=DomainScaleAttribs(), DomainScaleAttribs vscale=DomainScaleAttribs())
 
int cut (float *uunit, int ulen, float *vunit, int vlen, const GA_PrimitiveGroup *primGroup=0, int keepin=1, int keepout=0, int atbreakpoints=0, int allU=0, int allV=0, int use_arc_length=0, DomainScaleAttribs uscale=DomainScaleAttribs(), DomainScaleAttribs vscale=DomainScaleAttribs())
 
int commonFaceConfig (const GA_PrimitiveGroup &faceGroup, GA_PrimCompat::TypeMask &type, int &order, bool &open, bool &ends) const
 
int commonFaceConfig (const UT_Array< GEO_Primitive * > &faces_in, GA_PrimCompat::TypeMask &type, int &order, bool &open, bool &ends) const
 
int commonSurfaceConfig (const GA_PrimitiveGroup &surfs, GA_PrimCompat::TypeMask &type, int &orderu, int &orderv, bool &openu, bool &openv, bool &endsu, bool &endsv) const
 
int makeFacesCompatible (const GA_PrimitiveGroup &infaces, GA_PrimitiveGroup &outfaces, bool mustopen=false, bool mustends=false, bool nonrational=false, GA_PrimCompat::TypeMask *extratype=0, bool equalcvs=true)
 
int makeFacesCompatible (const UT_Array< GEO_Primitive * > &prims_in, UT_Array< GEO_Primitive * > &prims_out, bool mustopen=false, bool mustends=false, bool nonrational=false, GA_PrimCompat::TypeMask *extratype=0, bool equalcvs=true)
 
int makeFacesCompatible (const GA_PrimitiveGroup &infacesU, const GA_PrimitiveGroup &infacesV, GA_PrimitiveGroup &outfacesU, GA_PrimitiveGroup &outfacesV, bool mustopen=false, bool mustends=false, bool nonrational=false, GA_PrimCompat::TypeMask *extratype=0, bool equalcvs=true)
 
int makeFacesCompatible (const UT_Array< GEO_Primitive * > &ufaces_array, const UT_Array< GEO_Primitive * > &vfaces_array, UT_Array< GEO_Primitive * > &ucfaces_array, UT_Array< GEO_Primitive * > &vcfaces_array, bool mustopen=false, bool mustends=false, bool nonrational=false, GA_PrimCompat::TypeMask *extratype=0, bool equalcvs=true)
 
GU_ERROR error () const
 
void addMessage (GU_ErrorCodes code, const char *msg=0) const
 
void addWarning (GU_ErrorCodes code, const char *msg=0) const
 
void addError (GU_ErrorCodes code, const char *msg=0) const
 
GA_Size removeZeroAreaFaces (GA_PrimitiveGroup *grp, bool ignoreOpenFaces=false, float tolerance=0.001F, bool onlyPolys=true)
 
GA_Size removeZeroAreaFaces (const UT_IntArray &primlist, bool ignoreOpenFaces=false, float tolerance=0.001F, bool onlyPolys=true)
 
void divideEdges (const GA_EdgeGroup &edgegroup, int numdivs=1, bool applytoall=true, bool use_shared_points=false, GA_EdgeGroup *outedges=0, UT_Array< GA_Offset > *new_points=0, bool preserve_edge_dir=false)
 
void divideEdges (const GA_EdgeGroup &edgegroup, int numdivs, bool applytoall, bool use_shared_points, GA_EdgeGroup *outedges, UT_Array< GA_Offset > *new_points, bool preserve_edge_dir, float fraction)
 
- Public Member Functions inherited from GEO_Detail
 GEO_Detail (GA_PrimitiveFactory &factory, bool full_topology=true)
 
 ~GEO_Detail () override
 
void clearAndDestroy ()
 Clear all the points/primitives out of this detail. More...
 
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)
 
void mergePoints (const GEO_Detail &src, const GA_PointGroup *ptGrp=0, bool merge_groups=true, bool keep_internal_groups=true)
 
void mergePoints (const GEO_Detail &src, const GA_Range &points)
 Merge only a group of points. More...
 
void mergePrimitives (const GEO_Detail &src, const GA_Range &prims)
 Merge only a group of prims. More...
 
void merge (const GEO_Primitive &sprim, bool insertPrimAtHead=false)
 Merge a single primitive into this detail. More...
 
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)
 
void collapseIndexAttributes ()
 
void mirror (GEO_MirrorParms &parms)
 Mirrors a portion of the gdp across some plane. More...
 
template<typename FLOAT_T >
void transform (const UT_Matrix4T< FLOAT_T > &mat, const GA_Range &primitives, bool just_P, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flip_vector=true, bool update_ptnormals=false, GEO_Delta *geodelta=nullptr, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void transform (const UT_Matrix4T< FLOAT_T > &mat, const GA_Range &primitives, const GA_Range &points, bool just_P, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flip_vector=true, bool update_ptnormals=false, GEO_Delta *geodelta=nullptr, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void transform (const UT_Matrix4T< FLOAT_T > &mat, const GA_PrimitiveGroup *primGrp=0, const GA_PointGroup *pointClosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void transformRange (const UT_Matrix4T< FLOAT_T > &mat, GA_Index min_ptnum, GA_Index max_ptnum, GA_Index min_primnum, GA_Index max_primnum, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void translate (const UT_Vector3T< FLOAT_T > &delta, const GA_PrimitiveGroup *primGrp=0, const GA_PointGroup *pointClosure=0, bool check_pasting=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void transformPoints (const UT_Matrix4T< FLOAT_T > &mat, const GA_Range &points, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void transformPoints (const UT_Matrix4T< FLOAT_T > &mat, const GA_PointGroup *pointGroup=0, const GA_PrimitiveGroup *primClosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T , bool INVERT = false>
void transformPointsByAttribute (const GA_ROHandleT< UT_Matrix4T< FLOAT_T > > &xformhandle, const GA_Range &points, bool keep_vector_lengths=true, bool updateaffectednormals=true, const char *attribpattern=nullptr)
 
template<typename FLOAT_T , bool INVERT = false>
void transformPointsByAttribute (const GA_ROHandleT< UT_Matrix3T< FLOAT_T > > &xformhandle, const GA_Range &points, bool keep_vector_lengths=true, bool updateaffectednormals=true, const char *attribpattern=nullptr)
 
template<typename FLOAT_T , bool INVERT = false>
void transformPointsByAttribute (const GA_ROHandleT< UT_QuaternionT< FLOAT_T > > &xformhandle, const GA_Range &points, bool keep_vector_lengths=true, bool updateaffectednormals=true, const char *attribpattern=nullptr)
 
template<typename FLOAT_T , bool INVERT = false>
void translatePointsByAttribute (const GA_ROHandleT< UT_Vector3T< FLOAT_T > > &xformhandle, const GA_Range &points, bool keep_vector_lengths=true, bool updateaffectednormals=true, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void translatePoints (const UT_Vector3T< FLOAT_T > &delta, const GA_PointGroup *pointGroup=0, bool check_pasting=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void transformEdges (const UT_Matrix4T< FLOAT_T > &mat, const GA_EdgeGroup *edgegrp=0, const GA_PrimitiveGroup *primclosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void translateEdges (const UT_Vector3T< FLOAT_T > &delta, const GA_EdgeGroup *edgegrp=0, bool check_pasting=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void transformBreakpoints (const UT_Matrix4T< FLOAT_T > &mat, const GA_BreakpointGroup *grp=0, bool just_P=false, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void translateBreakpoints (const UT_Vector3T< FLOAT_T > &delta, const GA_BreakpointGroup *grp=0, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void transformGroup (const UT_Matrix4T< FLOAT_T > &mat, const GA_Group &grp, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, const GA_PointGroup *ptclosure=0, const GA_PrimitiveGroup *primclosure=0, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void translateGroup (const UT_Vector3T< FLOAT_T > &delta, const GA_Group &grp, bool check_pasting=true, const GA_PointGroup *ptclosure=0, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
void visualizeSoftPoints (const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup, UT_ColorRamp ramp)
 
void computeSoftPointFalloff (const bool connected, const fpreal radius, const GEO_Rolloff *rolloff, const GA_PointGroup *ptgroup, const SoftSymmetryParms *symmetry, const GA_RWHandleF &falloff, const GA_ROHandleV3 &p_attrib, GA_PointGroup *affected_group=nullptr, GA_RWHandleID *source_points=nullptr) const
 
void computeNormalInternal (GA_Offset ptoff, UT_Vector3 &nml)
 
void computeNormal (const GEO_Primitive &prim, UT_Vector3 &nml) const
 This is the same as prim.computeNormal() More...
 
void computeNormal (const GA_Edge &edge, UT_Vector3 &nml) const
 
void computeNormal (const GA_Breakpoint &bkpt, UT_Vector3 &nml) const
 
void computeNormalAndTangents (const GA_Breakpoint &bkpt, UT_Vector3 &nml, UT_Vector3 *u_tangent, UT_Vector3 *v_tangent, bool normalize) const
 
void normalTranslatePoints (float length=1.0F, int check_pasting=1, const GA_PointGroup *grp=0, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslatePrimitives (float length=1.0F, int check_pasting=1, const GA_PrimitiveGroup *grp=0, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslate (const GA_PointGroup &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslate (const GA_PrimitiveGroup &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslate (const GA_EdgeGroup &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslate (const GA_BreakpointGroup &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslateGroup (const GA_Group &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void updateAffectedNormals (const GA_Range &ptrange, GEO_Delta *geodelta=0, bool allsametransform=false)
 
template<typename FLOAT_T >
void slideTransformEdges (const UT_Matrix4T< FLOAT_T > &mat, const GA_EdgeGroup *edgegrp=0, const GA_PrimitiveGroup *primclosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
template<typename FLOAT_T >
void slideTransformPoints (const UT_Matrix4T< FLOAT_T > &mat, const GA_PointGroup *ptgrp=0, const GA_PrimitiveGroup *primclosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, GEO_PointSliderCache *slider_cache=0)
 
template<typename FLOAT_T >
void slideTransformPrimitives (const UT_Matrix4T< FLOAT_T > &mat, const GA_PrimitiveGroup *primgrp=0, const GA_PointGroup *ptclosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, GEO_PointSliderCache *slider_cache=0)
 
template<typename FLOAT_T >
void slideTransformGroup (const UT_Matrix4T< FLOAT_T > &mat, const GA_Group &grp, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, const GA_PointGroup *ptclosure=0, const GA_PrimitiveGroup *primclosure=0, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, GEO_PointSliderCache *slider_cache=0)
 
void softTransformPoints (const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, float prx, float pry, float prz, const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup=0, const SoftSymmetryParms *symmetry=0, int just_P=0, int keep_vector_lengths=1, int check_pasting=1, int neg_determinant_flipvector=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTransformEdges (const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, float prx, float pry, float prz, const GEO_Rolloff &rolloff, const GA_EdgeGroup *edgegrp=0, const SoftSymmetryParms *symmetry=0, int just_P=0, int keep_vector_lengths=1, int check_pasting=1, int neg_determinant_flipvector=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTransformPoints (const LocalXformContextF *local, const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, float prx, float pry, float prz, const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup=0, const SoftSymmetryParms *symmetry=0, int just_P=0, int keep_vector_lengths=1, int check_pasting=1, int neg_determinant_flipvector=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTransformEdges (const LocalXformContextF *local, const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, float prx, float pry, float prz, const GEO_Rolloff &rolloff, const GA_EdgeGroup *edgegrp=0, const SoftSymmetryParms *symmetry=0, int just_P=0, int keep_vector_lengths=1, int check_pasting=1, int neg_determinant_flipvector=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTranslatePoints (const UT_Vector3 &delta, const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup=0, const SoftSymmetryParms *symmetry=0, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTranslateEdges (const UT_Vector3 &delta, const GEO_Rolloff &rolloff, const GA_EdgeGroup *edgegrp=0, const SoftSymmetryParms *symmetry=0, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softNormalTranslatePoints (float distance, const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup=nullptr, const SoftSymmetryParms *symmetry=nullptr, int along_lead_normal=1, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=nullptr, bool updateaffectednormals=false, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
GA_Attributenormal (bool internal=false, const GA_PrimitiveGroup *primgroup=nullptr)
 
void normal (UT_Vector3Array &output, bool use_internaln=true) const
 Return normals computed from the geometry, ignoring the "N" attribute. More...
 
void normal (UT_Vector3DArray &output, bool use_internaln=true) const
 
void normal (const GA_RWHandleV3 &attrib, const GA_PrimitiveGroup *primgroup=nullptr) const
 
void getVertexNormals (UT_Vector3Array &output) const
 Add and compute vertex normal attributes. Returns the normals. More...
 
bool getCaptureRegionRootPath (UT_String &root_path, CaptureType t=CAPTURE_BONE) const
 
bool setCaptureRegionRootPath (const UT_String &root_path, CaptureType t=CAPTURE_BONE)
 
int getCaptureRegionIndex (const UT_String &cregion_name, CaptureType t=CAPTURE_BONE)
 
int addCaptureRegion (const UT_String &cregion_name, const UT_Matrix4 &parent_xform, const GEO_Detail *tube_gdp)
 
int addCaptureRegion (const UT_String &cregion_name, const UT_Matrix4 &xform, float tcap, float bcap, float taperx, float taperz)
 
int addCaptureRegion (const UT_String &cregion_name, CaptureType type)
 
int removeCaptureRegion (const UT_String &cregion_name, CaptureType t=CAPTURE_BONE)
 
void setCaptureWeight (int cregion_index, float weight, const GA_PointGroup *ptgroup=nullptr, GEO_Delta *geodelta=nullptr, bool add_weight=false, bool clamp_negative=false, bool normalizeweight=false, CaptureType t=CAPTURE_BONE)
 Set the capture weight on a group of points. More...
 
void setCaptureWeight (int cregion_index, float weight, GA_Offset ptoff, GEO_Delta *geodelta=nullptr, bool add_weight=false, bool clamp_negative=false, bool normalizeweight=false, CaptureType t=CAPTURE_BONE)
 Set the capture weight on a point. More...
 
float getCaptureWeight (int cregion_index, GA_Offset ptoff, CaptureType t=CAPTURE_BONE) const
 Get the capture weight of a point. More...
 
bool addAverageCaptureWeight (const GA_PointGroup *ptgroup, const UT_String &root_path, UT_StringMap< float * > &averages) const
 Get the average capture weight of a set of points. More...
 
void getCaptureWeights (GA_Offset ptoff, UT_IntArray &regions, UT_FloatArray &weights, CaptureType t=CAPTURE_BONE) const
 
void clearCaptureWeights (GA_Offset ptoff, CaptureType t=CAPTURE_BONE)
 
void colorPointsByCaptureWeight (const UT_Array< const UT_Vector3 * > &colors, const UT_Vector3 &zero_weight_color, CaptureType t=CAPTURE_BONE, VisualizationType vistype=VISTYPE_MULTIPLE, UT_ColorRamp singlevismode=UT_COLORRAMP_FALSE)
 Color points according to their capture (normalized) weight. More...
 
void colorPointsByCaptureWeight (const UT_Array< const UT_Vector3 * > &colors, const UT_Vector3 &zero_weight_color, CaptureType t, VisualizationType vistype, UT_ColorRamp singlevismode, bool normalize)
 
void normalizeCaptureWeights (const GA_PointGroup *ptgroup=nullptr, CaptureType t=CAPTURE_BONE, fpreal tolerance=SYS_FTOLERANCE_R)
 
void clampCaptureWeights (const GA_PointGroup *ptgroup=nullptr, bool clamp_low_flag=true, float low_threshold=0.0f, float low_val=0.0f, bool clamp_hi_flag=false, float hi_threshold=1.0f, float hi_val=1.0f, CaptureType t=GEO_Detail::CAPTURE_BONE)
 
void normalizeRelativeCaptureWeights (int idx, GA_Offset ptoff, GEO_Delta *delta=nullptr)
 This specifies a capture index that is exempt from normalization. More...
 
GA_Offset insertPointOffset (GA_Index beforeWhich=GA_INVALID_INDEX)
 
SYS_FORCE_INLINE GA_Offset appendPointOffset ()
 
GA_Offset insertPointCopy (GA_Offset src, GA_PointWrangler &wrangler, GA_Index beforeWhich=GA_INVALID_INDEX)
 
GA_Offset insertPointCopy (GA_Offset src, GA_Index beforeWhich=GA_INVALID_INDEX)
 
GA_Offset appendPointCopy (GA_Offset src, GA_PointWrangler &wrangler)
 Append a point, copying data from the source point. More...
 
GA_Offset appendPointCopy (GA_Offset src)
 
SYS_FORCE_INLINE GA_Size deletePoints (const GA_PointGroup &point_group, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES)
 
GEO_PrimitiveinsertPrimitive (const GA_PrimitiveTypeId &type, const GEO_Primitive *beforeWhich=nullptr)
 
SYS_FORCE_INLINE GEO_PrimitiveappendPrimitive (const GA_PrimitiveTypeId &type)
 
GA_Size deletePrimitives (const GA_PrimitiveGroup &primGrp, bool and_points=false)
 
GA_Size deletePrimitives (const UT_Array< GEO_Primitive * > &prims_in, bool and_points=false)
 
virtual void deleteBreakpoints (const GA_BreakpointGroup &bkptgrp)
 
bool getBBox (UT_BoundingBox *bbox, const GA_PrimitiveGroup *g=nullptr) const
 
bool getBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_PrimitiveGroup *g=nullptr) const
 
bool getVisibleBBox (UT_BoundingBox *bbox, const UT_Matrix4R *transform=nullptr, const GA_PrimitiveGroup *g=nullptr) const
 
bool getBSphere (UT_BoundingSphere *bsphere, const GA_PrimitiveGroup *g=nullptr, bool accurate_bounds=false) const
 
bool getPointBBox (UT_BoundingBox *bbox, const GA_PointGroup *g=nullptr) const
 
bool getPointBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_PointGroup *g=nullptr) const
 
bool getPointBSphere (UT_BoundingSphere *bsphere, const GA_PointGroup *g=nullptr, bool accurate_bounds=false) const
 
bool getVertexBBox (UT_BoundingBox *bbox, const GA_VertexGroup *g=nullptr) const
 
bool getVertexBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_VertexGroup *g=nullptr) const
 
bool getEdgeBBox (UT_BoundingBox &bbox, const GA_EdgeGroup &grp) const
 
bool getEdgeBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_EdgeGroup &grp) const
 
bool getEdgeBSphere (UT_BoundingSphere &bsphere, const GA_EdgeGroup &grp, bool accurate_bounds=false) const
 
bool getBreakpointBBox (UT_BoundingBox &bbox, const GA_BreakpointGroup &grp) const
 
bool getBreakpointBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_BreakpointGroup &grp) const
 
bool getBreakpointBSphere (UT_BoundingSphere &bsphere, const GA_BreakpointGroup &grp, bool accurate_bounds=false) const
 
bool getGroupBBox (UT_BoundingBox *bbox, const GA_Group *grp) const
 
bool getGroupBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_Group *grp) const
 
bool getGroupBSphere (UT_BoundingSphere *bsphere, const GA_Group *grp, bool accurate_bounds) const
 
bool getPointAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_PointGroup *g=nullptr) const
 
bool getPointAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_PrimitiveGroup &g) const
 
bool getPointAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_EdgeGroup &g) const
 
bool getPointAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_VertexGroup &g) const
 
template<typename T >
bool getPointAttribCentroid (UT_Vector3T< T > &centroid, const GA_Attribute &attrib, const GA_PointGroup *grp=nullptr) const
 
bool getPointAttribGroupBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_Group *grp) const
 
bool getVertexAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_PointGroup *g=nullptr) const
 
bool getVertexAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_PrimitiveGroup &g) const
 
bool getVertexAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_EdgeGroup &g) const
 
bool getVertexAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_VertexGroup &g) const
 
bool getVertexAttribGroupBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_Group *grp) const
 
void copyVertexAttributes (GEO_Vertex dest, const GEO_Vertex &src) const
 Copy vertex attributes from source to destination. More...
 
void copyVertexAttributes (GA_Offset dest, GA_Offset src, GA_VertexWrangler &wrangler) const
 
void copyPointVertexAttributes (GEO_Vertex dest, const GEO_Vertex &src, bool copy_point_P=true) const
 Copy vertex AND point attributes. More...
 
void copyPointVertexAttributes (GA_Offset dest_vtx, GA_Offset src_vtx, const GA_AttributeRefMap &vertex_attribs, const GA_AttributeRefMap &point_attribs)
 
void copyPointVertexAttributes (GA_Offset dest_vtx, GA_Offset src_vtx, GA_VertexWrangler &vertex_wrangler, GA_PointWrangler &point_wrangler, bool copy_point_P)
 
void copyFullVertex (GEO_Vertex dest, const GEO_Vertex &src) const
 Copy vertex attributes AND change the point reference of the vertex. More...
 
void copyFullVertex (GA_Offset dest_vtx, GA_Offset src_vtx, GA_VertexWrangler &vertex_wrangler)
 Copy vertex attributes AND change the point reference of the vertex. More...
 
void copyPrimitiveAttributes (GEO_Primitive &dest, const GEO_Primitive &src)
 Copy primitive attributes. More...
 
void copyPrimitiveGroups (GEO_Primitive &dest, const GEO_Primitive &src) const
 
void copyVertex (GEO_Vertex dest, const GEO_Vertex &src, int shallow=0) const
 
void copyVertex (GA_Offset dest, GA_Offset src, GA_AttributeRefMap &vertex_attribs, GA_AttributeRefMap *point_attribs)
 
void copyVertex (GA_Offset dest, GA_Offset src, GA_VertexWrangler &vertex_wrangler, GA_PointWrangler *point_wrangler)
 
void copyVertex (GA_Offset dest, GA_Offset src, GA_VertexWrangler &vertex_wrangler, GA_PointWrangler &point_wrangler, bool copy_point_p)
 
void fixSplineWeights ()
 
GA_AttributeaddNormalAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddTextureAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddVelocityAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddAngularVelocityAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddOrientAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddAlphaAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddComAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddDiffuseAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddDistanceAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddLODAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddRestAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID, const UT_StringHolder &name=UT_StringHolder::theEmptyString)
 
GA_AttributeaddTubeCaptureAttribute (GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddCaptureFrameAttribute (CaptureType t=CAPTURE_BONE, GA_Storage s=GA_STORE_INVALID)
 Add the detail's capture frame attribute for capture type t. More...
 
GA_AttributeaddCaptureSkelRootAttribute (CaptureType t=CAPTURE_BONE)
 Add the bone capture skeleton root detail attribute. More...
 
GA_AttributeaddPtIndexPairAttribute (const UT_StringHolder &name, geo_NPairs n_pairs, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddIndexPairAttribute (GA_AttributeOwner owner, const UT_StringHolder &name, int n_pairs, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddPointCaptureAttribute (geo_NPairs n_pairs, CaptureType t=CAPTURE_BONE, GA_Storage s=GA_STORE_INVALID)
 Add the (index, weight) point attribute for capture type t. More...
 
GA_AttributeaddPointCaptureAlphaAttribute (float dflt, GA_Storage s=GA_STORE_INVALID)
 Add the bone capture alpha point attribute. More...
 
const GA_AttributefindNormalAttribute (GA_AttributeOwner who) const
 
GA_AttributefindNormalAttribute (GA_AttributeOwner who)
 
const GA_AttributefindTextureAttribute (GA_AttributeOwner who) const
 
GA_AttributefindTextureAttribute (GA_AttributeOwner who)
 
const GA_AttributefindVelocityAttribute (GA_AttributeOwner who) const
 
GA_AttributefindVelocityAttribute (GA_AttributeOwner who)
 
const GA_AttributefindAlphaAttribute (GA_AttributeOwner who) const
 
GA_AttributefindAlphaAttribute (GA_AttributeOwner who)
 
const GA_AttributefindComAttribute (GA_AttributeOwner who) const
 
GA_AttributefindComAttribute (GA_AttributeOwner who)
 
const GA_AttributefindDiffuseAttribute (GA_AttributeOwner who) const
 
GA_AttributefindDiffuseAttribute (GA_AttributeOwner who)
 
const GA_AttributefindDistanceAttribute (GA_AttributeOwner who) const
 
GA_AttributefindDistanceAttribute (GA_AttributeOwner who)
 
const GA_AttributefindLODAttribute (GA_AttributeOwner who) const
 
GA_AttributefindLODAttribute (GA_AttributeOwner who)
 
const GA_AttributefindRestAttribute (GA_AttributeOwner who) const
 
GA_AttributefindRestAttribute (GA_AttributeOwner who)
 
const GA_AttributefindTubeCaptureAttribute () const
 
GA_AttributefindTubeCaptureAttribute ()
 
GA_ROHandleS findMaterialAttribute (GA_AttributeOwner who) const
 
const GA_AttributefindInternalNormalAttribute () const
 
GA_AttributefindInternalNormalAttribute ()
 
const GA_AttributefindCaptureFrameAttribute (CaptureType t=CAPTURE_BONE) const
 
GA_AttributefindCaptureFrameAttribute (CaptureType t=CAPTURE_BONE)
 
const GA_AttributefindCaptureSkelRootAttribute (CaptureType t=CAPTURE_BONE) const
 Find the offset for the bone capture skeleton root detail attribute. More...
 
GA_AttributefindCaptureSkelRootAttribute (CaptureType t=CAPTURE_BONE)
 
const GA_AttributefindPointCaptureAttribute (CaptureType t=CAPTURE_BONE) const
 
GA_AttributefindPointCaptureAttribute (CaptureType t=CAPTURE_BONE)
 
const GA_AttributefindPointCaptureAlphaAttribute () const
 Find the offset for the bone capture alpha point attribute. More...
 
GA_AttributefindPointCaptureAlphaAttribute ()
 
const GA_AttributefindPtIndexPairAttribute (const UT_StringRef &name) const
 Find the offset for a custom (index, weight) point attribute. More...
 
GA_AttributefindPtIndexPairAttribute (const UT_StringRef &name)
 
void destroyNormalAttribute (GA_AttributeOwner who)
 
void destroyInternalNormalAttribute ()
 
void destroyTextureAttribute (GA_AttributeOwner who)
 
void destroyVelocityAttribute (GA_AttributeOwner who)
 
void destroyAlphaAttribute (GA_AttributeOwner who)
 
void destroyComAttribute (GA_AttributeOwner who)
 
void destroyDiffuseAttribute (GA_AttributeOwner who)
 
void destroyDistanceAttribute (GA_AttributeOwner who)
 
void destroyLODAttribute (GA_AttributeOwner who)
 
void destroyRestAttribute (GA_AttributeOwner who)
 
void destroyTubeCaptureAttribute ()
 
void destroyCaptureFrameAttribute (CaptureType t=CAPTURE_BONE)
 Destroy the detail's capture frame attribute for capture type t. More...
 
void destroyCaptureSkelRootAttribute (CaptureType t=CAPTURE_BONE)
 Destroy the bone capture skeleton root detail attribute. More...
 
void destroyPointCaptureAttribute (CaptureType t=CAPTURE_BONE)
 
void destroyPointCaptureAlphaAttribute ()
 Destroy the bone capture alpha point attribute. More...
 
void destroyPtIndexPairAttribute (const UT_StringRef &name)
 Destroy a custom (index, weight) point attribute. More...
 
bool getMetaRestAnchorPath (UT_String &anchorPath) const
 
UT_StringHolder getStdAttributeName (GEO_Standard_Attributes name, int layer=-1) const
 
int getAttributeLayer (const char *attr_name) const
 
int getCurrentLayer () const
 These handle layers: More...
 
void setCurrentLayer (int layer)
 
void setNumLayers (int numlayer)
 
int getNumLayers () const
 
void setLayerMerge (int preclear, int mask, int srcblend, int dstblend)
 These get and set the CURRENT layer's merge mode: More...
 
void getLayerMerge (int &preclear, int &mask, int &srcblend, int &dstblend) const
 
void addVariableName (const char *attr, const char *varname)
 
void removeVariableName (const char *varname)
 
void getVariableNameMap (UT_String &result) const
 
void traverseVariableNames (int(*function)(const char *attr, const char *varname, void *data), void *data) const
 Traverses the variable name mappings currently present: More...
 
GA_AttributegrowPointCaptureAttribute (geo_NPairs num_added_pairs, CaptureType t=CAPTURE_BONE)
 increase the memory size of the attribute More...
 
SYS_FORCE_INLINE GA_AttributeaddPointAttrib (const GA_Attribute *src)
 
SYS_FORCE_INLINE GA_AttributeaddPointAttrib (GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_AttributeaddPointAttrib (const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE const
GA_Attribute
findPointAttrib (const GA_Attribute &src) const
 
SYS_FORCE_INLINE GA_AttributefindPointAttrib (const GA_Attribute &src)
 
SYS_FORCE_INLINE const
GA_Attribute
findPointVectorAttrib (GA_AttributeScope s, const UT_StringRef &n) const
 Looks for a 3-float point attribute. More...
 
SYS_FORCE_INLINE const
GA_Attribute
findPointVectorAttrib (const UT_StringRef &n) const
 
SYS_FORCE_INLINE GA_AttributefindPointVectorAttrib (GA_AttributeScope s, const UT_StringRef &n)
 
SYS_FORCE_INLINE GA_AttributefindPointVectorAttrib (const UT_StringRef &n)
 
SYS_FORCE_INLINE void destroyPointAttrib (GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE void destroyPointAttrib (const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
bool promotePointAttrib (GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool promotePointAttrib (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributeaddVertexAttrib (const GA_Attribute *src)
 
SYS_FORCE_INLINE GA_AttributeaddVertexAttrib (GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_AttributeaddVertexAttrib (const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexAttrib (const GA_Attribute &src) const
 
SYS_FORCE_INLINE GA_AttributefindVertexAttrib (const GA_Attribute &src)
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexVectorAttrib (GA_AttributeScope s, const UT_StringRef &n) const
 Looks for a 3-float vertex attribute. More...
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexVectorAttrib (const UT_StringRef &n) const
 
SYS_FORCE_INLINE GA_AttributefindVertexVectorAttrib (GA_AttributeScope s, const UT_StringRef &n)
 
SYS_FORCE_INLINE GA_AttributefindVertexVectorAttrib (const UT_StringRef &n)
 
SYS_FORCE_INLINE void destroyVertexAttrib (GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE void destroyVertexAttrib (const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
bool demoteVertexAttrib (GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool demoteVertexAttrib (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributeaddPrimAttrib (const GA_Attribute *src)
 
SYS_FORCE_INLINE GA_AttributeaddPrimAttrib (GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_AttributeaddPrimAttrib (const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE const
GA_Attribute
findPrimAttrib (const GA_Attribute &src) const
 
SYS_FORCE_INLINE GA_AttributefindPrimAttrib (const GA_Attribute &src)
 
SYS_FORCE_INLINE void destroyPrimAttrib (GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE void destroyPrimAttrib (const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE GA_AttributeaddGlobalAttrib (const GA_Attribute *src)
 
SYS_FORCE_INLINE GA_AttributeaddGlobalAttrib (GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_AttributeaddGlobalAttrib (const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE const
GA_Attribute
findGlobalAttrib (const GA_Attribute &src) const
 
SYS_FORCE_INLINE GA_AttributefindGlobalAttrib (const GA_Attribute &src)
 
SYS_FORCE_INLINE void destroyGlobalAttrib (GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE void destroyGlobalAttrib (const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
GEO_PrimList primitives ()
 Query the internal structures: More...
 
const GEO_PrimList primitives () const
 
SYS_FORCE_INLINE const
GA_AttributeDict
pointAttribs () const
 
SYS_FORCE_INLINE const
GA_AttributeDict
primitiveAttribs () const
 
SYS_FORCE_INLINE const
GA_AttributeDict
vertexAttribs () const
 
SYS_FORCE_INLINE const
GA_AttributeDict
attribs () const
 
bool hasMetaPrimitives () const
 
bool hasPastedPrimitives () const
 
bool hasQuadricPrimitives () const
 
bool hasParticlePrimitives () const
 
bool hasVolumePrimitives () const
 
bool hasChannelPrimitives () const
 
bool hasTransformingPrimitives () const
 
bool hasCustomPrimitives () const
 
GA_Size getMetaCount () const
 
GA_Size getPastedCount () const
 
GA_Size getQuadricCount () const
 
GA_Size getParticleCount () const
 
GA_Size getVolumeCount () const
 
bool getStandardAttributes (const char *s, GEO_Standard_Attributes &a)
 
bool mergeCaptureProperties (GA_Attribute *my_atr, const GA_Attribute *src_atr, UT_IntArray &new_indices)
 
GEO_AttributeHandle getPointAttribute (const char *attrib_name) const
 
GEO_AttributeHandle getPointAttribute (const char *attrib_name)
 
GEO_AttributeHandle getPrimAttribute (const char *attrib_name) const
 
GEO_AttributeHandle getPrimAttribute (const char *attrib_name)
 
GEO_AttributeHandle getVertexAttribute (const char *attrib_name) const
 
GEO_AttributeHandle getVertexAttribute (const char *attrib_name)
 
GEO_AttributeHandle getDetailAttribute (const char *attrib_name) const
 
GEO_AttributeHandle getDetailAttribute (const char *attrib_name)
 
GEO_AttributeHandle getAttribute (GA_AttributeOwner dict, const char *attrib_name) const
 
GEO_AttributeHandle getAttribute (GA_AttributeOwner dict, const char *attrib_name)
 
bool changeAttributeStorage (GA_AttributeOwner dict, const UT_StringRef &name, GA_Storage new_storage)
 
bool changePointAttributeStorage (const UT_StringRef &nm, GA_Storage s)
 
bool changeVertexAttributeStorage (const UT_StringRef &nm, GA_Storage s)
 
bool changePrimAttributeStorage (const UT_StringRef &nm, GA_Storage s)
 
bool changeDetailAttributeStorage (const UT_StringRef &nm, GA_Storage s)
 
GA_Size getPointAdjacentPolygons (GEO_PointAdjArray &adjacencies, GA_Offset poly_off) const
 
GA_Size getPointAdjacentPolygons (GA_OffsetArray &polygons, GA_Offset poly_off) const
 
GA_Size getEdgeAdjacentPolygons (GEO_EdgeAdjArray &adjacencies, GA_Offset poly_off) const
 
GA_Size getEdgeAdjacentPolygons (GA_OffsetArray &polygons, GA_Offset poly_off) const
 
const GEO_PrimitivefindPrimitiveByName (const char *nametomatch, const GA_PrimCompat::TypeMask &mask=GEO_PrimTypeCompat::GEOPRIMALL, const char *nameattrib="name", int matchnumber=0) const
 
GEO_PrimitivefindPrimitiveByName (const char *nametomatch, const GA_PrimCompat::TypeMask &mask=GEO_PrimTypeCompat::GEOPRIMALL, const char *nameattrib="name", int matchnumber=0)
 
void findAllPrimitivesByName (UT_Array< const GEO_Primitive * > &primlist, const char *nametomatch, const GA_PrimCompat::TypeMask &mask=GEO_PrimTypeCompat::GEOPRIMALL, const char *nameattrib="name") const
 Like findPrimitiveByName, but adds all matching primitives to the list. More...
 
void findAllPrimitivesByName (UT_Array< GEO_Primitive * > &primlist, const char *nametomatch, const GA_PrimCompat::TypeMask &mask=GEO_PrimTypeCompat::GEOPRIMALL, const char *nameattrib="name")
 
void mergeDetailAttributes (const GEO_Detail &src, int num_pts_prev)
 
void destroyPointGroup (GA_PointGroup *g)
 
void destroyPrimitiveGroup (GA_PrimitiveGroup *g)
 
void destroyVertexGroup (GA_VertexGroup *g)
 
bool destroyPointGroup (const char *name)
 
bool destroyPrimitiveGroup (const char *name)
 
bool destroyVertexGroup (const char *name)
 
void mergeGroups (const GEO_Detail &src, bool override, unsigned mask=GA_GMASK_FULL_MASK)
 
GA_PointGroupmergeGroup (const GEO_Detail &src, const GA_PointGroup &group, bool override=true)
 
GA_PrimitiveGroupmergeGroup (const GEO_Detail &src, const GA_PrimitiveGroup &group, bool override=true)
 
GA_VertexGroupmergeGroup (const GEO_Detail &src, const GA_VertexGroup &group, GA_OffsetArray &map_cache, bool override=true)
 
GA_EdgeGroupmergeGroup (const GEO_Detail &src, const GA_EdgeGroup &group, bool override=true)
 
GA_AttributeaddAttribute (const UT_StringHolder &name, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype, GA_AttributeOwner who, GA_AttributeScope scope=GA_SCOPE_PUBLIC)
 Some common methods for the standard guys. More...
 
GA_AttributegrowTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int added_size)
 
SYS_FORCE_INLINE GA_AttributegrowTuple (GA_AttributeOwner owner, const UT_StringRef &name, int added_size)
 
void destroyAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, const GA_AttributeFilter *filter=0)
 
SYS_FORCE_INLINE void destroyAttribute (GA_AttributeOwner owner, const UT_StringRef &name, const GA_AttributeFilter *filter=0)
 
SYS_FORCE_INLINE GEO_PrimitivegetGEOPrimitive (GA_Offset primoff)
 
SYS_FORCE_INLINE const
GEO_Primitive
getGEOPrimitive (GA_Offset off) const
 
GEO_PrimitivegetGEOPrimitiveByIndex (GA_Index idx)
 
const GEO_PrimitivegetGEOPrimitiveByIndex (GA_Index idx) const
 
GA_Size deletePoints (const GA_Range &range, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES)
 
GA_Size deletePrimitives (const GA_Range &range, bool and_points=false)
 
bool deletePrimitive (GA_Primitive &prim, bool and_points=false)
 
bool setDetailAttributeS (const UT_StringHolder &aname, const char *value)
 
bool setDetailAttributeS (const UT_StringHolder &aname, const UT_StringArray &s)
 
bool setDetailAttributeR (const UT_StringHolder &aname, const UT_Ramp &ramp)
 
bool setDetailAttributeF (const UT_StringHolder &aname, float v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, float v1, float v2)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Vector2 &v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Vector3 &v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Vector4 &v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Matrix3 &v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Matrix4 &v)
 
bool setDetailAttributeI (const UT_StringHolder &aname, int v)
 
GA_Size getPointGroupAdjacentToPrimitiveGroup (const GA_PrimitiveGroup *in_prim_grp, GA_PointGroup *adj_pt_grp)
 
GA_Size getPointGroupAdjacentToPrimitiveRange (const GA_Range &in_prim_rng, GA_PointGroup *adj_pt_rng)
 
GA_Size getVertexGroupAdjacentToPrimitiveGroup (const GA_PrimitiveGroup *in_prim_grp, GA_VertexGroup *adj_vtx_grp)
 
GA_Size getVertexGroupAdjacentToPrimitiveRange (const GA_Range &in_prim_rng, GA_VertexGroup *adj_vtx_rng)
 
const GA_AttributefindFloatTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findFloatTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindFloatTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindFloatTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindIntTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findIntTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindIntTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindIntTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindNumericTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 findNumericTuple will find either float or int. More...
 
SYS_FORCE_INLINE const
GA_Attribute
findNumericTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindNumericTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 findNumericTuple will find either float or int. More...
 
SYS_FORCE_INLINE GA_AttributefindNumericTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindStringTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findStringTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindStringTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindStringTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindDictTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findDictTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindDictTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindDictTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindIndexPair (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findIndexPair (GA_AttributeOwner owner, const UT_StringRef &name) const
 
GA_AttributefindIndexPair (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindIndexPair (GA_AttributeOwner owner, const UT_StringRef &name)
 
const GA_AttributefindFloatArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findFloatArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindFloatArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindFloatArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindIntArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findIntArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindIntArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindIntArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindNumericArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findNumericArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindNumericArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindNumericArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindStringArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findStringArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindStringArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindStringArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindDictArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findDictArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindDictArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindDictArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
GA_AttributeaddTuple (GA_Storage storage, GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddTuple (GA_Storage storage, GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddFloatTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_REAL32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddFloatTuple (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_REAL32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddIntTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_INT32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddIntTuple (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_INT32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddStringTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddStringTuple (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddDictTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddDictTuple (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddFloatArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_REAL32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddFloatArray (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_REAL32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddIntArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_INT32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddIntArray (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_INT32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddStringArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_STRING, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddStringArray (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_STRING, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddDictArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_STRING, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddDictArray (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_STRING, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
- Public Member Functions inherited from GA_Detail
 GA_Detail (GA_PrimitiveFactory &factory, GA_Storage Pstorage=GA_STORE_REAL32, bool isprimary=true, bool full_topology=true)
 
virtual ~GA_Detail ()
 Destructor. More...
 
exint getUniqueId () const
 
void clear ()
 
bool isEmpty () const
 
GA_AttributegetP ()
 Convenience method to access the P attribute. More...
 
const GA_AttributegetP () const
 
SYS_FORCE_INLINE bool isPDouble () const
 
UT_Vector2 getPos2 (GA_Offset ptoff) const
 The ptoff passed is the point offset. More...
 
UT_Vector2D getPos2D (GA_Offset ptoff) const
 
SYS_FORCE_INLINE UT_Vector3 getPos3 (GA_Offset ptoff) const
 The ptoff passed is the point offset. More...
 
SYS_FORCE_INLINE UT_Vector3D getPos3D (GA_Offset ptoff) const
 
template<typename T >
UT_Vector3T< TgetPos3T (GA_Offset ptoff) const
 
template<typename T >
bool getPos3AsArray (const GA_Range &ptrange, UT_Array< UT_Vector3T< T > > &positions) const
 
template<typename T >
bool setPos3FromArray (const GA_Range &ptrange, const UT_Array< UT_Vector3T< T > > &positions)
 
void setPos2 (GA_Offset ptoff, const UT_Vector2 &pos)
 Set P from a UT_Vector2. More...
 
void setPos2 (GA_Offset ptoff, const UT_Vector2D &pos)
 
SYS_FORCE_INLINE void setPos3 (GA_Offset ptoff, const UT_Vector3 &pos)
 Set P from a UT_Vector3. More...
 
SYS_FORCE_INLINE void setPos3 (GA_Offset ptoff, const UT_Vector3D &pos)
 
SYS_FORCE_INLINE void setPos3 (GA_Offset ptoff, fpreal x, fpreal y, fpreal z)
 Set P given the x, y, z components. More...
 
SYS_FORCE_INLINE void translatePoint (GA_Offset ptoff, const UT_Vector3 &delta)
 
SYS_FORCE_INLINE void translatePoint (GA_Offset ptoff, const UT_Vector3D &delta)
 
fpreal getPw (GA_Offset ptoff) const
 Get the homogeneous coordinate for a point. More...
 
void setPw (GA_Offset ptoff, fpreal w)
 Set the homogeneous coordinate for a point. More...
 
UT_Vector4 getPos4 (GA_Offset ptoff) const
 The ptoff passed is the point offset. More...
 
UT_Vector4D getPos4D (GA_Offset ptoff) const
 
void setPos4 (GA_Offset ptoff, const UT_Vector4 &pos)
 Set P from a UT_Vector4. More...
 
void setPos4 (GA_Offset ptoff, const UT_Vector4D &pos)
 
void setPos4 (GA_Offset ptoff, fpreal x, fpreal y, fpreal z, fpreal w)
 Set P given the x, y, z, w components. More...
 
SYS_FORCE_INLINE GA_Offset appendPoint ()
 Append a new point, returning its new data offset. More...
 
SYS_FORCE_INLINE GA_Offset appendPointBlock (GA_Size npoints)
 Append new points, returning the first offset of the contiguous block. More...
 
SYS_FORCE_INLINE GA_Size getNumPoints () const
 Return the number of points. More...
 
SYS_FORCE_INLINE GA_Offset getNumPointOffsets () const
 
SYS_FORCE_INLINE GA_Offset pointOffset (GA_Index index) const
 Given a point's index (in append order), return its data offset. More...
 
SYS_FORCE_INLINE GA_Index pointIndex (GA_Offset offset) const
 Given a point's data offset, return its index. More...
 
GA_Index reorderPoint (GA_Offset ptoff, GA_Index new_order)
 
GA_PrimitiveappendPrimitive (const GA_PrimitiveTypeId &type)
 Append a primitive by GA_PrimitiveTypeId. More...
 
GA_PrimitiveappendPrimitive (const UT_StringRef &type)
 Append a primitive by type name string. More...
 
GA_Offset appendPrimitiveBlock (const GA_PrimitiveTypeId &type, GA_Size nprimitives)
 Append a contiguous block of primitives by GA_PrimitiveTypeId. More...
 
GA_Offset appendPrimitivesAndVertices (const GA_PrimitiveTypeId &type, GA_Size nprimitives, GA_Size nvertices_each, GA_Offset &vertex_block_start, bool closed_flag=false)
 
GA_Offset appendPrimitivesAndVertices (const GA_PrimitiveTypeId &type, const GA_PolyCounts &vertex_counts, GA_Offset &vertex_block_start, bool closed_flag=false)
 
GA_Offset appendPrimitivesAndVertices (const std::pair< int, exint > *primtype_count_pairs, const GA_PolyCounts &vertex_counts, GA_Offset &vertex_block_start, const exint *closed_span_length=nullptr, exint ncopies=1)
 
SYS_FORCE_INLINE GA_Size getNumPrimitives () const
 Return the number of primitives. More...
 
SYS_FORCE_INLINE GA_Offset getNumPrimitiveOffsets () const
 
SYS_FORCE_INLINE GA_Offset primitiveOffset (GA_Index index) const
 Given a primitive's index (in append order), return its data offset. More...
 
SYS_FORCE_INLINE GA_Index primitiveIndex (GA_Offset offset) const
 Given a primitive's data offset, return its index. More...
 
SYS_FORCE_INLINE GA_OffsetListRef getPrimitiveVertexList (GA_Offset primoff) const
 
SYS_FORCE_INLINE GA_Size getPrimitiveVertexCount (GA_Offset primoff) const
 
SYS_FORCE_INLINE GA_Offset getPrimitiveVertexOffset (GA_Offset primoff, GA_Size i) const
 
SYS_FORCE_INLINE int getPrimitiveTypeId (GA_Offset primoff) const
 
SYS_FORCE_INLINE bool getPrimitiveClosedFlag (GA_Offset primoff) const
 
SYS_FORCE_INLINE void setPrimitiveClosedFlag (GA_Offset primoff, bool closed)
 
GA_Index reorderPrimitive (GA_Offset offset, GA_Index new_order)
 
bool swapPrimitiveOrder (GA_Offset offset1, GA_Offset offset2)
 Swap the order of the two specified primitive data offsets. More...
 
SYS_FORCE_INLINE GA_Offset appendVertex ()
 Append a vertex (for the entire detail) More...
 
SYS_FORCE_INLINE GA_Offset appendVertexBlock (GA_Size nvertices)
 Append new vertices, returning the first offset of the contiguous block. More...
 
SYS_FORCE_INLINE GA_Size getNumVertices () const
 Return the number verticies in the entire detail. More...
 
SYS_FORCE_INLINE GA_Offset getNumVertexOffsets () const
 
SYS_FORCE_INLINE GA_Offset vertexOffset (GA_Index index) const
 Given a vertex's index (in append order), return its data offset. More...
 
SYS_FORCE_INLINE GA_Index vertexIndex (GA_Offset offset) const
 Given a vertex's data offset, return its index. More...
 
SYS_FORCE_INLINE GA_Offset vertexPoint (GA_Offset vertex) const
 Given a vertex, return the point it references. More...
 
void setVertexPoint (GA_Offset vertex, GA_Offset ptoff)
 Given a vertex, set the corresponding point offset. More...
 
SYS_FORCE_INLINE GA_Offset vertexPrimitive (GA_Offset vertex) const
 
SYS_FORCE_INLINE GA_Offset pointVertex (GA_Offset point) const
 
SYS_FORCE_INLINE GA_Offset vertexToNextVertex (GA_Offset vtx) const
 
SYS_FORCE_INLINE GA_Offset vertexToPrevVertex (GA_Offset vtx) const
 
GA_Offset getVertexReferencingPoint (GA_Offset ptoff, GA_Offset primoff=GA_INVALID_OFFSET) const
 
GA_Size getVerticesReferencingPoint (GA_OffsetArray &vertices, GA_Offset point_offset) const
 
GA_Size getPrimitivesReferencingPoint (GA_OffsetArray &primitives, GA_Offset point_offset) const
 
bool hasNoSharedPoints () const
 
bool destroyVertexOffset (GA_Offset offset)
 
virtual bool destroyPrimitiveOffset (GA_Offset offset, bool and_points=false)
 
bool destroyPrimitiveIndex (GA_Index index, bool and_points=false)
 
bool destroyPrimitive (GA_Primitive &prim, bool and_points=false)
 
virtual GA_Size destroyPrimitiveOffsets (const GA_Range &it, bool and_points=false)
 
GA_Size destroyPrimitives (const GA_Range &it, bool and_points=false)
 
GA_Size destroyDegeneratePrimitives (const GA_Range &it, bool and_points=false)
 
GA_Size destroyDegeneratePrimitives (const GA_PrimitiveGroup *prims=0, bool and_points=false)
 
GA_Size destroyUnusedPoints (const GA_PointGroup *ptgrp=0)
 Destroy unused points. If ptgrp is given, then only within the group. More...
 
GA_Size destroyVertexOffsets (const GA_Range &range)
 
GA_Size destroyVertices (const GA_Range &range)
 
bool isPointUsed (GA_Offset point) const
 
bool isPointUsedFast (GA_Offset point) const
 
bool findUnusedPoints (GA_OffsetList *unused=nullptr) const
 
GA_Size countUnusedPoints () const
 
const GA_IndexMapgetIndexMap (GA_AttributeOwner owner) const
 
GA_IndexMapgetIndexMap (GA_AttributeOwner owner)
 
const GA_IndexMapgetPointMap () const
 
const GA_IndexMapgetVertexMap () const
 
const GA_IndexMapgetPrimitiveMap () const
 
const GA_IndexMapgetGlobalMap () const
 
const GA_PrimitiveListgetPrimitiveList () const
 
GA_PrimitiveListgetPrimitiveList ()
 
GA_AttributeSetgetAttributes ()
 
const GA_AttributeSetgetAttributes () const
 
GA_TopologygetTopology ()
 
const GA_TopologygetTopology () const
 
bool checkValidTopology () const
 
void createTopologyAttributes ()
 
void clearTopologyAttributes ()
 
void bumpAllDataIds ()
 
void bumpDataIdsForRewire ()
 
void bumpDataIdsForAddOrRemove (bool added_or_removed_points, bool added_or_removed_vertices, bool added_or_removed_primitives)
 
bool defragment (GA_AttributeOwner owner, const UT_Options *options=nullptr)
 
bool defragment (const UT_Options *options=nullptr)
 
void sortVertexMapByPrimitiveUse ()
 
SYS_FORCE_INLINE bool destroyAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool destroyAttribute (GA_AttributeOwner owner, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool renameAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &from_name, const UT_StringHolder &to_name)
 
GA_AttributecreateTupleAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, GA_Storage storage, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0f), const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr)
 
GA_AttributecreateTupleAttribute (GA_AttributeOwner owner, const UT_StringHolder &name, GA_Storage storage, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0f), const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr)
 
GA_AttributecreateStringAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr)
 
GA_AttributecreateStringAttribute (GA_AttributeOwner owner, const UT_StringHolder &name, const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr)
 
SYS_FORCE_INLINE const
GA_Attribute
findAttribute (GA_AttributeScope scope, const UT_StringRef &name, const GA_AttributeOwner search_order[], int search_size) const
 
SYS_FORCE_INLINE const
GA_Attribute
findAttribute (const UT_StringRef &name, const GA_AttributeOwner search_order[], int search_size) const
 
SYS_FORCE_INLINE const
GA_Attribute
findAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findAttribute (GA_AttributeOwner owner, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findPointAttribute (GA_AttributeScope s, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findPointAttribute (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexAttribute (GA_AttributeScope s, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexAttribute (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findPrimitiveAttribute (GA_AttributeScope s, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findPrimitiveAttribute (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findGlobalAttribute (GA_AttributeScope s, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findGlobalAttribute (const UT_StringRef &name) const
 
SYS_FORCE_INLINE GA_AttributefindAttribute (GA_AttributeScope scope, const UT_StringRef &name, const GA_AttributeOwner search_order[], int search_size)
 
SYS_FORCE_INLINE GA_AttributefindAttribute (const UT_StringRef &name, const GA_AttributeOwner search_order[], int search_size)
 
SYS_FORCE_INLINE GA_AttributefindAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindAttribute (GA_AttributeOwner owner, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindPointAttribute (GA_AttributeScope s, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindPointAttribute (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindVertexAttribute (GA_AttributeScope s, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindVertexAttribute (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindPrimitiveAttribute (GA_AttributeScope s, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindPrimitiveAttribute (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindGlobalAttribute (GA_AttributeScope s, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindGlobalAttribute (const UT_StringRef &name)
 
GA_ElementGroupcreateElementGroup (GA_AttributeOwner owner, const UT_StringHolder &name, bool ordered=false)
 
GA_ElementGroupcreateInternalElementGroup (GA_AttributeOwner owner, bool ordered=false)
 
GA_ElementGroupfindElementGroup (GA_AttributeOwner owner, const UT_StringRef &name)
 
const GA_ElementGroupfindElementGroup (GA_AttributeOwner owner, const UT_StringRef &name) const
 
const GA_ElementGroupTablegetElementGroupTable (GA_AttributeOwner owner) const
 
SYS_FORCE_INLINE
GA_ElementGroupTable
getElementGroupTable (GA_AttributeOwner owner)
 
GA_GroupTablegetGroupTable (GA_GroupType group_type)
 
const GA_GroupTablegetGroupTable (GA_GroupType group_type) const
 
template<GA_AttributeOwner OWNER>
SYS_FORCE_INLINE
GA_ElementGroupTableT< OWNER >
::GROUP_TYPE * 
createElementGroup (const UT_StringHolder &name, bool ordered=false)
 
template<GA_AttributeOwner OWNER>
SYS_FORCE_INLINE
GA_ElementGroupTableT< OWNER >
::GROUP_TYPE * 
createInternalElementGroup (bool ordered=false)
 
template<GA_AttributeOwner OWNER>
SYS_FORCE_INLINE
GA_ElementGroupTableT< OWNER >
::GROUP_TYPE * 
findElementGroup (const UT_StringRef &name)
 
template<GA_AttributeOwner OWNER>
SYS_FORCE_INLINE const
GA_ElementGroupTableT< OWNER >
::GROUP_TYPE * 
findElementGroup (const UT_StringRef &name) const
 
void getElementGroupList (GA_AttributeOwner owner, UT_Array< const GA_ElementGroup * > &list) const
 
void getElementGroupList (GA_AttributeOwner owner, UT_Array< GA_ElementGroup * > &list)
 
SYS_FORCE_INLINE bool destroyElementGroup (GA_AttributeOwner owner, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool destroyElementGroup (GA_AttributeOwner owner, const char *name)
 
bool destroyElementGroup (GA_ElementGroup *group)
 
bool destroyGroup (GA_Group *group)
 
SYS_FORCE_INLINE const
GA_PointGroup
findPointGroup (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_VertexGroup
findVertexGroup (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_PrimitiveGroup
findPrimitiveGroup (const UT_StringRef &name) const
 
SYS_FORCE_INLINE GA_PointGroupfindPointGroup (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_VertexGroupfindVertexGroup (const UT_StringRef &name)
 
SYS_FORCE_INLINE
GA_PrimitiveGroup
findPrimitiveGroup (const UT_StringRef &name)
 
GA_EdgeGroupcreateEdgeGroup (const UT_StringHolder &name)
 
GA_EdgeGroupcreateInternalEdgeGroup ()
 
const GA_EdgeGroupfindEdgeGroup (const UT_StringRef &name) const
 
GA_EdgeGroupfindEdgeGroup (const UT_StringRef &name)
 
void getEdgeGroupList (UT_Array< const GA_EdgeGroup * > &list) const
 
void getEdgeGroupList (UT_Array< GA_EdgeGroup * > &list)
 
SYS_FORCE_INLINE bool destroyEdgeGroup (const UT_StringRef &name)
 
SYS_FORCE_INLINE bool destroyEdgeGroup (GA_EdgeGroup *g)
 
GA_Size destroyEmptyGroups (GA_AttributeOwner owner)
 
GA_Size destroyAllEmptyGroups ()
 
const GA_IntrinsicManagergetIntrinsicManager () const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPoint (FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPoint (const GA_PointGroup *group, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPoint (const GA_PointGroup *group, bool complement, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitive (FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitive (const GA_PrimitiveGroup *group, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitive (const GA_PrimitiveGroup *group, bool complement, FUNCTOR &&functor) const
 
GA_Range getPointRange (const GA_PointGroup *group=0) const
 Get a range of all points in the detail. More...
 
GA_Range getPrimitiveRange (const GA_PrimitiveGroup *group=0) const
 Get a range of all primitives in the detail. More...
 
GA_Range getPointRangeSlice (GA_Index begin_ptnum, GA_Index end_ptnum=GA_INVALID_INDEX) const
 Get ordered point range from base_ptnum to end_ptnum, or the end. More...
 
GA_Range getPrimitiveRangeSlice (GA_Index begin_prim, GA_Index end_prim=GA_INVALID_INDEX) const
 Get ordered primitive range from base_prim to end_prim, or the end. More...
 
GA_Range getVertexRange (const GA_VertexGroup *group=0) const
 Get a range of all vertices in the detail. More...
 
GA_Range getGlobalRange () const
 Get a range representing the global (detail) data. More...
 
bool enlargeBoundingBox (UT_BoundingRect &box, const GA_Range &range) const
 
bool enlargeBoundingBox (UT_BoundingRect &box, const GA_Range &range, const GA_Attribute *P) const
 
bool enlargeBoundingBox (UT_BoundingBox &box, const GA_Range &range) const
 
bool enlargeBoundingBox (UT_BoundingBox &box, const GA_Range &range, const GA_Attribute *P) const
 
void computeQuickBounds (UT_BoundingBox &box) const
 
void computeQuickBounds (UT_BoundingBox &box, GA_Size counts[], GA_Size count_buf_size) const
 
void cloneCopyGroupsAndAttributes (const GA_Detail &src, bool copydetailattribs=false)
 
SYS_FORCE_INLINE void copyPoint (GA_Offset destptoff, GA_Offset srcptoff, const GA_AttributeFilter *filter=nullptr)
 
void copyVertex (GA_Offset destvtxoff, GA_Offset srcvtxoff, bool ref_point_dont_copy, const GA_AttributeFilter *filter=nullptr)
 
void baseMerge (const GA_Detail &src)
 Merge the source detail into this detail (using default options) More...
 
void baseMerge (const GA_Detail &src, GA_MergeOptions &options)
 Merge the source detail into this detail with options. More...
 
void replaceWith (const GA_Detail &src, const GA_AttributeFilter *skip=nullptr, bool full_copy=false)
 
void replaceWithPoints (const GA_Detail &src, const GA_AttributeFilter *skip=nullptr)
 
void mergeGlobalAttributes (const GA_Detail &src)
 Merge global attributes (using default options) More...
 
void mergeGlobalAttributes (const GA_Detail &src, GA_MergeOptions &options)
 Merge source global attributes using options. More...
 
void cloneMissingAttributes (const GA_Detail &src, GA_AttributeOwner owner, const GA_AttributeFilter &filter)
 
void cloneMissingGroups (const GA_Detail &src, GA_AttributeOwner owner, const GA_AttributeFilter &filter)
 Clone any missing groups from the source detail. More...
 
bool registerIO (GA_IO *io) const
 Register an IO file format. More...
 
const GA_IOfindIO (const char *name=nullptr) const
 
void getIONames (UT_StringArray &names) const
 
IOStatus save (const char *filename, const GA_SaveOptions *options, UT_StringArray *errors=0) const
 
IOStatus save (std::ostream &os, bool binary, const GA_SaveOptions *options, UT_StringArray *errors=0) const
 
IOStatus save (UT_JSONWriter &w, const GA_SaveOptions *opts=0) const
 
IOStatus load (const char *filename, const GA_LoadOptions *opts=0, UT_StringArray *errors=0)
 Load a geometry file. More...
 
IOStatus load (UT_IStream &is, const GA_LoadOptions *opts=0, UT_StringArray *errors=0)
 Load a geometry file given a UT_IStream. More...
 
IOStatus load (UT_JSONParser &p, const GA_LoadOptions *opts=0, UT_StringArray *errors=0)
 
bool stat (GA_Stat &stat, uint level=0xffff) const
 
void statAttributes (GA_Stat &stat, uint level=0xffff) const
 Fill out only the attribute information on the stat. More...
 
void statGroups (GA_Stat &stat, uint level=0xffff) const
 Fill out only the group information on the stat. More...
 
const GA_PrimitiveFactorygetPrimitiveFactory () const
 
virtual void refreshCachedHandles ()
 
void refreshCachedAttributes ()
 Refreshes the cached myP attribute. More...
 
void constructTailInitializers (GA_AttributeOwner owner, GA_Offset start, GA_Offset size=GA_Offset(1))
 
bool containsPrimitiveType (const GA_PrimitiveTypeId &type) const
 
bool containsOnlyPrimitiveTypes (const UT_Array< GA_PrimitiveTypeId > &type) const
 
GA_Size countPrimitiveType (const GA_PrimitiveTypeId &type) const
 
GA_Size countPrimitiveTypeFamily (GA_PrimitiveFamilyMask family) const
 
bool containsLocalTransformPrimitive () const
 
bool getPrimitivesOfType (const GA_PrimitiveTypeId &type, UT_Array< const GA_Primitive * > &prims) const
 
GA_PrimitiveTypeMask getPrimitiveTypeMaskAll () const
 
GA_PrimitiveTypeMask getPrimitiveTypeMask (const GA_PrimitiveGroup *group=0) const
 
const GA_AttributeInstanceMatrixgetInstanceMatrix () const
 Return cached attribute instance matrix pointer. More...
 
void clearInstanceMatrix ()
 
bool isPrimary () const
 
GA_CEAttributegetTopologyCEAttribute (GA_Topology::TopologyCE topotype, GA_StorageClass storage, GA_Precision precision, int &tuplesize, bool isarray, bool read, bool write)
 Builds & acquires GPU backed buffers for topology attributes. More...
 
void flushCEWriteCaches ()
 
void flushCECaches ()
 
void stealCEBuffers (const GA_Detail &srcdetail)
 
void copyChangedNonTransforming (const GA_Detail *inputgeo, GA_AttributeOwner owner)
 
void incrementMetaCacheCount ()
 
int64 getMetaCacheCount () const
 
GA_Precision getPreferredPrecision () const
 
void setPreferredPrecision (GA_Precision prec)
 
void stashAll ()
 
void destroyStashed ()
 
const GA_AttributegetPwAttribute () const
 
GA_AttributegetPwAttribute ()
 
SYS_FORCE_INLINE GA_PrimitivegetPrimitive (GA_Offset prim_off)
 
SYS_FORCE_INLINE const
GA_Primitive
getPrimitive (GA_Offset prim_off) const
 
GA_PrimitivegetPrimitiveByIndex (GA_Index prim_idx)
 
const GA_PrimitivegetPrimitiveByIndex (GA_Index prim_idx) const
 
bool destroyPointOffset (GA_Offset ptoff, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES, bool guarantee_no_vertex_references=false)
 
bool destroyPointIndex (GA_Index index, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES, bool guarantee_no_vertex_references=false)
 
GA_Size destroyUnusedPoints (const GA_Range &point_range)
 
GA_Size destroyPointOffsets (const GA_Range &range, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES, bool guarantee_no_vertex_references=false)
 
GA_Size destroyPoints (const GA_Range &range, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES, bool guarantee_no_vertex_references=false)
 
GA_AttributeOwner getAttributeOwner (const GA_AttributeDict &dict) const
 
const GA_AttributeDictgetAttributeDict (GA_AttributeOwner owner) const
 
GA_AttributecreateAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, const UT_Options *create_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
GA_AttributecreateAttribute (GA_AttributeOwner owner, const UT_StringHolder &name, const UT_Options *create_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_ATINumericUPtr createDetachedTupleAttribute (GA_AttributeOwner owner, GA_Storage storage, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0f), const GA_AttributeOptions *attribute_options=nullptr) const
 
SYS_FORCE_INLINE GA_AttributeUPtr createDetachedAttribute (GA_AttributeOwner owner, const UT_StringRef &attribtype, const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr) const
 
SYS_FORCE_INLINE GA_AttributeUPtr createDetachedAttribute (GA_AttributeOwner owner, const GA_AttributeType &attribtype, const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr) const
 
template<typename T >
bool getAttributeAsArray (const GA_Attribute *atr, const GA_Range &range, UT_Array< T > &result) const
 Get/set all the point attribute data from/to a contiguous array. More...
 
template<typename T >
bool setAttributeFromArray (GA_Attribute *atr, const GA_Range &range, const UT_Array< T > &src)
 
GA_PointGroupTablepointGroups ()
 
const GA_PointGroupTablepointGroups () const
 
GA_PrimitiveGroupTableprimitiveGroups ()
 
const GA_PrimitiveGroupTableprimitiveGroups () const
 
GA_VertexGroupTablevertexGroups ()
 
const GA_VertexGroupTablevertexGroups () const
 
GA_EdgeGroupTableedgeGroups ()
 
const GA_EdgeGroupTableedgeGroups () const
 
GA_PointGroupnewPointGroup (const UT_StringHolder &name)
 
GA_VertexGroupnewVertexGroup (const UT_StringHolder &name)
 
GA_PrimitiveGroupnewPrimitiveGroup (const UT_StringHolder &name)
 
GA_EdgeGroupnewEdgeGroup (const UT_StringHolder &name)
 
GA_PointGroupnewInternalPointGroup ()
 
GA_VertexGroupnewInternalVertexGroup ()
 
GA_PrimitiveGroupnewInternalPrimitiveGroup ()
 
GA_EdgeGroupnewInternalEdgeGroup ()
 
GA_PointGroupnewDetachedPointGroup () const
 
GA_PrimitiveGroupnewDetachedPrimitiveGroup () const
 Be sure to do "delete group;" to clean it up. More...
 
GA_VertexGroupnewDetachedVertexGroup () const
 Be sure to do "delete group;" to clean it up. More...
 
GA_EdgeGroupnewDetachedEdgeGroup () const
 Be sure to do "delete group;" to clean it up. More...
 
GA_PointGroupUPtr createDetachedPointGroup () const
 
GA_PrimitiveGroupUPtr createDetachedPrimitiveGroup () const
 
GA_VertexGroupUPtr createDetachedVertexGroup () const
 
GA_EdgeGroupUPtr createDetachedEdgeGroup () const
 
GA_PointGroupnewPointGroup (const UT_StringHolder &name, bool internal)
 
GA_PrimitiveGroupnewPrimitiveGroup (const UT_StringHolder &name, bool internal)
 
GA_VertexGroupnewVertexGroup (const UT_StringHolder &name, bool internal)
 
GA_EdgeGroupnewEdgeGroup (const UT_StringHolder &name, bool internal)
 
GA_LocalIntrinsic findIntrinsic (const UT_StringRef &nm) const
 
GA_LocalIntrinsic findIntrinsic (GA_GlobalIntrinsic h) const
 
GA_GlobalIntrinsic findGlobalIntrinsic (GA_LocalIntrinsic h) const
 
const char * getIntrinsicName (GA_LocalIntrinsic h) const
 
GA_Size getIntrinsicTupleSize (GA_LocalIntrinsic h) const
 
bool getIntrinsicCollapseSingletons (GA_LocalIntrinsic h) const
 
GA_StorageClass getIntrinsicStorage (GA_LocalIntrinsic h) const
 
bool getIntrinsicReadOnly (GA_LocalIntrinsic h) const
 
const UT_OptionsgetIntrinsicOptions (GA_LocalIntrinsic h) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_String &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_StringArray &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_OptionsHolder &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_Array< UT_OptionsHolder > &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, int64 *v, GA_Size size) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, fpreal64 *v, GA_Size sz) const
 
bool getIntrinsic (GA_LocalIntrinsic h, float &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, int &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector2 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector3 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector4 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix2 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix3 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix4 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, double &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, int64 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector2D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector3D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector4D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix2D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix3D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix4D &v) const
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const char *value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_StringArray &value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const char **val, GA_Size s)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_OptionsHolder &val)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_Array< UT_OptionsHolder > &value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_OptionsHolder *val, GA_Size s)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const int64 val)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const fpreal64 val)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const int64 *val, GA_Size sz)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const fpreal64 *v, GA_Size sz)
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPointBreak (FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPointBreak (const GA_PointGroup *group, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPointBreak (const GA_PointGroup *group, bool complement, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitiveBreak (FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitiveBreak (const GA_PrimitiveGroup *group, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitiveBreak (const GA_PrimitiveGroup *group, bool complement, FUNCTOR &&functor) const
 
void copyAttributes (GA_AttributeOwner owner, GA_Offset destoff, GA_Offset srcoff, const GA_AttributeFilter *filter=nullptr)
 
void copyAttributes (GA_AttributeOwner owner, GA_Offset destoff, const GA_Detail &srcdetail, GA_Offset srcoff, const GA_AttributeFilter *filter=nullptr)
 
IOStatus saveClassic (const char *, const GA_SaveOptions *) const
 
IOStatus saveClassic (std::ostream &os, bool, const GA_SaveOptions *) const
 
IOStatus statFile (const char *filename, GA_Stat &stat, uint level=0xffff, const GA_LoadOptions *opts=nullptr) const
 
IOStatus stat (UT_JSONParser &p, GA_Stat &stat, uint level) const
 
void addTailInitializer (GA_Attribute *attrib)
 
bool removeTailInitializer (GA_Attribute *attrib)
 
MantraGeometry * mantraGeometry ()
 
const MantraGeometry * mantraGeometry () const
 
void setMantraGeometry (MantraGeometry *m)
 
bool saveVertexPointReferenceH9 (std::ostream &os, int binary, GA_Offset vertex_offset) const
 
bool loadVertexH9 (UT_IStream &is, GA_Offset vertex_offset, const UT_Array< GA_AttribLoadDataH9 > &vtx_l)
 
bool saveVertexH9 (std::ostream &os, int binary, GA_Offset vertex_offset, const UT_Array< GA_AttribSaveDataH9 > &vtx_l) const
 

Static Public Member Functions

static int loftHulls (GEO_Hull *left, GEO_Hull *right, float lwidth1, float lwidth2, float rwidth1, float rwidth2, int sharp, int &lstart, int &rstart, int &lmax, int &rmax, int loftU, GA_NUBBasis *nubbasis)
 
static GA_Detail::IOStatus statH9File (const char *filename, GA_Stat &sbuf, uint level)
 
static bool isFormatSupported (const char *filename)
 Returns true if filename is a recognized extension. More...
 
static GEO_IOTranslatorgetSupportedFormat (const char *filename)
 
static void loadIODSOs ()
 
static void getFileExtensions (UT_StringArray &result)
 Create a list of all internal file extensions. More...
 
static bool matchBinaryFileExtension (const UT_StringRef &filename)
 
static bool matchASCIIFileExtension (const UT_StringRef &filename)
 
static int getSubdividedCV (GEO_Hull *hull, int udir, float unit)
 
static int getSubdividedCV (GEO_Face *face, float unit)
 
static void registerIOTranslator (GEO_IOTranslator *trans)
 
static void unregisterIOTranslator (GEO_IOTranslator *trans)
 
static exint getIOTranslatorCount ()
 
static const GEO_IOTranslatorgetIOTranslator (exint i)
 
- Static Public Member Functions inherited from GEO_Detail
template<typename FLT >
static UT_Matrix4T< FLT > localSpaceXformMatrix (const UT_XformOrder &order, const LocalXformContextT< FLT > &local_frame, FLT tx, FLT ty, FLT tz, FLT rx, FLT ry, FLT rz, FLT sx, FLT sy, FLT sz, FLT s_xy, FLT s_xz, FLT s_yz, FLT px, FLT py, FLT pz, FLT prx, FLT pry, FLT prz)
 
static const UT_StringHoldergetPointCaptureAttribName (CaptureType type)
 
static const char * getPointCaptureIndexPropertyName (CaptureType type)
 
static const UT_StringHoldergetPointCaptureFrameAttribName (CaptureType type)
 
static const UT_StringHoldergetPointCaptureRootAttribName (CaptureType type)
 
static const char * getPointCaptureDataPropertyName (CaptureType type)
 
static GA_TypeInfo getStdAttributeTypeInfo (const char *name, int floattuplesize)
 
static int asciiMagicH9 ()
 Magic number for ASCII geometry files. More...
 
static int binaryMagicH9 ()
 Magic number for binary geometry files. More...
 
- Static Public Member Functions inherited from GA_Detail
static
GA_IntrinsicManager::Registrar 
registerIntrinsics (GA_PrimitiveFactory &factory)
 
template<typename FUNCTOR >
static void forEachOffset (FUNCTOR &&functor, const GA_IndexMap &index_map, const GA_ElementGroup *group=nullptr, bool complement=false)
 
template<typename FUNCTOR >
static void forEachOffsetBreak (FUNCTOR &&functor, const GA_IndexMap &index_map, const GA_ElementGroup *group=nullptr, bool complement=false)
 
static int64 printMemory (UT_WorkBuffer &buffer, bool include_total=true, int indent=3, const char *title="Geometry Memory Tracking")
 Debugging output of detail. More...
 
template<typename T >
static const
T::GB_MACRO_PRIM_TYPE * 
GB_MACRO_CAST (const T *, const GA_Primitive *prim)
 
template<typename T >
static T::GB_MACRO_PRIM_TYPE * GB_MACRO_CAST (const T *, GA_Primitive *prim)
 
static bool loadAttribDataH9 (UT_IStream &is, GA_Offset offset, const UT_Array< GA_AttribLoadDataH9 > &l)
 
static bool saveAttribDataH9 (std::ostream &os, int binary, GA_Offset offset, const UT_Array< GA_AttribSaveDataH9 > &l, char delim_ch= '(')
 

Static Protected Member Functions

static
GA_IntrinsicManager::Registrar 
registerIntrinsics (GA_PrimitiveFactory &factory)
 Register intrinsic attributes. More...
 
- Static Protected Member Functions inherited from GEO_Detail
static
GA_IntrinsicManager::Registrar 
registerIntrinsics (GA_PrimitiveFactory &factory)
 
static GA_Detail::IOStatus statH9Basic (UT_IStream &is, GA_Stat &sbuf, bool binstream)
 
- Static Protected Member Functions inherited from GA_Detail
static void finishLoadH9 (const UT_Array< GA_AttribLoadDataH9 > &attribs)
 

Friends

class GU_PrimitiveFactory
 

Additional Inherited Members

- Static Public Attributes inherited from GA_Detail
static const int64 INVALID_CACHE_COUNT = -1
 
- Protected Member Functions inherited from GEO_Detail
GA_Size localIntrinsicTupleSize (GA_IntrinsicEval &eval) const override
 
GA_Size localGetIntrinsicS (GA_IntrinsicEval &eval, UT_String &value) const override
 
GA_Size localGetIntrinsicSA (GA_IntrinsicEval &eval, UT_StringArray &value) const override
 
GA_Size localGetIntrinsicD (GA_IntrinsicEval &eval, UT_OptionsHolder &value) const override
 
GA_Size localGetIntrinsicDA (GA_IntrinsicEval &eval, UT_Array< UT_OptionsHolder > &value) const override
 
GA_Size localGetIntrinsicI (GA_IntrinsicEval &eval, int64 *value, GA_Size size) const override
 
GA_Size localGetIntrinsicF (GA_IntrinsicEval &eval, fpreal64 *value, GA_Size size) const override
 
GA_Size localSetIntrinsicS (GA_IntrinsicEval &eval, const char *value) override
 
GA_Size localSetIntrinsicSA (GA_IntrinsicEval &eval, const UT_StringArray &value) override
 
GA_Size localSetIntrinsicSS (GA_IntrinsicEval &eval, const char **value, GA_Size size) override
 
GA_Size localSetIntrinsicDA (GA_IntrinsicEval &eval, const UT_Array< UT_OptionsHolder > &value) override
 
GA_Size localSetIntrinsicDS (GA_IntrinsicEval &eval, const UT_OptionsHolder *value, GA_Size size) override
 
GA_Size localSetIntrinsicI (GA_IntrinsicEval &eval, const int64 *value, GA_Size size) override
 
GA_Size localSetIntrinsicF (GA_IntrinsicEval &eval, const fpreal64 *value, GA_Size size) override
 
GA_Detail::IOStatus saveH9Stream (std::ostream &os, bool binary, const GA_SaveOptions *options) const
 
GA_Detail::IOStatus loadH9 (UT_IStream &is, const GA_LoadOptions *options)
 
bool convertIndexPairDataFromH9 ()
 
bool convertIndexPairDataToH9 ()
 
template<typename FLOAT_T >
void transformInternal (const UT_Matrix4T< FLOAT_T > &mat, const GA_Range &prim_range, const GA_Range &pt_range, bool just_P, bool keep_vector_lengths, bool check_pasting, bool neg_determinant_flipvector, bool update_ptnormals, GEO_Delta *geodelta, bool updateaffectednormals, const char *attribpattern)
 
void privateComputeNormal (const GA_RWHandleV3 &normalattrib, const GA_Group *group, const float cuspangledegrees, const int method) const override
 
- Protected Member Functions inherited from GA_Detail
void doConstructTailInitializers (GA_AttributeOwner owner, GA_Offset start, GA_Offset size)
 
bool loadPrimitivesH9 (UT_IStream &is, int count, const GA_FileFormatH9::PrimTypeXlate &type_map, const UT_Array< GA_AttribLoadDataH9 > &prim_attribs, const UT_Array< GA_AttribLoadDataH9 > &vtx_attribs)
 
bool savePrimitivesH9 (std::ostream &os, int binary, const UT_Array< const GA_Primitive * > &list, const GA_FileFormatH9::PrimTypeXlate &type_map, const UT_Array< GA_AttribSaveDataH9 > &prim_attribs, const UT_Array< GA_AttribSaveDataH9 > &vx_attribs) const
 
void splitAnyFloat4P ()
 
void setUniqueId (exint i)
 
void setMetaCacheCount (int64 i)
 

Detailed Description

Member Enumeration Documentation

There are three different ways of handling situations where all edges that connect polygon boundaries are dissolved.

  • GU_BRIDGEMODE_BRIDGE
    Insert bridge edges to connect the boundary loops.
  • GU_BRIDGEMODE_DISJOINT
    Create a separate polygon for each boundary loop.
  • GU_BRIDGEMODE_DELETE
    Delete the polygons.
Enumerator
GU_BRIDGEMODE_BRIDGE 
GU_BRIDGEMODE_DISJOINT 
GU_BRIDGEMODE_DELETE 

Definition at line 1913 of file GU_Detail.h.

Specifies methods by which points after consolidation will get their group names. ONLYCONS_GRP_PROP_LEAST means that the points will belong to the same group as the original point with least point number. ONLYCONS_GRP_PROP_UNION means that the points will belong to the full set of groups represented by the original points (so if orig. point 1 is in group A, B and orig. point 2 is in group B, C, the final point will be in A B C). INTERSECT means the point will only belong in groups that are common to all original points. With the example above, it will belong in B.

Enumerator
ONLYCONS_GRP_PROP_LEAST 
ONLYCONS_GRP_PROP_UNION 
ONLYCONS_GRP_PROP_INTERSECT 

Definition at line 510 of file GU_Detail.h.

Methods for snapping attributes (for use with snapAttributes). SNAP_ATTRIBUTE_AVERAGE averages the attributes together. SNAP_ATTRIBUTE_INDEX tells snapAttributes to use an index into the list of snapped points to set the attributes for other points.

Enumerator
SNAP_ATTRIBUTES_AVERAGE 
SNAP_ATTRIBUTES_INDEX 

Definition at line 598 of file GU_Detail.h.

Constructor & Destructor Documentation

GU_Detail::GU_Detail ( )
inline

NOTE: Need an explicit default constructor to work around internal compiler error in Visual Studio 2015 Update 3. See: https://connect.microsoft.com/VisualStudio/feedback/details/2869531

Definition at line 160 of file GU_Detail.h.

GU_Detail::GU_Detail ( bool  full_topology)
inlineexplicit

Definition at line 161 of file GU_Detail.h.

GU_Detail::GU_Detail ( const GU_Detail src,
GA_PrimitiveGroup primGroup,
GA_DataIdStrategy  data_id_strategy = GA_DATA_ID_BUMP 
)
inlineexplicit

See GEO_Detail::merge() for documentation of the data_id_strategy argument.

Definition at line 168 of file GU_Detail.h.

GU_Detail::GU_Detail ( const GU_Detail src,
GA_DataIdStrategy  data_id_strategy = GA_DATA_ID_BUMP 
)
inlineexplicit

See GEO_Detail::copy() for documentation of the data_id_strategy argument.

Definition at line 180 of file GU_Detail.h.

GU_Detail::~GU_Detail ( )
override

Member Function Documentation

void GU_Detail::addError ( GU_ErrorCodes  code,
const char *  msg = 0 
) const
inline

Error Routines

Definition at line 1794 of file GU_Detail.h.

void GU_Detail::addMessage ( GU_ErrorCodes  code,
const char *  msg = 0 
) const
inline

Error Routines

Definition at line 1784 of file GU_Detail.h.

void GU_Detail::addWarning ( GU_ErrorCodes  code,
const char *  msg = 0 
) const
inline

Error Routines

Definition at line 1789 of file GU_Detail.h.

void GU_Detail::align ( GU_AlignParms parms)

Align a set of primitives by rotation and translation.

bool GU_Detail::applyTexture ( GU_TextureType  type,
GU_AxisType  axis,
const GA_PrimitiveGroup primGroup = 0,
int  applyToVertex = -1,
int  fixPolySeams = 0,
const GU_CameraParms userData = 0 
)

If the applyToVertex is less than 0, the "natural" place will be use, otherwise 0 = point attrib, 1 = vertex attrib Returns false if the attribute failed to be created, else true.

bool GU_Detail::applyTexture ( const UT_StringRef uvattribname,
GU_TextureType  type,
GU_AxisType  axis,
const GA_PrimitiveGroup primGroup = 0,
int  applyToVertex = -1,
int  fixPolySeams = 0,
const GU_CameraParms userData = 0 
)

If the applyToVertex is less than 0, the "natural" place will be use, otherwise 0 = point attrib, 1 = vertex attrib Returns false if the attribute failed to be created, else true.

void GU_Detail::applyTraceTexture ( float  xres,
float  yres,
float  resolution 
)

add point texture attributes to traced geometry

GEO_Curve* GU_Detail::approxCurveGlobal ( const GEO_Face face,
const GA_PrimitiveTypeId type = GEO_PRIMNURBCURVE,
int  order = 4,
float  tol = 1e-1F,
float  smooth = 0.0F,
int  noMultipleKnots = 1 
)

Approximate data points given a tolerance. Only for open endinterpolated surface.

GEO_Curve* GU_Detail::approxCurveGlobal ( const UT_Vector4Array v4Data,
const GA_PrimitiveTypeId type = GEO_PRIMNURBCURVE,
int  order = 4,
int  wrapped = 0,
float  tol = 1e-1F,
float  smooth = 0.0F,
int  noMultipleKnots = 1 
)

Approximate data points given a tolerance. Only for open endinterpolated surface.

GEO_TPSurf* GU_Detail::approxSurfGlobal ( const GEO_Hull mesh,
const GA_PrimitiveTypeId type = GEO_PRIMNURBSURF,
int  uOrder = 4,
int  vOrder = 4,
GEO_SurfaceType  sType = GEO_PATCH_QUADS,
float  tol = 1e-1F,
float  smooth = 0.0F,
int  uNoMultipleKnots = 1,
int  vNoMultipleKnots = 1 
)

Approximate data points given a tolerance. Only for open endinterpolated surface.

GEO_TPSurf* GU_Detail::approxSurfGlobal ( const GA_OffsetMatrix gpMesh,
const GA_PrimitiveTypeId type = GEO_PRIMNURBSURF,
int  uOrder = 4,
int  vOrder = 4,
int  uWrapped = 0,
int  vWrapped = 0,
GEO_SurfaceType  sType = GEO_PATCH_QUADS,
float  tol = 1e-1F,
float  smooth = 0.0F,
int  uNoMultipleKnots = 1,
int  vNoMultipleKnots = 1 
)

Approximate data points given a tolerance. Only for open endinterpolated surface.

GU_PrimRBezSurf* GU_Detail::bezCube ( int  xdiv,
int  ydiv,
int  zdiv,
int  orderx = 4,
int  ordery = 4,
int  orderz = 4,
float  xmin = -0.5F,
float  xmax = 0.5F,
float  ymin = -0.5F,
float  ymax = 0.5F,
float  zmin = -0.5F,
float  zmax = 0.5F,
GEO_SurfaceType  type = GEO_PATCH_QUADS,
bool  consolidate = false 
)
GU_PrimRBezSurf* GU_Detail::bezGrid ( int  rows,
int  cols,
int  orderu = 4,
int  orderv = 4,
float  xsize = 1,
float  ysize = 1,
float  xc = 0,
float  yc = 0,
float  zc = 0,
GU_OrientationType  plane = GU_PLANE_XY,
GEO_SurfaceType  type = GEO_PATCH_QUADS,
int  wrapu = 0,
int  wrapv = 0 
)
void GU_Detail::blend ( const GU_Detail source,
float  weight,
bool  doPos,
bool  doClr,
bool  doNml,
bool  doTxt,
bool  doVoxels,
bool  doSlerp,
const char *  ptidattr,
const char *  primidattr 
)

create a weighted sum of two source inputs This bumps data IDs of any attributes that are modified, and of the primitive list, if any primitives are modified.

int GU_Detail::blend ( const GU_Detail gdps[],
const float  weights[],
int  size,
bool  doPos,
bool  doClr,
bool  doNml,
bool  doTxt,
bool  doVoxels,
bool  doSlerp,
const char *  ptidattr,
const char *  primidattr,
const GA_PointGroup ptGroup 
)

create a weighted sum of size source inputs Return 1 if at least one pasted surface was involved in the blend, else 0. This bumps data IDs of any attributes that are modified, and of the primitive list, if any primitives are modified.

GA_Offset GU_Detail::buildGrid ( GU_GridParms parms,
GU_GridType  type = GU_GRID_MESH 
)

Creates a grid in this detail based on parms. Returns the offset of the first polygon primitive.

int GU_Detail::buildHoles ( float  dist = 0.001F,
float  angle = 0.2F,
int  snapFace = 0,
const GA_PrimitiveGroup primGroup = 0 
)

Build holes in the geometry by bridging the holes to their outlines The angle should be specified as the angle (in degrees) between the normals.

void GU_Detail::buildMetaSurface ( const GU_Detail src,
float  lod,
const GA_PrimitiveGroup primGroup = 0,
bool  makepolysoup = false 
)

When building a meta-surface, the new surface is built in this gdp. If desired, src can be "this" as well...

void GU_Detail::buildMetaSurface ( const GU_Detail src,
int  divx,
int  divy,
int  divz,
const GA_PrimitiveGroup primGroup = 0,
bool  makepolysoup = false 
)
void GU_Detail::buildMetaXsection ( const GU_Detail src,
int  nsections,
int  axis = 2,
int  maxdepth = 4,
const GA_PrimitiveGroup primGroup = nullptr 
)

A faster way of conversion is to build cross sections. However, this doesn't build real surfaces

void GU_Detail::buildRingZeroPoints ( UT_Array< GA_OffsetArray > &  ringzero,
UT_IntArray ringvalence = 0 
) const

Fills the ringzero array, (which is indexed by point GA_Index, not GA_Offset), with the GA_Offsets of each point's neighbours, (i.e. they share an edge in some primitive). It avoids duplicates within each point's list of neighbours. If ringvalence is non-nullptr, it is filled with the number of half-edges each point is part of, i.e. including duplicates and both directions.

void GU_Detail::buildRingZeroPoints ( const GA_PointGroup ptgroup,
UT_Array< GA_OffsetArray > &  ringzero,
UT_IntArray ringvalence = 0,
const GA_PrimitiveGroup primgroup = 0 
) const

Fills the ringzero array, (which is indexed by point GA_Index, not GA_Offset), with the GA_Offsets of each point's neighbours, (i.e. they share an edge in some primitive). It avoids duplicates within each point's list of neighbours. If ringvalence is non-nullptr, it is filled with the number of half-edges each point is part of, i.e. including duplicates and both directions.

In this version, an edge is only counted if it is in a primitive in primgroup (if non-nullptr). Although only entries for points in ptgroup (if non-nullptr) are written-to in ringzero and ringvalence (if non-nullptr), neighbours outside of ptgroup will be listed.

void GU_Detail::buildRingZeroPrimitives ( UT_Array< GA_OffsetArray > &  ringzero) const
void GU_Detail::buildRingZeroVertices ( UT_Array< GA_OffsetArray > &  ringzero,
const GA_PrimitiveGroup prims = 0 
) const

NOTE: Unlike buildRingZeroPoints, the array in buildRingZeroVertices is indexed by GA_Offset, not GA_Index, for simplicity.

UT_UniquePtr<GA_CEAttribute> GU_Detail::buildTopologyCEAttribute ( GA_Topology::TopologyCE  topotype,
GA_StorageClass  storage,
GA_Precision  precision,
int tuplesize,
bool  isarray,
bool  read,
bool  write 
) const
overridevirtual

Builds a new CEAttribute for the given topology. This is not cached internally anywhere, nor does it use any existing cache.

Reimplemented from GA_Detail.

GA_Size GU_Detail::cleanData ( const GA_PrimitiveGroup primGrp = 0,
bool  removeRepPoints = false,
float  tol = 0.001F,
bool  deleteDegenPrimPoints = false,
bool  deleteOrphanedPoints = false,
bool  deleteDegenerateBridges = false 
)

Remove repeated references of vertices in the faces, then remove all degenerate primitives regardless of their type. Set removeRepPoints flag to remove the repeat points as well and the deletePoints flag to delete the points that were part of the degenerate primitive.

void GU_Detail::clearCachedBounds ( )

Forcibly clear all cached bounds (including the cached visible bounds) without having to update the meta cache count or data ID on P.

void GU_Detail::clearCaches ( )
overridevirtual

This clears any caches that subclasses of GA_Detail may have, so that replacing the content of the detail doesn't cause crashes.

Reimplemented from GA_Detail.

void GU_Detail::clip ( UT_Vector3 normal,
float  d = 0,
int  normlize = 0,
const GA_PrimitiveGroup primGroup = 0,
bool  clippts = false 
)

Clip primitives, keeping everything where dot(normal, P) >= d. If clippts is true, disconnected points are also clipped.

void GU_Detail::clip ( bool  fill,
const UT_Vector3F origin,
const UT_Vector3F normal,
fpreal  tolerance = 0.00001,
const GA_PrimitiveGroup group = nullptr,
GA_EdgeGroup on_edges = nullptr,
GA_PrimitiveGroup on_polygons = nullptr,
GA_PrimitiveGroup filled_polygons = nullptr 
)

Clip the primitives that lie beneath the plane. If fill is true, fills in the on-plane edges with polygons. If on_edges is non-nullptr, adds the edges that lie on the plane. If on_prims is non-nullptr, adds the primitives that lie partially or entirely on the plane. If filled_polygons is non-nullptr, adds the filled in polygons.

GA_Detail* GU_Detail::cloneEmptyDetail ( bool  clone_attributes) const
overridevirtual

Create a new detail that has all the same attributes, groups, etc. but has no elements. Subclasses should look at: cloneCopyGroupsAndAttributes()

Implements GA_Detail.

GU_Detail* GU_Detail::cloneForCache ( bool  copy_unique_id) const
void GU_Detail::cloneForCache ( GU_Detail dest,
bool  copy_unique_id,
bool  copy_detail = true 
) const
int GU_Detail::commonFaceConfig ( const GA_PrimitiveGroup faceGroup,
GA_PrimCompat::TypeMask type,
int order,
bool &  open,
bool &  ends 
) const

Figure out the parameters of the face/surface that all the given faces/surfaces should have in order to be fully compatible with one another. Return 0 if all the primitive types are faces/surfaces, and -1 otherwise.

int GU_Detail::commonFaceConfig ( const UT_Array< GEO_Primitive * > &  faces_in,
GA_PrimCompat::TypeMask type,
int order,
bool &  open,
bool &  ends 
) const

Figure out the parameters of the face/surface that all the given faces/surfaces should have in order to be fully compatible with one another. Return 0 if all the primitive types are faces/surfaces, and -1 otherwise.

int GU_Detail::commonSurfaceConfig ( const GA_PrimitiveGroup surfs,
GA_PrimCompat::TypeMask type,
int orderu,
int orderv,
bool &  openu,
bool &  openv,
bool &  endsu,
bool &  endsv 
) const

Figure out the parameters of the face/surface that all the given faces/surfaces should have in order to be fully compatible with one another. Return 0 if all the primitive types are faces/surfaces, and -1 otherwise.

bool GU_Detail::computeAvgNormal ( const GA_PointGroup group,
const GA_ROHandleV3 normals,
UT_Vector3 avg_normal 
) const

This routine will compute the average normal of a group of points. Returns true on success and false on failure. NOTE: The version that doesn't take a point normal attribute handle will temporarily create a detached point normal attribute if a point N doesn't already exist. The caller may or may not want to cache a detached attribute and pass it in, instead.

bool GU_Detail::computeAvgNormal ( const GA_PointGroup group,
UT_Vector3 avg_normal 
) const

This routine will compute the average normal of a group of points. Returns true on success and false on failure. NOTE: The version that doesn't take a point normal attribute handle will temporarily create a detached point normal attribute if a point N doesn't already exist. The caller may or may not want to cache a detached attribute and pass it in, instead.

void GU_Detail::computeSoftTransformPointTextureCache ( GEO_SoftTransformCache cache,
const GA_PointGroup ptgroup,
const GEO_Rolloff rolloff,
const GU_MetricType  metric 
) const

Precompute a list of points to soft transform, along with the distance (squared) to the closest "hard" point. The metric specifies how distance is measured in space.

void GU_Detail::computeSoftTransformPointTextureCache ( const GA_ROHandleV3 pttxth,
GEO_SoftTransformCache cache,
const GA_PointGroup ptgroup,
const GEO_Rolloff rolloff,
const GU_MetricType  metric 
) const

Precompute a list of points to soft transform, along with the distance (squared) to the closest "hard" point. The metric specifies how distance is measured in space.

void GU_Detail::computeSoftTransformVertexTextureCache ( GEO_SoftTransformCache cache,
const GA_VertexGroup vtxgroup,
const GEO_Rolloff rolloff,
const GU_MetricType  metric,
bool  ignore_uv_connectivity 
) const

Precompute a list of vertices to soft transform, along with the distance (squared) to the closest "hard" point. The metric specifies how distance is measured in space. ignore_uv_connectivity controls whether we affect vertices which are not in the same uvw-wise connected component.

void GU_Detail::computeSoftTransformVertexTextureCache ( const GA_ROHandleV3 vtxh,
GEO_SoftTransformCache cache,
const GA_VertexGroup vtxgroup,
const GEO_Rolloff rolloff,
const GU_MetricType  metric,
bool  ignore_uv_connectivity 
) const

Precompute a list of vertices to soft transform, along with the distance (squared) to the closest "hard" point. The metric specifies how distance is measured in space. ignore_uv_connectivity controls whether we affect vertices which are not in the same uvw-wise connected component.

GA_Size GU_Detail::consolidateNormals ( fpreal  distance,
const GA_PointGroup ptGrp = 0,
bool  forceConsAll = false,
bool  accurate = false 
)
GA_Size GU_Detail::consolidatePoints ( fpreal  distance,
const GA_PointGroup ptGrp = 0,
bool  forceConsAll = false,
bool  mark = false,
bool  accurate = false 
)

Consolidate points within a specified distance (returns num done) If a point group is specified, then, only points in that group are consolidated. If the forceConsAll flag is set then all points will be consolidated in a greedy fashion using a branch and bound algorithm.

void GU_Detail::convert ( GEO_ConvertParms parms)

Conversion Routines - to convert from one primitive to another

Performs conversion in-place, removing source primitives

void GU_Detail::convertMetaballs ( GEO_MetaConvertParms parms,
const GA_PrimitiveGroup prim_grp = nullptr 
)

This routine only converts metaballs using a more comprehensive set of parameters.

void GU_Detail::convertNew ( GEO_ConvertParms parms)

Performs conversion, keeping the source primitives.

void GU_Detail::convex ( GA_Size  maxpts = 3,
const GA_PrimitiveGroup primGroup = 0,
const GA_Detail restgdp = 0,
bool  flipedges = false,
bool  avoiddegeneracy = false 
)

Split polygons (including in polygon soups) in the detail into convex polygons with at most maxpts vertices each. By default, this triangulates the polygon. If flipedges is true, it will flip edges to get the Delaunay triangulation, avoiding small angles where possible. If avoiddegeneracy is true, degenerate triangles will not be generated; note that this means that the mesh may not be watertight or even connected.

void GU_Detail::convexPoly ( GEO_PrimPoly pp,
GA_ElementWranglerCache wranglers,
GA_Size  maxpts = 3,
const GA_Detail restgdp = 0,
bool  flipedges = false,
bool  avoiddegeneracy = false 
)

Split the specified polygon into convex polygons with at most maxpts vertices each. By default, this triangulates the polygon. If flipedges is true, it will flip edges to get the Delaunay triangulation, avoiding small angles where possible. If avoiddegeneracy is true, degenerate triangles will not be generated; note that this means that the mesh may not be watertight or even connected.

void GU_Detail::convexPolySoup ( GEO_PrimPolySoup polysoup,
GA_Size  maxpts = 3,
const GA_Detail restgdp = 0,
bool  flipedges = false,
bool  avoiddegeneracy = false 
)

Split polygons in the specified polygon soup into convex polygons with at most maxpts vertices each. By default, this triangulates the polygon. If flipedges is true, it will flip edges to get the Delaunay triangulation, avoiding small angles where possible. If avoiddegeneracy is true, degenerate triangles will not be generated; note that this means that the mesh may not be watertight or even connected.

GU_SelectionHandle GU_Detail::cookSelection ( ) const

Returns the current cook selection;.

GEO_Hull* GU_Detail::coons ( GEO_SurfaceType  surftype,
const GEO_Face uface1,
const GEO_Face vface1,
const GEO_Face uface2 = 0,
const GEO_Face vface2 = 0 
)

Generate a Coons surface out of up to 4 boundary curves. Return a pointer to the surface if successful and 0 otherwise. The faces do not have to have the same type or order.

void GU_Detail::countMemory ( UT_MemoryCounter counter,
bool  inclusive 
) const
overridevirtual

Count memory usage using a UT_MemoryCounter in order to count shared memory correctly. If inclusive is true, the size of this object is counted, else only memory owned by this object is counted. If this is pointed to by the calling object, inclusive should be true. If this is contained in the calling object, inclusive should be false. (Its memory was already counted in the size of the calling object.)

Reimplemented from GEO_Detail.

void GU_Detail::crease ( UT_Vector3 normal,
float  d = 0,
int  normlize = 0,
int  outputGroups = 0,
GA_PrimitiveGroup above = 0,
GA_PrimitiveGroup below = 0,
const GA_PrimitiveGroup creaseGroup = 0 
)
void GU_Detail::crease ( bool  split,
bool  fill,
const UT_Vector3F origin,
const UT_Vector3F normal,
fpreal  tolerance = 0.00001,
const GA_PrimitiveGroup group = nullptr,
GA_EdgeGroup on_edges = nullptr,
GA_PrimitiveGroup on_prims = nullptr,
GA_PrimitiveGroup above_prims = nullptr,
GA_PrimitiveGroup below_prims = nullptr,
GA_PrimitiveGroup filled_polygons = nullptr 
)

Crease the polygons where they intersect with the plane. If split is true, the creased polygons are disconnected at the plane. If fill is true, the creased polygons are split and then filled in.

If on_edges is non-nullptr, adds the edges that lie on the plane. If on_prims is non-nullptr, adds polygons that lie partially or entirely on the plane, or other prims types with bounds that intersect the plane. If above_prims is non-nullptr, adds the primitives above the plane. If below_prims is non-nullptr, adds the primitives below the plane. If fill_polygons is non-nullptr, adds the filled polygons.

GU_SelectionHandle GU_Detail::createShallowCookSelection ( GA_Group group)

Creates a cook selection that directly references the supplied group. Any changes to the cook selection later will copy this group and use that copy.

You must call removeCookSelection() if this group is later destroyed and the cook selection is still referencing it, which can be checked by calling hasShallowCookSelectionReference(group).

NB: Only use this method if you know what you're doing. Any gains in performance are likely not to be worth the management pain.

void GU_Detail::creep ( GU_CreepParms parms)

Transform points to follow surface of path input.

GU_PrimPoly* GU_Detail::cube ( float  xmin = -1,
float  xmax = 1,
float  ymin = -1,
float  ymax = 1,
float  zmin = -1,
float  zmax = 1,
int  xdiv = 0,
int  ydiv = 0,
int  zdiv = 0,
int  enforcementBars = 0,
int  doConsolidatePoints = 0 
)

Creates a polygon cube in this detail. NOTE: Set doConsolidatePoints to true in order to have correctly connected polygons. The default behaviour produces disconnected sides!

Examples:
packedprim/packedprim.C, packedshareddata/GU_PackedSharedData.C, RAY/RAY_DemoBox.C, and RAY/RAY_DemoStamp.C.
GU_ERROR GU_Detail::curveClay ( const GU_CurveClayParms ccparm)

Curve Clay it!

int GU_Detail::curveNetwork ( GEO_Hull *&  hull,
GU_CurveNetworkParms p,
int count,
GU_SkinCache skin_cache 
)

This is what the Skin SOP and Sweep SOP use for skinning cross-sections. See GU_CurveNetwork.h for parameter types. This method generates a skinned surface, a Coons surface, or a Gordon surface depending on the primitive groups it is given. Specifying an orderv of 0 makes the routine come up with a legal default value for the surface.

int GU_Detail::cut ( float uunit,
int  ulen,
float vunit,
int  vlen,
const GA_PrimitiveGroup primGroup = 0,
int  keepin = 1,
int  keepout = 0,
int  atbreakpoints = 0,
int  allU = 0,
int  allV = 0,
int  use_arc_length = 0,
DomainScaleAttribs  uscale = DomainScaleAttribs(),
DomainScaleAttribs  vscale = DomainScaleAttribs() 
)

methods to refine face and hull types

void GU_Detail::deleteEdges ( GA_EdgeGroup edgegroup,
bool  del_inline_points,
float  inlinetol,
bool  del_unused_points = true,
bool  del_bridges = true 
)

Deletes edge geometry.

void GU_Detail::deleteGroupGeometry ( const GA_Group group)

Deletes the geometry in the given group, unlike deleteEdges, it doesn't repair the holes left behind.

void GU_Detail::dissolveEdges ( const GA_EdgeGroup edgegroup,
bool  del_inline_points,
fpreal  inlinetol,
bool  del_unused_points,
BridgeMode  bridge_mode,
bool  del_degenerate_bridges,
bool  boundary_curves 
)
void GU_Detail::divideEdges ( const GA_EdgeGroup edgegroup,
int  numdivs = 1,
bool  applytoall = true,
bool  use_shared_points = false,
GA_EdgeGroup outedges = 0,
UT_Array< GA_Offset > *  new_points = 0,
bool  preserve_edge_dir = false 
)

Inserts points on edges

void GU_Detail::divideEdges ( const GA_EdgeGroup edgegroup,
int  numdivs,
bool  applytoall,
bool  use_shared_points,
GA_EdgeGroup outedges,
UT_Array< GA_Offset > *  new_points,
bool  preserve_edge_dir,
float  fraction 
)

Inserts points on edges

void GU_Detail::divideEdges ( const UT_Array< GU_EdgeDiv * > &  divlocs,
GA_PointGroup outgrp 
)

Inserts points on edges, with a different fraction and number of divisions per edge.

void GU_Detail::duplicate ( const GU_Detail gdp,
int  = 0,
GA_DataIdStrategy  data_id_strategy = GA_DATA_ID_BUMP 
)
void GU_Detail::edgeCollapse ( const GA_EdgeGroup edgegroup,
bool  removedegen = true,
bool  updatenmls = true,
GA_PointGroup outpoints = nullptr,
const UT_Array< GA_Attribute * > *  connect_attrib = nullptr 
)

Collapse Edges.

void GU_Detail::edgeCrease ( const GU_EdgeCreaseParms parms)

Adds crease weights to edges.

void GU_Detail::edgeSplit ( const GU_SplitLocArray splitlocs,
bool  quadcut = false,
bool  forcecut = true,
GA_EdgeGroup outedges = 0,
float  tolerance = SYS_FTOLERANCE,
bool  quadcomplete = false,
bool  modifyGdp = true,
UT_Fpreal32Array outPositions = nullptr,
bool  fixEnds = false 
)

Splits edges This is the main method for the PolySplit SOP. The splitlocs are the positions along which you wish to split polygons. When quadcut is false, the Shortest Path algorithm is used, otherwise the Quad Cut algorithm is used. The forcecut flag is used with the Shortest Path algorithm to force it to perform cuts where the initial cut has failed. To form a complete path of edges, supply the first location again as the last location in the splitlocs array. If quadcomplete is true and quadcut is false, then in certain cases extra edges will be inserted so that faces which began as quads get split into faces which are quads. If outPositions is set, it will be filled with a list of points in the path in RE_PRIM_LINES fashion. If fixEnds is set, either end of the path that is on a face will be given an extra segment to connect it to the nearest point to ensure that the resulting polygons don't self-intersect.

int GU_Detail::endCap ( GEO_Hull hull,
const GU_CapParms parms 
)

This puts endcaps on the specified hull.

int GU_Detail::endCap ( GEO_Face face,
const GU_CapParms parms 
)
GU_ERROR GU_Detail::error ( ) const
inline

Error Routines

Definition at line 1779 of file GU_Detail.h.

int GU_Detail::extract ( float uunit,
int  ulen,
float vunit,
int  vlen,
const GA_PrimitiveGroup primGroup = 0,
GA_PointGroup newPoints = 0,
int  op = 0,
int  keepOriginal = 0,
int  atbreakpoints = 0,
int  use_arc_length = 0,
DomainScaleAttribs  uscale = DomainScaleAttribs(),
DomainScaleAttribs  vscale = DomainScaleAttribs() 
)

op = {0 = isoparms, 1 = points, 2 = profiles}

void GU_Detail::extractIsoParms ( float uunit,
int  ulen,
float vunit,
int  vlen,
GA_PrimitiveGroup newPrims = 0,
const GA_PrimitiveGroup primGroup = 0,
DomainScaleAttribs  uscale = DomainScaleAttribs(),
DomainScaleAttribs  vscale = DomainScaleAttribs() 
)

methods to refine face and hull types

void GU_Detail::extractIsoParmsAtBreak ( float uunit,
int  ulen,
float vunit,
int  vlen,
GA_PrimitiveGroup newPrims = 0,
const GA_PrimitiveGroup primGroup = 0,
DomainScaleAttribs  uscale = DomainScaleAttribs(),
DomainScaleAttribs  vscale = DomainScaleAttribs() 
)

methods to refine face and hull types

void GU_Detail::extractPoints ( float uunit,
int  ulen,
float vunit,
int  vlen,
GA_PointGroup newPoints = 0,
const GA_PrimitiveGroup primGroup = 0,
bool  use_arc_length = false,
DomainScaleAttribs  uscale = DomainScaleAttribs(),
DomainScaleAttribs  vscale = DomainScaleAttribs() 
)

methods to refine face and hull types

void GU_Detail::extractPointsAtBreak ( float uunit,
int  ulen,
float vunit,
int  vlen,
GA_PointGroup newPoints = 0,
const GA_PrimitiveGroup primGroup = 0,
bool  use_arc_length = false,
DomainScaleAttribs  uscale = DomainScaleAttribs(),
DomainScaleAttribs  vscale = DomainScaleAttribs() 
)

methods to refine face and hull types

void GU_Detail::extractProfiles ( float uunit,
int  ulen,
float vunit,
int  vlen,
const GA_PrimitiveGroup primGroup = 0,
DomainScaleAttribs  uscale = DomainScaleAttribs(),
DomainScaleAttribs  vscale = DomainScaleAttribs() 
)

methods to refine face and hull types

void GU_Detail::extractProfilesAtBreak ( float uunit,
int  ulen,
float vunit,
int  vlen,
const GA_PrimitiveGroup primGroup = 0,
DomainScaleAttribs  uscale = DomainScaleAttribs(),
DomainScaleAttribs  vscale = DomainScaleAttribs() 
)

methods to refine face and hull types

void GU_Detail::extrude ( GU_ExtrudeParms parms)

inset and extrude a face

GA_Size GU_Detail::fastConsolidateNormals ( fpreal  distance,
const GA_PointGroup ptGrp = 0,
bool  accurate = false 
)
GA_Size GU_Detail::fastConsolidatePoints ( fpreal  distance,
const GA_PointGroup ptGrp = 0,
bool  mark = false,
bool  accurate = false 
)

Performs fast consolidation by calling onlyConsolidatePoints. By default, calls removeUnused when done to remove any unused points When deleteConsOnly is set, then only consolidated points are removed.

int GU_Detail::fastConsolidatePointUVs ( float  distance,
const GA_PointGroup ptGrp,
const GU_MetricType  metric,
int  method,
UT_Vector3 uvw 
)

Consolidate UV attributes within a specified distance. This distance can be in UV space or XYZ space. There are various methods of placing the consolidated UVs.

  metric:         0 => UV space
                  1 => XYZ space

  method:         0 => Average
                  1 => First in Group
                  2 => Specify uvw coordinate  
int GU_Detail::fastConsolidatePointUVs ( const GA_RWHandleV3 uvattrib,
float  distance,
const GA_PointGroup ptGrp,
const GU_MetricType  metric,
int  method,
UT_Vector3 uvw 
)
int GU_Detail::fastConsolidateVertexUVs ( float  distance,
const GA_VertexGroup vtxGrp,
const GU_MetricType  metric,
int  method,
UT_Vector3 uvw 
)
int GU_Detail::fastConsolidateVertexUVs ( const GA_RWHandleV3 uvattrib,
float  distance,
const GA_VertexGroup vtxGrp,
const GU_MetricType  metric,
int  method,
UT_Vector3 uvw 
)
int GU_Detail::fillet ( GU_FilletParms parms,
int count 
)

Fillet a set of faces/hulls Return 0 if OK, -1 otherwise (non face/hull types)

GEO_Hull* GU_Detail::filletRound ( GU_RoundFilletParms parms)

Generate a rounded fillet:

void GU_Detail::filletRoundNetwork ( const UT_RefMatrix< GEO_Primitive * > &  facematrix,
GU_RoundFilletParms parms 
)

NOTE: The first 5 columns of the matrix must be GEO_Curve*, and the other 2 columns of the matrix must be GEO_TPSurf*.

GEO_Hull* GU_Detail::filletTrims ( GU_TrimFilletParms parms,
int count 
)

Generate a fillet between two curves on surfaces:

void GU_Detail::findBoundaryPoints ( UT_BitArray isboundary,
bool  checkuv,
const RingRef ringref = nullptr,
const UT_StringHolder uvattribname = "uv"_UTsh 
) const

This initializes the passed in int array so it is 0 where points are a boundary and 1 where they are not a boundary. This handles meshes, etc, properly. It doesn't handle non-manifold properly. The checkuv flag determines if it should check uv boundaries, if set, it will mark as 1 any points which have differing UV texture coordinates in their vertices. For efficiency, you may call buildRingZero() once and pass the built data structures to it.

GA_Size GU_Detail::findNonPlanar ( GA_PrimitiveGroup nonplanargroup,
float  tol = 0.0001F,
const GA_PrimitiveGroup searchprimgroup = nullptr 
)

Add non-planar polygon primitives to nonplanargroup.

void GU_Detail::findSelectionBoundaryPoints ( const UT_BitArray pointselection,
UT_BitArray isboundary 
) const

This takes an array which should be the same size as the number of points, and has 1 wherever a point is to be considered selected. It then initializes & sets 1 in the isboundary array any point which is on the 8-way boundary of the selection.

void GU_Detail::fit2DCurve ( const GU_Detail source,
float  error_squared,
GA_PrimitiveGroup primGroup = 0 
)

fit a sequence of discrete points to a series of bezier curves

void GU_Detail::flipEdges ( const GA_EdgeGroup edgegroup,
int  rotations = 1,
bool  rotattribs = false,
GA_EdgeGroup outedges = 0 
)

Flips edges.

void GU_Detail::forceCookSelection ( GU_SelectionHandle  sel)

Do not use this method unless you know EXACTLY what you are doing. It forces the use of the supplied cook selection.

void GU_Detail::fractalize ( int  seed = 1,
float  roughness = 0.6F,
float  scaleby = 1,
int  divs = 1,
int  fixedBoundry = 1,
int  useVtxNorms = 0,
const char *  nmlattribname = nullptr,
float  nx = 0,
float  ny = 0,
float  nz = 1,
const GA_PrimitiveGroup fractalGroup = 0 
)
bool GU_Detail::getCachedBounds ( UT_BoundingBox box) const

Get cached bounding box. This uses the meta cache count and the data id on P to determine whether the bounds need to be recomputed.

It's possible that the cached bounds might be invalid in some cases (where the geometry is modified without updates to the meta cache count or the data id on P.

bool GU_Detail::getCachedVisibleBounds ( UT_BoundingBox box) const

Get cached visible bounding box

This uses the meta cache count and the data id on P to determine whether the bounds need to be recomputed.

It's possible that the cached bounds might be invalid in some cases (where the geometry is modified without updates to the meta cache count or the data id on P.

GA_GroupType GU_Detail::getCookSelectionGroupType ( ) const

Returns the group type of the current cook selection, or GA_GROUP_INVALID if there isn't one.

GA_Size GU_Detail::getDirtyData ( GA_PrimitiveGroup returnGrp,
const GA_PrimitiveGroup primGrp = 0,
bool  checkRepPoints = false,
float  tol = 0.001F 
)

Identify dirty data, which is the degenerate primitives that would be deleted by cleanData. Return them in the returnGrp, and return the number of dirty primitives. If returnGrp is nullptr then only return the count.

static void GU_Detail::getFileExtensions ( UT_StringArray result)
static

Create a list of all internal file extensions.

static const GEO_IOTranslator* GU_Detail::getIOTranslator ( exint  i)
static

Methods for registering and unregistering geometry io converters.

static exint GU_Detail::getIOTranslatorCount ( )
static

Methods for registering and unregistering geometry io converters.

const AttribValueLookupTable* GU_Detail::getLookupTable ( const GA_Attribute attrib) const
int64 GU_Detail::getMemoryUsage ( bool  inclusive) const
overridevirtual

Compute memory usage (includes all shared memory)

Reimplemented from GEO_Detail.

Examples:
SIM/SNOW_Solver.C.
void GU_Detail::getOBBox ( const GA_PrimitiveGroup grp,
UT_Matrix4 transform,
UT_Vector3 radii 
) const

Find the oriented bounding box that contains the given primitives. The box is returned as a rotate+translate matrix to the box's orientation and centre, and a vector containing the boxes extents along its primary axes. The extents are radii, ie, one-half of what a bounding box size() would be.

Returns zero radii if the group contains no primitives.

void GU_Detail::getOBBoxForPoints ( const GA_PointGroup grp,
UT_OBBoxD obb,
int  refinement_iterations = 6 
) const

Return the oriented bounding box that contains the given points, returning a UT_OBBox, which contains translation and rotation information

void GU_Detail::getOBBoxForPrims ( const GA_PrimitiveGroup grp,
UT_OBBoxD obb,
int  refinement_iterations = 6 
) const

Return the oriented bounding box that contains the given primitives, returning a UT_OBBox, which contains translation and rotation information

GU_SelectionHandle GU_Detail::getOrCreateCookSelection ( GA_GroupType  group_type,
bool  ordered = false,
bool  clear_matching = false 
)

Returns a cook selection to fill in. If an already existing cook selection exists, of the wrong type, it is removed, and a new one created. Otherwise the existing cook selection is optionally cleared and returned.

The cook selection is the selection being manipulated and displayed by a node.

GA_Range GU_Detail::getRangeByValue ( const GA_Attribute attrib,
exint  v 
) const
GA_Range GU_Detail::getRangeByValue ( const GA_Attribute attrib,
const UT_StringRef v 
) const
const AttribSingleValueLookupTable* GU_Detail::getSingleLookupTable ( const GA_Attribute attrib) const
static int GU_Detail::getSubdividedCV ( GEO_Hull hull,
int  udir,
float  unit 
)
static

Refine the hull at the unit domain value and return the row/col index where it occurs

static int GU_Detail::getSubdividedCV ( GEO_Face face,
float  unit 
)
static

Refine the hull at the unit domain value and return the row/col index where it occurs

static GEO_IOTranslator* GU_Detail::getSupportedFormat ( const char *  filename)
static

Allocate an IO handler for a filename, or return nullptr if the handler is the classic format. The returned translator must be deleted. The easiest way to do this is with a UT_UniquePtr:

if (xlate)
xlate->fileSave(gdp, ...);
exint GU_Detail::getUniqueIntegerValue ( const GA_Attribute attrib,
exint  idx 
) const
const UT_StringHolder& GU_Detail::getUniqueStringValue ( const GA_Attribute attrib,
exint  idx 
) const
exint GU_Detail::getUniqueValueCount ( const GA_Attribute attrib) const

These methods assume no changes have been made to the geometry since the last call to incrementMetaCacheCount(). "attrib" should refer to a string or integer attribute.

GEO_Hull* GU_Detail::gordon ( GEO_SurfaceType  surftype,
int  accurate,
const GA_PrimitiveGroup ufaces,
const GA_PrimitiveGroup vfaces,
int  reparameterize = 0 
)

Create a Gordon surface out of the given bi-linear network of faces. The faces don't have to be the same type or order or anything. We return the surface if OK and 0 otherwise. If the u or v faces contain only one face, we automatically generate a final curve. If both u faces and vfaces have 1 curve or one has 2 and the other 1, we generate a Coons surface. "accurate" is used when the curves do not intersect (i.e. when we must compute their min distances).

GEO_Hull* GU_Detail::gordon ( GEO_SurfaceType  surftype,
int  accurate,
const UT_Array< GEO_Primitive * > &  uprims_in,
const UT_Array< GEO_Primitive * > &  vprims_in,
GU_SkinCache skin_cache,
int  reparameterize = 0 
)

Create a Gordon surface out of the given bi-linear network of faces. The faces don't have to be the same type or order or anything. We return the surface if OK and 0 otherwise. If the u or v faces contain only one face, we automatically generate a final curve. If both u faces and vfaces have 1 curve or one has 2 and the other 1, we generate a Coons surface. "accurate" is used when the curves do not intersect (i.e. when we must compute their min distances).

bool GU_Detail::hasShallowCookSelectionReference ( const GA_Group group) const

Returns whether this detail has a shallow cook selection referencing the specified group.

int GU_Detail::info ( std::ostream &  os,
int  max_group_lines = 15,
bool  pretty = false,
const UT::ArraySet< const void * > *  dontcounttheseblocks = 0,
bool  instanced = false 
) const

Get information about a GU_Detail If maxlines < 0, there will be no limit to the number of groups If overridememusage is positive, it will be used rather than the getMemoryUsage().

void GU_Detail::info ( UT_WorkBuffer wbuf,
int  max_group_lines = 15,
bool  pretty = false,
const UT::ArraySet< const void * > *  dontcounttheseblocks = 0,
bool  instanced = false 
) const

Get information text for the geometry. This will append to the work buffer.

GEO_Curve* GU_Detail::interpCurveBreakpoints ( const GEO_Face face,
const GA_PrimitiveTypeId type = GEO_PRIMNURBCURVE,
int  order = 4,
GA_ParameterizationType  parmType = GA_PARAMETERIZATION_CHORD 
)

Fit a curve through its breakpoints

GEO_Curve* GU_Detail::interpCurveBreakpoints ( const GA_OffsetList point_offsets,
const GA_PrimitiveTypeId type = GEO_PRIMNURBCURVE,
int  order = 4,
int  wrapped = 0,
GA_ParameterizationType  parmType = GA_PARAMETERIZATION_CHORD 
)

Fit a curve through its breakpoints

GEO_Curve* GU_Detail::interpCurveBreakpoints ( const UT_Vector4Array v4Data,
const GA_PrimitiveTypeId type = GEO_PRIMNURBCURVE,
int  order = 4,
int  wrapped = 0,
GA_ParameterizationType  parmType = GA_PARAMETERIZATION_CHORD,
const bool  elevate_order_if_required = true 
)

Fit a curve through its breakpoints

GEO_Curve* GU_Detail::interpCurveGlobal ( const GEO_Face face,
const GA_PrimitiveTypeId type = GEO_PRIMNURBCURVE,
int  order = 4,
GA_ParameterizationType  parmType = GA_PARAMETERIZATION_CHORD,
GA_KnotSpaceType  knotSpaceType = GA_KNOT_SPACE_AVERAGING 
)

interpolation data points

GEO_Curve* GU_Detail::interpCurveGlobal ( const GA_OffsetList point_offsets,
const GA_PrimitiveTypeId type = GEO_PRIMNURBCURVE,
int  order = 4,
int  wrapped = 0,
GA_ParameterizationType  parmType = GA_PARAMETERIZATION_CHORD,
GA_KnotSpaceType  knotSpaceType = GA_KNOT_SPACE_AVERAGING 
)

interpolation data points

GEO_Curve* GU_Detail::interpCurveGlobal ( const GA_Range point_range,
const GA_PrimitiveTypeId type = GEO_PRIMNURBCURVE,
int  order = 4,
int  wrapped = 0,
GA_ParameterizationType  parmType = GA_PARAMETERIZATION_CHORD,
GA_KnotSpaceType  knotSpaceType = GA_KNOT_SPACE_AVERAGING 
)

interpolation data points

GEO_Curve* GU_Detail::interpCurveGlobal ( const UT_Vector4Array v4Data,
const GA_PrimitiveTypeId type = GEO_PRIMNURBCURVE,
int  order = 4,
int  wrapped = 0,
GA_ParameterizationType  parmType = GA_PARAMETERIZATION_CHORD,
GA_KnotSpaceType  knotSpaceType = GA_KNOT_SPACE_AVERAGING,
const bool  elevate_order_if_required = true 
)

interpolation data points

GEO_Curve* GU_Detail::interpCurveLocal ( const GEO_Face face,
const GA_PrimitiveTypeId type = GEO_PRIMBEZCURVE,
int  order = 4,
int  corner = 0 
)

interpolation data points

GEO_Curve* GU_Detail::interpCurveLocal ( const UT_Array< GA_Offset > &  goData,
const GA_PrimitiveTypeId type = GEO_PRIMBEZCURVE,
int  order = 4,
int  wrapped = 0,
int  corner = 0 
)

interpolation data points

GEO_Curve* GU_Detail::interpCurveLocal ( const UT_Vector4Array v4Data,
const GA_PrimitiveTypeId type = GEO_PRIMBEZCURVE,
int  order = 4,
int  wrapped = 0,
int  corner = 0 
)

interpolation data points

GEO_TPSurf* GU_Detail::interpSurfBreakpoints ( const GEO_Hull mesh,
const GA_PrimitiveTypeId type = GEO_PRIMNURBSURF,
int  uOrder = 4,
int  vOrder = 4,
GEO_SurfaceType  sType = GEO_PATCH_QUADS,
GA_ParameterizationType  uParmType = GA_PARAMETERIZATION_CHORD,
GA_ParameterizationType  vParmType = GA_PARAMETERIZATION_CHORD,
GA_KnotSpaceType  uKnotSpaceType = GA_KNOT_SPACE_AVERAGING,
GA_KnotSpaceType  vKnotSpaceType = GA_KNOT_SPACE_AVERAGING,
const UT_Vector uParmValues = 0,
const UT_Vector vParmValues = 0 
)

interpolation data points

GEO_TPSurf* GU_Detail::interpSurfBreakpoints ( const GA_OffsetMatrix goMesh,
const GA_PrimitiveTypeId type = GEO_PRIMNURBSURF,
int  uOrder = 4,
int  vOrder = 4,
bool  uWrapped = false,
bool  vWrapped = false,
GEO_SurfaceType  sType = GEO_PATCH_QUADS,
GA_ParameterizationType  uParmType = GA_PARAMETERIZATION_CHORD,
GA_ParameterizationType  vParmType = GA_PARAMETERIZATION_CHORD,
GA_KnotSpaceType  uKnotSpaceType = GA_KNOT_SPACE_AVERAGING,
GA_KnotSpaceType  vKnotSpaceType = GA_KNOT_SPACE_AVERAGING,
const UT_Vector uParmValues = 0,
const UT_Vector vParmValues = 0 
)

interpolation data points

GEO_TPSurf* GU_Detail::interpSurfGlobal ( const GEO_Hull mesh,
const GA_PrimitiveTypeId type = GEO_PRIMNURBSURF,
int  uOrder = 4,
int  vOrder = 4,
GEO_SurfaceType  sType = GEO_PATCH_QUADS,
GA_ParameterizationType  uParmType = GA_PARAMETERIZATION_CHORD,
GA_ParameterizationType  vParmType = GA_PARAMETERIZATION_CHORD,
GA_KnotSpaceType  uKnotSpaceType = GA_KNOT_SPACE_AVERAGING,
GA_KnotSpaceType  vKnotSpaceType = GA_KNOT_SPACE_AVERAGING,
const UT_Vector uParmValues = 0,
const UT_Vector vParmValues = 0 
)

interpolation data points

GEO_TPSurf* GU_Detail::interpSurfGlobal ( const GA_OffsetMatrix goMesh,
const GA_PrimitiveTypeId type = GEO_PRIMNURBSURF,
int  uOrder = 4,
int  vOrder = 4,
bool  uWrapped = false,
bool  vWrapped = false,
GEO_SurfaceType  sType = GEO_PATCH_QUADS,
GA_ParameterizationType  uParmType = GA_PARAMETERIZATION_CHORD,
GA_ParameterizationType  vParmType = GA_PARAMETERIZATION_CHORD,
GA_KnotSpaceType  uKnotSpaceType = GA_KNOT_SPACE_AVERAGING,
GA_KnotSpaceType  vKnotSpaceType = GA_KNOT_SPACE_AVERAGING,
const UT_Vector uParmValues = 0,
const UT_Vector vParmValues = 0 
)

interpolation data points

GEO_Primitive* GU_Detail::intersectRay ( const UT_Vector3 o,
const UT_Vector3 d,
float  tmax = 1E17F,
float  tol = 1E-12F,
float dist = 0,
UT_Vector3 pos = 0,
UT_Vector3 nml = 0,
int  accurate = 0,
float u = 0,
float v = 0,
int  ignoretrim = 1 
) const

intersectRay will find the closest intersection with a primitive in the detail. If the dist pointer is nil, then the first intersection found will be returned (instead of the closest). The nml will contain the normal for the primitive at the point of intersection. Accuracy of 0 is inaccurate, 1 is normal, 2 engages Algebraic pruning where available.

Parameters
oThe ray origin
dThe ray directin
tmaxThis can be used to limit the ray to intersections within the given radius.
tolIntersection tolerance
distReturn the distance from the origin to the hit
posReturn the hit position (i.e. o + dist*d)
nmlReturn the normal of the primitive at the hit position
accurateDetermine primitive intersection algorithms for NURBS
uThe u parametric coordinate of the hit surface
vThe v parametric coordinate of the hit surface
ignoretrimIgnore trim inside/out tests for trimmed surfaces.
Warning
If the dist parameter is 0 the first hit found will be returned. This may not be the closest hit. This can be used to perform a quick check to see if any primitives intersect the ray (i.e. for shadow casting).
This function iterates over all primitives without any acceleration structure. If you need to send multiple rays, please see GU_RayIntersect.
static bool GU_Detail::isFormatSupported ( const char *  filename)
static

Returns true if filename is a recognized extension.

GEO_Primitive* GU_Detail::join ( GU_JoinParms p,
int count 
)

Join more faces or surfaces together.

int GU_Detail::lattice ( const GU_Detail source,
const GU_Detail rest,
const GU_Detail deform,
int  xdiv,
int  ydiv,
int  zdiv,
const GA_PointGroup ptgroup = 0,
UT_BitArray deform_history = nullptr,
GU_LatticeType  type = GU_LATTICE_BEZIER 
)

Creates a deformed copy of a source detail given a pair of rest and deform details. Return 1 if a pasted surface was deformed, else 0. If 'deform_history' is passed in, every time we deform a point from our source, we mark this by setting the bit in 'deform_history' whose index corresponds to the point's number to 1. Useful if you want to know which points we deformed.

static void GU_Detail::loadIODSOs ( )
static
void GU_Detail::loft ( GU_LoftParms p,
const GA_PointGroup g1,
const GA_PointGroup g2 
)

Loft (stitch) a number of polygons together without changing the number of points in the detail.

void GU_Detail::loft ( GU_LoftParms p,
const GA_PrimitiveGroup group = 0 
)

Loft (stitch) a number of polygons together without changing the number of points in the detail.

static int GU_Detail::loftHulls ( GEO_Hull left,
GEO_Hull right,
float  lwidth1,
float  lwidth2,
float  rwidth1,
float  rwidth2,
int  sharp,
int lstart,
int rstart,
int lmax,
int rmax,
int  loftU,
GA_NUBBasis nubbasis 
)
static

Loft a subsection of each hull and update the vertex indices where the subsection occurs. Does partial nurb merging if the bases is given Assumes the two hulls have been properly reconfigured.

void GU_Detail::lsystem ( GU_LSystemParms lp)

Create geometry through premise and rule substitution.

int GU_Detail::magnet ( const GU_MagnetParms parms)

All points of the gdp are deformed according to the meta source field that surrounds it. The deformation is controlled by a transformation matrix.

int GU_Detail::makeFacesCompatible ( const GA_PrimitiveGroup infaces,
GA_PrimitiveGroup outfaces,
bool  mustopen = false,
bool  mustends = false,
bool  nonrational = false,
GA_PrimCompat::TypeMask extratype = 0,
bool  equalcvs = true 
)

Incompatible faces in infaces are made compatible and set in outfaces. Return 0 of OK, -1 otherwise. If extratype is not nil and the highest face type of the infaces is less than *extratype, replace the common type by *extratype. In the method that takes 2 input groups, we make sure that the primitives in the 2 groups have the same type. Set equalcvs to true make them all have the same number of CVs too.

int GU_Detail::makeFacesCompatible ( const UT_Array< GEO_Primitive * > &  prims_in,
UT_Array< GEO_Primitive * > &  prims_out,
bool  mustopen = false,
bool  mustends = false,
bool  nonrational = false,
GA_PrimCompat::TypeMask extratype = 0,
bool  equalcvs = true 
)

Incompatible faces in infaces are made compatible and set in outfaces. Return 0 of OK, -1 otherwise. If extratype is not nil and the highest face type of the infaces is less than *extratype, replace the common type by *extratype. In the method that takes 2 input groups, we make sure that the primitives in the 2 groups have the same type. Set equalcvs to true make them all have the same number of CVs too.

int GU_Detail::makeFacesCompatible ( const GA_PrimitiveGroup infacesU,
const GA_PrimitiveGroup infacesV,
GA_PrimitiveGroup outfacesU,
GA_PrimitiveGroup outfacesV,
bool  mustopen = false,
bool  mustends = false,
bool  nonrational = false,
GA_PrimCompat::TypeMask extratype = 0,
bool  equalcvs = true 
)

Incompatible faces in infaces are made compatible and set in outfaces. Return 0 of OK, -1 otherwise. If extratype is not nil and the highest face type of the infaces is less than *extratype, replace the common type by *extratype. In the method that takes 2 input groups, we make sure that the primitives in the 2 groups have the same type. Set equalcvs to true make them all have the same number of CVs too.

int GU_Detail::makeFacesCompatible ( const UT_Array< GEO_Primitive * > &  ufaces_array,
const UT_Array< GEO_Primitive * > &  vfaces_array,
UT_Array< GEO_Primitive * > &  ucfaces_array,
UT_Array< GEO_Primitive * > &  vcfaces_array,
bool  mustopen = false,
bool  mustends = false,
bool  nonrational = false,
GA_PrimCompat::TypeMask extratype = 0,
bool  equalcvs = true 
)

Incompatible faces in infaces are made compatible and set in outfaces. Return 0 of OK, -1 otherwise. If extratype is not nil and the highest face type of the infaces is less than *extratype, replace the common type by *extratype. In the method that takes 2 input groups, we make sure that the primitives in the 2 groups have the same type. Set equalcvs to true make them all have the same number of CVs too.

GA_Size GU_Detail::makePrimsPlanar ( const GA_PrimitiveGroup grp = 0)

Make each primitive planar, returns the number of primitives xformed.

int GU_Detail::makeSurfacesCompatible ( const GA_PrimitiveGroup insurfs,
GA_PrimitiveGroup outsurfs,
bool  mustopenu = false,
bool  mustopenv = false,
bool  mustendsu = false,
bool  mustendsv = false,
bool  equalcvsu = true,
bool  equalcvsv = true,
GA_PrimCompat::TypeMask extratype = 0 
)

Incompatible surfaces in insurfs are made compatible and set in outsurfs. Return 0 of OK, -1 otherwise. If extratype is not nil and the highest surface type of the insurfs is less than *extratype, replace the common type by *extratype. Set equalcvs to true make them all have the same number of CVs too.

static bool GU_Detail::matchASCIIFileExtension ( const UT_StringRef filename)
static

Check to see whether the file extension matches a known ASCII file extension. The argument is the full filename.

static bool GU_Detail::matchBinaryFileExtension ( const UT_StringRef filename)
static

Check to see whether the file extension matches a known binary file extension. The argument is the full filename.

GU_PrimMesh* GU_Detail::meshCube ( int  xdiv,
int  ydiv,
int  zdiv,
float  xmin = -0.5F,
float  xmax = 0.5F,
float  ymin = -0.5F,
float  ymax = 0.5F,
float  zmin = -0.5F,
float  zmax = 0.5F,
GEO_SurfaceType  type = GEO_PATCH_QUADS,
bool  consolidate = false 
)
GU_PrimMesh* GU_Detail::meshGrid ( int  rows,
int  cols,
float  xsize = 1,
float  ysize = 1,
float  xc = 0,
float  yc = 0,
float  zc = 0,
GU_OrientationType  plane = GU_PLANE_XY,
GEO_SurfaceType  type = GEO_PATCH_QUADS,
int  wrapu = 0,
int  wrapv = 0 
)
int GU_Detail::nonLinearDeform ( GU_DeformType  type,
const GU_TwistParms parms,
int pasted 
)

Twist operations. The method returns 0 if everything goes OK, else -1. "pasted" returns 1 if at least one pasted surface was involved in the deformation, else 0.

GU_PrimNURBSurf* GU_Detail::nurbCube ( int  xdiv,
int  ydiv,
int  zdiv,
int  orderx = 4,
int  ordery = 4,
int  orderz = 4,
float  xmin = -0.5F,
float  xmax = 0.5F,
float  ymin = -0.5F,
float  ymax = 0.5F,
float  zmin = -0.5F,
float  zmax = 0.5F,
GEO_SurfaceType  type = GEO_PATCH_QUADS,
bool  consolidate = false 
)
GU_PrimNURBSurf* GU_Detail::nurbGrid ( int  rows,
int  cols,
int  orderu = 4,
int  orderv = 4,
int  interpEndsU = 1,
int  interpEndsV = 1,
float  xsize = 1,
float  ysize = 1,
float  xc = 0,
float  yc = 0,
float  zc = 0,
GU_OrientationType  plane = GU_PLANE_XY,
GEO_SurfaceType  type = GEO_PATCH_QUADS,
int  wrapu = 0,
int  wrapv = 0 
)
GEO_Hull* GU_Detail::offset ( const GU_OffsetParms &  parms)

NOTE: This is something specific to NURBS surfaces and it uses pasted surface primitives, so it's probably not what you want!!! Creates an offset surface from the specified surface & radius.

GA_Size GU_Detail::onlyConsolidatePoints ( fpreal  distance,
const GA_PointGroup ptgrp = 0,
bool  mark = false,
bool  deleteconsolidated = false,
OnlyConsGroupPropagateType  grouppropagate = ONLYCONS_GRP_PROP_LEAST,
bool  accurate = false 
)

This does fast consolidation but does not call removeUnused when done. This means that degenerate primitives will be left along with orphaned points. If deleteconsolidated is set, the consolidated points only will be deleted. grouppropagate controls which groups the new points will belong to.

void GU_Detail::orient ( const GA_PrimitiveGroup group = 0)

orient all the polygonal faces to have the same winding direction

GA_Offset GU_Detail::pointGrid ( int  rows,
int  cols,
float  xsize = 1,
float  ysize = 1,
float  xc = 0,
float  yc = 0,
float  zc = 0,
GU_OrientationType  plane = GU_PLANE_XY,
GA_Offset  startpoint = GA_INVALID_OFFSET 
)

Creates a grid of points in this detail. NOTE: If startpoint is valid, it must refer to a contiguous block of rows*cols point offsets, in which case, this just sets point positions, so can be used on polygon or polysoup grids with a consistent point order too. NOTE: When plane is GU_PLANE_XY, cols corresponds with x, and rows corresponds with y.

void GU_Detail::pointInset ( const GA_PointGroup ptgroup,
float  insetdist,
float  nmldist 
)

Insets points.

void GU_Detail::polyExtrude ( const GU_PolyExtrudeParms parms)

Extrude faces, uses local face spaces and tries to mirror extrusions.

GA_Offset GU_Detail::polyGrid ( int  rows,
int  cols,
float  xsize = 1,
float  ysize = 1,
float  xc = 0,
float  yc = 0,
float  zc = 0,
GU_OrientationType  plane = GU_PLANE_XY,
GEO_SurfaceType  type = GEO_PATCH_QUADS 
)

Creates a grid of polygons in this detail. Returns the offset of the first polygon primitive.

void GU_Detail::polyIsoSurface ( float(*)(const UT_Vector3 &, void *)  ptOutside,
void data,
const UT_BoundingBox bbox,
int  xdiv,
int  ydiv,
int  zdiv,
bool  makepolysoup = false 
)

poly-iso surfaces To find the primitives created, place GA_IndexMap::Marker marker(gdp->getPrimitiveMap()); before the call, and call marker.getRange() afterward.

Examples:
standalone/geoisosurface.C.
GU_PrimPoly* GU_Detail::polymeshCube ( int  xdiv,
int  ydiv,
int  zdiv,
float  xmin = -0.5F,
float  xmax = 0.5F,
float  ymin = -0.5F,
float  ymax = 0.5F,
float  zmin = -0.5F,
float  zmax = 0.5F,
GEO_SurfaceType  type = GEO_PATCH_QUADS,
bool  consolidate = false 
)
bool GU_Detail::polyPatch ( GU_PolypatchParms parms,
const GA_PrimitiveGroup primGroup = 0 
)

approximate a patch by using polygonal or mesh hull inputs Returns true on success, else false if an error occurred.

int GU_Detail::polyReduce ( GU_PolyReduceParms parms,
const GA_PrimitiveGroup primGroup = 0,
int pointIndexTable = 0 
)

reduce the number of polygons in a detail:

void GU_Detail::polySoup ( const GEO_PolySoupParms parms,
const GU_Detail srcdetail 
)

Create polygon soup(s), i.e. GU_PrimPolySoup, where possible in this detail.

GU_PrimPolySoup* GU_Detail::polySoupGrid ( int  rows,
int  cols,
float  xsize = 1,
float  ysize = 1,
float  xc = 0,
float  yc = 0,
float  zc = 0,
GU_OrientationType  plane = GU_PLANE_XY,
GEO_SurfaceType  type = GEO_PATCH_QUADS 
)

Creates a grid that is a single polygon soup in this detail.

void GU_Detail::polySpline ( GU_PolysplineParms parms,
const GA_PrimitiveGroup primGroup = 0,
bool  deleteAll = true 
)

approximate a spline by using polygonal hull inputs deletes existing polygons if deleteAll is true

void GU_Detail::proximityPoints ( GA_IndexMap points,
const UT_Vector3 point 
)
inline

Sort points or primitives by proximity to a position

Definition at line 1027 of file GU_Detail.h.

void GU_Detail::proximityPoints ( GA_IndexMap points,
const GA_Range range,
const UT_Vector3 point 
)

Sort points or primitives by proximity to a position

void GU_Detail::proximityPrims ( GA_IndexMap primitives,
const UT_Vector3 point 
)
inline

Sort points or primitives by proximity to a position

Definition at line 1030 of file GU_Detail.h.

void GU_Detail::proximityPrims ( GA_IndexMap primitives,
const GA_Range range,
const UT_Vector3 point 
)

Sort points or primitives by proximity to a position

void GU_Detail::proximityToPointList ( const UT_Vector3 point)
inline

Sort points or primitives by proximity to a position

Definition at line 1039 of file GU_Detail.h.

void GU_Detail::proximityToPrimitiveList ( const UT_Vector3 point)
inline

Sort points or primitives by proximity to a position

Definition at line 1041 of file GU_Detail.h.

void GU_Detail::rails ( GU_RailParms  parms)
void GU_Detail::refine ( float uunit,
int  ulen,
float vunit,
int  vlen,
int  countu = 1,
int  countv = 1,
int  arcspacing = 0,
const GA_PrimitiveGroup primGroup = 0 
)

methods to refine face and hull types

static GA_IntrinsicManager::Registrar GU_Detail::registerIntrinsics ( GA_PrimitiveFactory factory)
staticprotected

Register intrinsic attributes.

static void GU_Detail::registerIOTranslator ( GEO_IOTranslator trans)
static

Methods for registering and unregistering geometry io converters.

Examples:
field3d/GEO_Field3DTranslator.C, and GEO/GEO_VoxelTranslator.C.
void GU_Detail::removeCookSelection ( )

Removes the current cook selection from this detail. Since the selection is a shared object, there's no guarantee that it will be immediately destroyed, but only that this detail is no longer associated with it.

void GU_Detail::removeInlinePoints ( float  tol,
const GA_PrimitiveGroup prims,
const GA_PointGroup pts = nullptr 
)

Remove points from polygons if they lie on (within a tolerance) the line connecting the previous and next points.

GA_Size GU_Detail::removeZeroAreaFaces ( GA_PrimitiveGroup grp,
bool  ignoreOpenFaces = false,
float  tolerance = 0.001F,
bool  onlyPolys = true 
)

Remove zero area polygons Returns number of polygons removed

GA_Size GU_Detail::removeZeroAreaFaces ( const UT_IntArray primlist,
bool  ignoreOpenFaces = false,
float  tolerance = 0.001F,
bool  onlyPolys = true 
)

Remove zero area polygons Returns number of polygons removed

void GU_Detail::replaceCookSelection ( const GU_Detail src,
GU_CookSelectionReplaceStash *  stash 
)

Replace the current cook selection with a copy of the source detail's, with optimizations to avoid copying things that are the same.

This method is intended to be called as a follow up to replaceWith(), and assumes that this detail is already essentially a copy of the source, possibly with only a subset of the attributes and groups.

An optional GU_CookSelectionReplaceStash, populated by a previous call to stashCookSelectionBeforeReplaceWith(), can allow reusing the original GU_CookSelection instance in certain situations.

void GU_Detail::reverse ( const GA_PrimitiveGroup group = nullptr,
bool  update_attributes = true 
)

Reverse vertices for all primitives in the group This sill also reverse point normals, vertex normals, and correct creaseweight attriutes if update_attributes is requested.

void GU_Detail::reversePointList ( )
inline

Reverse order of points or primitives in the detail.

Definition at line 1019 of file GU_Detail.h.

void GU_Detail::reversePoints ( GA_IndexMap map)
inline

Reverse order of points or primitives in the detail.

Definition at line 1013 of file GU_Detail.h.

void GU_Detail::reversePoints ( GA_IndexMap map,
const GA_Range range 
)

Reverse order of points or primitives in the detail.

void GU_Detail::reversePolys ( const GA_PrimitiveGroup prmGrp = 0)

Reverse polygons.

void GU_Detail::reversePrimitiveList ( )
inline

Reverse order of points or primitives in the detail.

Definition at line 1021 of file GU_Detail.h.

void GU_Detail::reversePrims ( GA_IndexMap map)
inline

Reverse order of points or primitives in the detail.

Definition at line 1015 of file GU_Detail.h.

void GU_Detail::reversePrims ( GA_IndexMap map,
const GA_Range range 
)

Reverse order of points or primitives in the detail.

int GU_Detail::revolve ( const GU_RevolveParms parms,
const GU_CapOptions caps,
int count 
)

Revolves all curves in the given gdp (or only curves in the group if the group is given) around a line given by the center and axis. Only polygonal curves use the divisions. NURBS and Bezier curves are revolved a special way to create a perfectly round surface with a minimum number of revolution copies.

bool GU_Detail::rotateTexture ( float  angle,
const GA_PrimitiveGroup primGroup = 0 
)
bool GU_Detail::rotateTexture ( const UT_StringRef uvattribname,
float  angle,
const GA_PrimitiveGroup primGroup = 0 
)
int GU_Detail::ruled ( GEO_Hull *&  surface,
const GU_RuledParms p,
const GU_CapOptions caps 
)

See GU_Ruled.h for the various closure and interpolation types which are valid. Specifying an orderv of 0 makes the routine come up with a legal default value for the surface.

GA_Detail::IOStatus GU_Detail::saveH9File ( const char *  filename,
const GA_SaveOptions options 
) const
bool GU_Detail::scaleTexture ( float  umult = 1,
float  uoff = 0,
float  vmult = 1,
float  voff = 0,
float  wmult = 1,
float  woff = 0,
const GA_PrimitiveGroup primGroup = 0 
)

The scaleTexture() and rotateTexture() methods are depreciated. Please use the GU_MODIFY_TEX projection and simply create the approprate post-transform. Returns false if the attribute failed to be created, else true.

bool GU_Detail::scaleTexture ( const UT_StringRef uvattribname,
float  umult = 1,
float  uoff = 0,
float  vmult = 1,
float  voff = 0,
float  wmult = 1,
float  woff = 0,
const GA_PrimitiveGroup primGroup = 0 
)
int GU_Detail::setCaps ( GEO_Hull hull,
const GU_CapOptions parms,
int count 
)

This places all caps on the hull.

int GU_Detail::setCaps ( GEO_Face face,
const GU_CapOptions parms,
int count 
)
void GU_Detail::shift ( int  uoffset,
int  voffset,
const GA_PrimitiveGroup group = nullptr 
)

"Rotate" (cycle) the order of vertices for all primitives in the group, by the specified number of places.

void GU_Detail::shiftPointList ( GA_Size  aoffset)
inline

"Rotate" (cycle) the order of points or primitives in the detail, by the specified number of places.

Definition at line 999 of file GU_Detail.h.

void GU_Detail::shiftPoints ( GA_IndexMap map,
GA_Size  offset 
)
inline

"Rotate" (cycle) the order of points or primitives in the detail, by the specified number of places.

Definition at line 991 of file GU_Detail.h.

void GU_Detail::shiftPoints ( GA_IndexMap map,
const GA_Range range,
GA_Size  offset 
)

"Rotate" (cycle) the order of points or primitives in the detail, by the specified number of places.

void GU_Detail::shiftPrimitiveList ( GA_Size  aoffset)
inline

"Rotate" (cycle) the order of points or primitives in the detail, by the specified number of places.

Definition at line 1001 of file GU_Detail.h.

void GU_Detail::shiftPrims ( GA_IndexMap map,
GA_Size  offset 
)
inline

"Rotate" (cycle) the order of points or primitives in the detail, by the specified number of places.

Definition at line 993 of file GU_Detail.h.

void GU_Detail::shiftPrims ( GA_IndexMap map,
const GA_Range range,
GA_Size  offset 
)

"Rotate" (cycle) the order of points or primitives in the detail, by the specified number of places.

void GU_Detail::shrink ( fpreal  distance,
fpreal  clip_tolerance = 0.0001,
fpreal  consilidate_tolerance = 0.001 
)

This routine is originally developed for the Bullet RBD solver to adjust the geometry of a convex 3D polygon to remove the space around the geometry caused by the collision margin required for the Bullet solver.

GEO_Hull* GU_Detail::skin ( GU_SkinParms parms,
GU_SkinCache skin_cache 
)

Generate a skinned surface out of a set of cross-sections. The faces don't have to be the same type or order. We return the surface is OK and 0 otherwise. Specifying a vorder of 0 tells the method to come up with a legal default value for the surface. If "doskin" is true, the cross-sections will be right on the surface; otherwise, we build a ruled surface, which simply steals the curves' CVs and assigns them to the surface.

GEO_Hull* GU_Detail::skin ( const GA_PrimitiveGroup ucfaces,
GEO_SurfaceType  surftype = GEO_PATCH_QUADS,
unsigned  vorder = 0,
int  vwrap = 0,
int  doskin = 1,
int  nprims = -1,
const UT_Vector vParmValues = 0 
)

This restrictive skinning method assumes the faces are of the same type and have the same number of CVs. order 0 means pick most suitable one. If doskin is false, we build a ruled surface. nprims is the number of faces in the group; we compute it if -1. We return the resulting surface and do not delete the input faces. We also assume that if nprims > 2 and vorder != 2 and doskin, all the faces are nonrational. Finally, the provided vParmValues if given specifies what v coordinate each of the provided faces should interpolate.

GEO_Hull* GU_Detail::skin ( const UT_Array< GEO_Primitive * > &  prims_in,
GU_SkinCache skin_cache,
GEO_SurfaceType  surftype = GEO_PATCH_QUADS,
unsigned  vorder = 0,
int  vwrap = 0,
int  doskin = 1,
int  nprims = -1,
const UT_Vector vParmValues = 0 
)

This restrictive skinning method assumes the faces are of the same type and have the same number of CVs. order 0 means pick most suitable one. If doskin is false, we build a ruled surface. nprims is the number of faces in the group; we compute it if -1. We return the resulting surface and do not delete the input faces. We also assume that if nprims > 2 and vorder != 2 and doskin, all the faces are nonrational. Finally, the provided vParmValues if given specifies what v coordinate each of the provided faces should interpolate.

void GU_Detail::snapGrid ( int  type,
float  xlines,
float  ylines,
float  zlines,
float  xoff,
float  yoff,
float  zoff,
float  tol,
const GA_PointGroup ptGrp = 0 
)

This version of snapping snaps onto grid coordinates. You specify the number of lines per HUnit, so "2" for example will snap to 0.5 boundaries. type is 0 for round nearest, 1 for round down, 2 for round up. 0.5 rounds up in nearest.

void GU_Detail::snapGridPointUVs ( int  type,
float  xlines,
float  ylines,
float  zlines,
float  xoff,
float  yoff,
float  zoff,
float  tol,
const GA_PointGroup ptGrp = 0 
)

Same as above, but with UVs...

void GU_Detail::snapGridPointUVs ( const GA_RWHandleV3 uvattrib,
int  type,
float  xlines,
float  ylines,
float  zlines,
float  xoff,
float  yoff,
float  zoff,
float  tol,
const GA_PointGroup ptGrp = 0 
)
void GU_Detail::snapGridVertexUVs ( int  type,
float  xlines,
float  ylines,
float  zlines,
float  xoff,
float  yoff,
float  zoff,
float  tol,
const GA_VertexGroup vtxGrp = 0 
)
void GU_Detail::snapGridVertexUVs ( const GA_RWHandleV3 uvattrib,
int  type,
float  xlines,
float  ylines,
float  zlines,
float  xoff,
float  yoff,
float  zoff,
float  tol,
const GA_VertexGroup vtxGrp = 0 
)
GA_Size GU_Detail::snapPoints ( int  type,
fpreal  distance,
const GA_PointGroup ptgrp = 0,
bool  snapptpos = true,
UT_Array< GA_Attribute * > *  ptattribs = 0,
bool  accurate = true 
)

Snap points within a specified distance (returns num done) If a point group is specified, then, only points in that group are consolidated. Snapping doesn't fuse the points together, just makes their positions match. The type is 0 for average, 1 for round to lowest point number and 2 for highest point number. snappointpos controls whether the point positions will be snapped. snapptattribs can be set to indicate that point attributes are to be snapped. ptattribhandles is a list of attribute handles for the attributes that will be snapped.

void GU_Detail::softTransformPointTexture ( const UT_XformOrder order,
float  tx,
float  ty,
float  tz,
float  rx,
float  ry,
float  rz,
float  sx,
float  sy,
float  sz,
float  s_xy,
float  s_xz,
float  s_yz,
float  px,
float  py,
float  pz,
const GEO_SoftTransformCache cache,
const GEO_Rolloff rolloff,
GEO_Delta geodelta = 0,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)

falloff_output - any non-zero falloffs used during this call will be written to this attribute when provided falloff_written - will be set to true when provided if falloff_output is provided, and this call did not skip processing any non-zero falloffs. If not set, you must call computeSoftPointFalloff() to obtain the falloffs.

void GU_Detail::softTransformPointTexture ( const GA_RWHandleV3 ptattr,
const UT_XformOrder order,
float  tx,
float  ty,
float  tz,
float  rx,
float  ry,
float  rz,
float  sx,
float  sy,
float  sz,
float  s_xy,
float  s_xz,
float  s_yz,
float  px,
float  py,
float  pz,
const GEO_SoftTransformCache cache,
const GEO_Rolloff rolloff,
GEO_Delta geodelta = 0,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)

falloff_output - any non-zero falloffs used during this call will be written to this attribute when provided falloff_written - will be set to true when provided if falloff_output is provided, and this call did not skip processing any non-zero falloffs. If not set, you must call computeSoftPointFalloff() to obtain the falloffs.

void GU_Detail::softTransformVertexTexture ( const UT_XformOrder order,
float  tx,
float  ty,
float  tz,
float  rx,
float  ry,
float  rz,
float  sx,
float  sy,
float  sz,
float  s_xy,
float  s_xz,
float  s_yz,
float  px,
float  py,
float  pz,
const GEO_SoftTransformCache cache,
const GEO_Rolloff rolloff,
GEO_Delta geodelta = 0,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)

falloff_output - any non-zero falloffs used during this call will be written to this attribute when provided falloff_written - will be set to true when provided if falloff_output is provided, and this call did not skip processing any non-zero falloffs. If not set, you must call computeSoftPointFalloff() to obtain the falloffs.

void GU_Detail::softTransformVertexTexture ( const GA_RWHandleV3 vtxh,
const UT_XformOrder order,
float  tx,
float  ty,
float  tz,
float  rx,
float  ry,
float  rz,
float  sx,
float  sy,
float  sz,
float  s_xy,
float  s_xz,
float  s_yz,
float  px,
float  py,
float  pz,
const GEO_SoftTransformCache cache,
const GEO_Rolloff rolloff,
GEO_Delta geodelta = 0,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)

falloff_output - any non-zero falloffs used during this call will be written to this attribute when provided falloff_written - will be set to true when provided if falloff_output is provided, and this call did not skip processing any non-zero falloffs. If not set, you must call computeSoftPointFalloff() to obtain the falloffs.

void GU_Detail::sortByVertexOrder ( )
inline

Sort points by the order in which they are first referred-to by vertices.

Definition at line 1051 of file GU_Detail.h.

void GU_Detail::sortElements ( GA_IndexMap array,
fpreal order 
)
inline

Sorting according to a provided value list The order is indexed by the GA_Index of the elemnents, NOT the GA_Offset or order within the range.

Definition at line 965 of file GU_Detail.h.

void GU_Detail::sortElements ( GA_IndexMap array,
exint order 
)
inline

Sorting according to a provided value list The order is indexed by the GA_Index of the elemnents, NOT the GA_Offset or order within the range.

Definition at line 967 of file GU_Detail.h.

void GU_Detail::sortElements ( GA_IndexMap array,
const GA_Range range,
fpreal order 
)

Sorting according to a provided value list The order is indexed by the GA_Index of the elemnents, NOT the GA_Offset or order within the range.

void GU_Detail::sortElements ( GA_IndexMap array,
const GA_Range range,
exint order 
)

Sorting according to a provided value list The order is indexed by the GA_Index of the elemnents, NOT the GA_Offset or order within the range.

void GU_Detail::sortPointList ( GU_AxisType  axis)
inline

Sort by the specified dominant axis

Definition at line 914 of file GU_Detail.h.

void GU_Detail::sortPointList ( const UT_Vector3 o,
const UT_Vector3 d 
)
inline

Sort along an arbitrary vector

Definition at line 944 of file GU_Detail.h.

void GU_Detail::sortPointList ( int  seed)
inline

Sort in random order

Definition at line 955 of file GU_Detail.h.

void GU_Detail::sortPointList ( fpreal order)
inline

Sorting according to a provided value list The order is indexed by the GA_Index of the elemnents, NOT the GA_Offset or order within the range.

Definition at line 973 of file GU_Detail.h.

void GU_Detail::sortPointList ( exint order)
inline

Sorting according to a provided value list The order is indexed by the GA_Index of the elemnents, NOT the GA_Offset or order within the range.

Definition at line 975 of file GU_Detail.h.

void GU_Detail::sortPoints ( GA_IndexMap array,
GU_AxisType  axis = GU_XAXIS 
)
inline

Sort by the specified dominant axis

Definition at line 902 of file GU_Detail.h.

void GU_Detail::sortPoints ( GA_IndexMap array,
const GA_Range range,
GU_AxisType  axis 
)

Sort by the specified dominant axis

void GU_Detail::sortPoints ( GA_OffsetArray array,
GU_AxisType  axis = GU_XAXIS 
)

Sort by the specified dominant axis

void GU_Detail::sortPoints ( GA_IndexMap array,
const UT_Vector3 o,
const UT_Vector3 d 
)
inline

Sort along an arbitrary vector

Definition at line 934 of file GU_Detail.h.

void GU_Detail::sortPoints ( GA_IndexMap array,
const GA_Range range,
const UT_Vector3 o,
const UT_Vector3 d 
)

Sort along an arbitrary vector

void GU_Detail::sortPoints ( GA_IndexMap array,
int  seed 
)

Sort in random order

void GU_Detail::sortPointsSpatial ( )
inline

Sorting by spatial locality. The points and primitives will be sorted in a way that tries to assign nearby primitives closer primitive ids.

Definition at line 924 of file GU_Detail.h.

void GU_Detail::sortPointsSpatial ( const GA_Range range)

Sorting by spatial locality. The points and primitives will be sorted in a way that tries to assign nearby primitives closer primitive ids.

void GU_Detail::sortPrimitiveList ( GU_AxisType  axis)
inline

Sort by the specified dominant axis

Definition at line 916 of file GU_Detail.h.

void GU_Detail::sortPrimitiveList ( const UT_Vector3 o,
const UT_Vector3 d 
)
inline

Sort along an arbitrary vector

Definition at line 946 of file GU_Detail.h.

void GU_Detail::sortPrimitiveList ( int  seed)
inline

Sort in random order

Definition at line 957 of file GU_Detail.h.

void GU_Detail::sortPrimitiveList ( fpreal order)
inline

Sorting according to a provided value list The order is indexed by the GA_Index of the elemnents, NOT the GA_Offset or order within the range.

Definition at line 977 of file GU_Detail.h.

void GU_Detail::sortPrimitiveList ( exint order)
inline

Sorting according to a provided value list The order is indexed by the GA_Index of the elemnents, NOT the GA_Offset or order within the range.

Definition at line 979 of file GU_Detail.h.

void GU_Detail::sortPrims ( GA_IndexMap array,
GU_AxisType  axis = GU_XAXIS 
)
inline

Sort by the specified dominant axis

Definition at line 909 of file GU_Detail.h.

void GU_Detail::sortPrims ( GA_IndexMap array,
const GA_Range range,
GU_AxisType  axis 
)

Sort by the specified dominant axis

void GU_Detail::sortPrims ( GA_IndexMap array,
const UT_Vector3 o,
const UT_Vector3 d 
)
inline

Sort along an arbitrary vector

Definition at line 939 of file GU_Detail.h.

void GU_Detail::sortPrims ( GA_IndexMap array,
const GA_Range range,
const UT_Vector3 o,
const UT_Vector3 d 
)

Sort along an arbitrary vector

void GU_Detail::sortPrims ( GA_IndexMap array,
int  seed 
)

Sort in random order

void GU_Detail::sortPrimsSpatial ( )
inline

Sorting by spatial locality. The points and primitives will be sorted in a way that tries to assign nearby primitives closer primitive ids.

Definition at line 927 of file GU_Detail.h.

void GU_Detail::sortPrimsSpatial ( const GA_Range range)

Sorting by spatial locality. The points and primitives will be sorted in a way that tries to assign nearby primitives closer primitive ids.

void GU_Detail::stashCookSelectionBeforeReplaceWith ( GU_CookSelectionReplaceStash &  stash) const

Assumes a fresh GU_CookSelectionReplaceStash instance.

Call this before the replaceWith() call when intending to follow up with a replaceCookSelection() call.

static GA_Detail::IOStatus GU_Detail::statH9File ( const char *  filename,
GA_Stat sbuf,
uint  level 
)
static
void GU_Detail::statVolumes ( GA_Stat stat,
uint  level 
) const
overridevirtual

Fills in a stat structure with the volume information.

Reimplemented from GA_Detail.

GU_SelectionHandle GU_Detail::stealCookSelection ( )

Do not use this method unless you know EXACTLY what you are doing. It removes the cook selection from the detail without orphaning it so the only safe thing to do is to return it later using forceCookSelection().

int GU_Detail::stitch ( GU_StitchParms parms)

Align a set of faces/hulls at optional levels of continuity. face/hull pre/posttranslate + row stitching + row tangent Faces are aligned with faces, hulls with hulls. Return 0 if OK, -1 otherwise (non face/hull types)

void GU_Detail::subdivide ( float uunit,
int  ulen,
float vunit,
int  vlen,
int  arcspacing = 0,
const GA_PrimitiveGroup primGroup = 0 
)

methods to refine face and hull types

void GU_Detail::superEllipsoid ( const GU_SuperQuadParms parms)

Create a mesh primitive or polygon primitives representing a super-quadric surface specified by parms.

GU_ERROR GU_Detail::sweep ( GU_SweepParms  parms)
bool GU_Detail::tetrahedralizeForShrink ( const GA_PointGroup ptGroup = 0,
GU_Detail gdp = 0 
)

preliminary routine to setup the gdp to be shrunk by the shrink routine

void GU_Detail::torus ( unsigned  type,
GU_TorusParms parms 
)

Creates a torus in this detail, based on parms. type is one of the values in the enum in GA_PrimitiveTypes.h . GA_PRIMPOLY, GA_PRIMPOLYSOUP, GA_PRIMMESH, GA_PRIMBEZSURF, and GA_PRIMNURBSURF are supported.

float GU_Detail::trace ( GU_TraceParms parms)

trace a raster image to form closed polygons

void GU_Detail::transformBreakpoints ( const UT_Matrix4 mat,
const GA_BreakpointGroup grp = 0,
int  quickxform = 0 
)

Transform breakpoints.

void GU_Detail::transformPointTexture ( const UT_Matrix4 mat,
const GA_PointGroup ptGroup = nullptr,
GEO_Delta geodelta = 0 
)

Methods for transforming point and vertex texture attributes:

void GU_Detail::transformPointTexture ( const GA_RWHandleV3 pth,
const UT_Matrix4 mat,
const GA_PointGroup ptGroup = nullptr,
GEO_Delta geodelta = 0 
)
void GU_Detail::transformVertexTexture ( const UT_Matrix4 mat,
const GA_VertexGroup vertexGroup = nullptr,
GEO_Delta geodelta = 0 
)
void GU_Detail::transformVertexTexture ( const GA_RWHandleV3 vtxh,
const UT_Matrix4 mat,
const GA_VertexGroup vertexGroup = nullptr,
GEO_Delta geodelta = 0 
)
void GU_Detail::unHole ( const GA_PrimitiveGroup primGroup = 0)

Remove bridged holes from other than polygons.

void GU_Detail::uniquePoints ( const GA_PointGroup group = 0)

Unique all points in the detail. If a point group is specified, then only points in that group are uniqued If a primitive group is specified, only those primitives will have their points uniqued.

void GU_Detail::uniquePrimitive ( GEO_Primitive prim)

Unique all the points that are in this primitive, even if referenced by other primitives.

void GU_Detail::unrefine ( float  umin,
float  umax,
float  vmin,
float  vmax,
int  countu = 1,
int  countv = 1,
float  utol = 0.001F,
float  vtol = 0.001F,
const GA_PrimitiveGroup primGroup = 0 
)

methods to refine face and hull types

static void GU_Detail::unregisterIOTranslator ( GEO_IOTranslator trans)
static

Methods for registering and unregistering geometry io converters.

void GU_Detail::updateCookSelectionDataIds ( )

Bumps the data ids of the internal groups used by the cook selection if the selection revision has changed.

void GU_Detail::vertexOrder ( GA_IndexMap points)
inline

Sort points by the order in which they are first referred-to by vertices.

Definition at line 1048 of file GU_Detail.h.

void GU_Detail::vertexOrder ( GA_IndexMap points,
const GA_Range range 
)

Sort points by the order in which they are first referred-to by vertices.

int GU_Detail::warp ( GU_WarpParms parms)

Warp curves or surfaces. Return 0 if successful and -1 otherwise.

Friends And Related Function Documentation

friend class GU_PrimitiveFactory
friend

Definition at line 2181 of file GU_Detail.h.


The documentation for this class was generated from the following file: