12 #ifndef __GEO_Detail_h__
13 #define __GEO_Detail_h__
71 namespace GA_PrimCompat {
class TypeMask; }
86 template<
typename T,
bool B>
class GA_EdgeT;
94 #define GEO_STD_ATTRIB_POSITION "P"
95 #define GEO_STD_ATTRIB_NORMAL "N"
96 #define GEO_STD_ATTRIB_TEXTURE "uv"
97 #define GEO_STD_ATTRIB_VELOCITY "v"
98 #define GEO_STD_ATTRIB_ANGULAR_VELOCITY "w"
99 #define GEO_STD_ATTRIB_MATERIAL "shop_materialpath"
100 #define GEO_STD_ATTRIB_OGLSHOP "ogl_shop"
101 #define GEO_STD_ATTRIB_DIFFUSE "Cd"
102 #define GEO_STD_ATTRIB_ALPHA "Alpha"
103 #define GEO_STD_ATTRIB_COM "com"
104 #define GEO_STD_ATTRIB_DISTANCE "dist"
105 #define GEO_STD_ATTRIB_LOD "lod"
106 #define GEO_STD_ATTRIB_REST "rest"
107 #define GEO_STD_ATTRIB_MASS "mass"
108 #define GEO_STD_ATTRIB_DRAG "drag"
109 #define GEO_STD_ATTRIB_TENSION "tension"
110 #define GEO_STD_ATTRIB_SPRINGK "springk"
111 #define GEO_STD_ATTRIB_LIFE "life"
112 #define GEO_STD_ATTRIB_AGE "age"
113 #define GEO_STD_ATTRIB_DIST "dist"
114 #define GEO_STD_ATTRIB_UP "up"
115 #define GEO_STD_ATTRIB_ORIENT "orient"
116 #define GEO_STD_ATTRIB_ID "id"
117 #define GEO_STD_ATTRIB_PSCALE "pscale"
118 #define GEO_STD_ATTRIB_CREASE "creaseweight"
119 #define GEO_STD_ATTRIB_AREA "area"
120 #define GEO_STD_ATTRIB_PERIMETER "perimeter"
121 #define GEO_STD_ATTRIB_WIDTH "width"
122 #define GEO_STD_ATTRIB_LAYERMERGE "layermerge"
123 #define GEO_STD_ATTRIB_SEGS "segs"
124 #define GEO_STD_ATTRIB_DIV "div"
125 #define GEO_STD_ATTRIB_LAGE "lage"
126 #define GEO_STD_ATTRIB_ARC "arc"
127 #define GEO_STD_ATTRIB_GEN "gen"
128 #define GEO_STD_ATTRIB_TUBECAPTURE "tubeCapt"
129 #define GEO_STD_ATTRIB_PNT_CAPTURE_ALPHA "pCaptAlpha"
130 #define GEO_STD_ATTRIB_PNT_CAPTURE_PATH "pCaptPath"
131 #define GEO_STD_ATTRIB_PNT_CAPTURE_DATA "pCaptData"
132 #define GEO_STD_ATTRIB_CAPTUREFRAME "pCaptFrame"
133 #define GEO_STD_ATTRIB_CAPT_SKELROOT "pCaptSkelRoot"
134 #define GEO_STD_ATTRIB_CLOTH_CAPT "clothCapt"
135 #define GEO_STD_ATTRIB_WIRE_CAPT_U "wireCaptU"
136 #define GEO_STD_ATTRIB_WIRE_CAPT_V "wireCaptV"
137 #define GEO_STD_ATTRIB_WIRE_CAPT_PRIMU "wireCaptPrimU"
138 #define GEO_STD_ATTRIB_META_CAPT_FRAME "metaCaptFrame"
139 #define GEO_STD_ATTRIB_META_CAPT_GROUPS "metaCaptGroups"
140 #define GEO_STD_ATTRIB_META_CAPT_ROOT "metaCaptRoot"
141 #define GEO_STD_ATTRIB_META_CAPT_PATHS "metaCaptPaths"
142 #define GEO_STD_ATTRIB_META_CAPT_DATA "metaCaptData"
143 #define GEO_STD_ATTRIB_META_CAPT_GROUP_MAP "metaCaptGroupMap"
144 #define GEO_STD_ATTRIB_META_SLIDE "slideModifier"
145 #define GEO_STD_ATTRIB_INFLATE_MODIFIER "inflatemodifier"
146 #define GEO_STD_ATTRIB_MUSCLE_REST_ANCHOR "restAnchor"
147 #define GEO_STD_ATTRIB_MUSCLE_REST_XFORMS "restTransforms"
148 #define GEO_STD_ATTRIB_MUSCLE_INFLATE_NORM "muscleInflateNormal"
149 #define GEO_STD_ATTRIB_MUSCLE_POSITION_BIAS "positionbiasvalues"
150 #define GEO_STD_ATTRIB_MUSCLE_CAPT_NAMES "muscleCaptNames"
151 #define GEO_STD_ATTRIB_RIXLATE "rixlate"
152 #define GEO_STD_ATTRIB_DEFORM_SKIN_METHOD "deformSkinMethod"
153 #define GEO_STD_ATTRIB_DEFORM_DUAL_QUATERNION_BLEND_ATTRIB "deformDualQuaternionBlendAttrib"
154 #define GEO_STD_ATTRIB_DEFORM_TRANSFORMS_PATH "deformTransformsPath"
155 #define GEO_STD_ATTRIB_DEFORM_TRANSFORM_REGIONS_PATH "deformTransformRegionsPath"
156 #define GEO_STD_ATTRIB_DEFORM_TRANSFORM_TARGETS_PATH "deformTransformTargetsPath"
157 #define GEO_STD_ATTRIB_POSE_SHAPE_EXAMPLE_PATH "poseShapeExamplePath"
158 #define GEO_STD_ATTRIB_SHAPE_DIFF_METHOD "shapeDiffMethod"
159 #define GEO_STD_ATTRIB_SHAPE_DIFF_ORIENT_ATTRIB "shapeDiffOrientAttrib"
160 #define GEO_STD_ATTRIB_SHAPE_DIFF_TRANSFORM_ATTRIB "shapeDiffTransformAttrib"
161 #define GEO_STD_ATTRIB_STASH_POSE_PATH "stashPosePath"
252 bool full_topology=
true);
295 bool mergePrimGroup =
true,
296 bool insertPrimsAtHead=
false,
297 bool keep_internal_groups =
true,
310 bool merge_groups =
true,
311 bool keep_internal_groups =
true);
329 bool this_parameter_is_ignored =
true,
330 bool keep_internal_groups =
true,
333 void collapseIndexAttributes();
341 template<
typename FLOAT_T>
345 bool keep_vector_lengths =
true,
346 bool check_pasting =
true,
347 bool neg_determinant_flip_vector =
true,
348 bool update_ptnormals =
false,
350 bool updateaffectednormals =
false,
351 const char *attribpattern =
nullptr);
354 template<
typename FLOAT_T>
359 bool keep_vector_lengths =
true,
360 bool check_pasting =
true,
361 bool neg_determinant_flip_vector =
true,
362 bool update_ptnormals =
false,
364 bool updateaffectednormals =
false,
365 const char *attribpattern =
nullptr);
373 template<
typename FLOAT_T>
378 bool keep_vector_lengths =
true,
379 bool check_pasting =
true,
380 bool neg_determinant_flipvector =
true,
381 bool update_ptnormals =
false,
383 bool updateaffectednormals =
false,
384 const char *attribpattern =
nullptr);
388 template<
typename FLOAT_T>
393 bool keep_vector_lengths =
true,
394 bool check_pasting =
true,
395 bool neg_determinant_flipvector =
true,
396 bool update_ptnormals =
false,
398 bool updateaffectednormals =
false,
399 const char *attribpattern =
nullptr);
402 template<
typename FLOAT_T>
406 bool check_pasting =
true,
407 bool update_ptnormals =
false,
409 bool updateaffectednormals =
false,
410 const char *attribpattern =
nullptr);
414 template<
typename FLOAT_T>
418 bool keep_vector_lengths =
true,
419 bool check_pasting =
true,
420 bool neg_determinant_flipvector =
true,
421 bool update_ptnormals =
false,
423 bool updateaffectednormals =
false,
424 const char *attribpattern =
nullptr);
427 template<
typename FLOAT_T>
432 bool keep_vector_lengths =
true,
433 bool check_pasting =
true,
434 bool neg_determinant_flipvector =
true,
435 bool update_ptnormals =
false,
437 bool updateaffectednormals =
false,
438 const char *attribpattern =
nullptr);
442 template <
typename FLOAT_T,
bool INVERT=false>
443 void transformPointsByAttribute(
446 bool keep_vector_lengths =
true,
447 bool updateaffectednormals =
true,
448 const char *attribpattern =
nullptr);
452 template <
typename FLOAT_T,
bool INVERT=false>
453 void transformPointsByAttribute(
456 bool keep_vector_lengths =
true,
457 bool updateaffectednormals =
true,
458 const char *attribpattern =
nullptr);
462 template <
typename FLOAT_T,
bool INVERT=false>
463 void transformPointsByAttribute(
466 bool keep_vector_lengths =
true,
467 bool updateaffectednormals =
true,
468 const char *attribpattern =
nullptr);
472 template <
typename FLOAT_T,
bool INVERT=false>
473 void translatePointsByAttribute(
476 bool keep_vector_lengths =
true,
477 bool updateaffectednormals =
true,
478 const char *attribpattern =
nullptr);
481 template<
typename FLOAT_T>
484 bool check_pasting =
true,
485 bool update_ptnormals =
false,
487 bool updateaffectednormals =
false,
488 const char *attribpattern =
nullptr);
493 template<
typename FLOAT_T>
498 bool keep_vector_lengths =
true,
499 bool check_pasting =
true,
500 bool neg_determinant_flipvector =
true,
501 bool update_ptnormals =
false,
503 bool updateaffectednormals =
false,
504 const char *attribpattern =
nullptr);
507 template<
typename FLOAT_T>
510 bool check_pasting =
true,
511 bool update_ptnormals =
false,
513 bool updateaffectednormals =
false,
514 const char *attribpattern =
nullptr);
518 template<
typename FLOAT_T>
522 bool update_ptnormals =
false,
524 bool updateaffectednormals =
false,
525 const char *attribpattern =
nullptr);
528 template<
typename FLOAT_T>
531 bool update_ptnormals =
false,
533 bool updateaffectednormals =
false,
534 const char *attribpattern =
nullptr);
539 template<
typename FLOAT_T>
543 bool keep_vector_lengths =
true,
544 bool check_pasting =
true,
545 bool neg_determinant_flipvector =
true,
548 bool update_ptnormals =
false,
550 bool updateaffectednormals =
false,
551 const char *attribpattern =
nullptr);
554 template<
typename FLOAT_T>
557 bool check_pasting =
true,
559 bool update_ptnormals =
false,
561 bool updateaffectednormals =
false,
562 const char *attribpattern =
nullptr);
564 void visualizeSoftPoints(
const GEO_Rolloff &rolloff,
577 && myTol == other.
myTol;
582 return !(*
this == other);
596 void computeSoftPointFalloff(
597 const bool connected,
650 void normalTranslatePoints(
float length = 1.0F,
651 int check_pasting = 1,
653 int update_ptnormals = 0,
655 bool updateaffectednormals =
false,
657 const bool normalize_attrib =
false,
659 void normalTranslatePrimitives(
float length = 1.0F,
660 int check_pasting = 1,
662 int update_ptnormals = 0,
664 bool updateaffectednormals =
false,
666 const bool normalize_attrib =
false,
669 float length = 1.0F,
int check_pasting = 1,
670 int update_ptnormals = 0,
672 bool updateaffectednormals =
false,
674 const bool normalize_attrib =
false,
677 float length = 1.0F,
int check_pasting = 1,
678 int update_ptnormals = 0,
680 bool updateaffectednormals =
false,
682 const bool normalize_attrib =
false,
685 float length = 1.0F,
int check_pasting = 1,
686 int update_ptnormals = 0,
688 bool updateaffectednormals =
false,
690 const bool normalize_attrib =
false,
693 float length = 1.0F,
int check_pasting = 1,
694 int update_ptnormals = 0,
696 bool updateaffectednormals =
false,
698 void normalTranslateGroup(
const GA_Group &grp,
699 float length = 1.0F,
int check_pasting = 1,
700 int update_ptnormals = 0,
702 bool updateaffectednormals =
false,
704 const bool normalize_attrib =
false,
712 void updateAffectedNormals(
const GA_Range &ptrange,
714 bool allsametransform =
false);
719 template<
typename FLOAT_T>
724 bool keep_vector_lengths =
true,
725 bool check_pasting =
true,
726 bool neg_determinant_flipvector =
true,
727 bool update_ptnormals =
false,
729 bool updateaffectednormals =
false);
733 template<
typename FLOAT_T>
738 bool keep_vector_lengths =
true,
739 bool check_pasting =
true,
740 bool neg_determinant_flipvector =
true,
741 bool update_ptnormals =
false,
743 bool updateaffectednormals =
false,
749 template<
typename FLOAT_T>
754 bool keep_vector_lengths =
true,
755 bool check_pasting =
true,
756 bool neg_determinant_flipvector =
true,
757 bool update_ptnormals =
false,
759 bool updateaffectednormals =
false,
766 template<
typename FLOAT_T>
770 bool keep_vector_lengths =
true,
771 bool check_pasting =
true,
772 bool neg_determinant_flipvector =
true,
775 bool update_ptnormals =
false,
777 bool updateaffectednormals =
false,
783 template <
typename FLOAT_T>
800 : myFwdVector(forward), myUpVector(up), myType(
Type::LOOKAT),
801 myPivotSpace(pivot_space) {}
809 : myOrient(orient), myOrigin(origin), myType(
Type::ORIENT),
810 myPivotSpace(pivot_space) {}
829 template<
typename FLT>
834 FLT tx, FLT ty, FLT tz,
835 FLT rx, FLT ry, FLT rz,
836 FLT sx, FLT sy, FLT sz,
837 FLT s_xy, FLT s_xz, FLT s_yz,
838 FLT px, FLT
py, FLT pz,
839 FLT prx, FLT pry, FLT prz);
851 void softTransformPoints(
853 float tx,
float ty,
float tz,
854 float rx,
float ry,
float rz,
855 float sx,
float sy,
float sz,
856 float s_xy,
float s_xz,
float s_yz,
857 float px,
float py,
float pz,
858 float prx,
float pry,
float prz,
863 int keep_vector_lengths = 1,
864 int check_pasting = 1,
865 int neg_determinant_flipvector = 1,
866 int update_ptnormals = 0,
868 bool updateaffectednormals =
false,
869 const char *attribpattern =
nullptr,
871 bool *falloff_written =
nullptr);
872 void softTransformEdges(
874 float tx,
float ty,
float tz,
875 float rx,
float ry,
float rz,
876 float sx,
float sy,
float sz,
877 float s_xy,
float s_xz,
float s_yz,
878 float px,
float py,
float pz,
879 float prx,
float pry,
float prz,
884 int keep_vector_lengths = 1,
885 int check_pasting = 1,
886 int neg_determinant_flipvector = 1,
887 int update_ptnormals = 0,
889 bool updateaffectednormals =
false,
890 const char *attribpattern =
nullptr,
892 bool *falloff_written =
nullptr);
894 void softTransformPoints(
897 float tx,
float ty,
float tz,
898 float rx,
float ry,
float rz,
899 float sx,
float sy,
float sz,
900 float s_xy,
float s_xz,
float s_yz,
901 float px,
float py,
float pz,
902 float prx,
float pry,
float prz,
907 int keep_vector_lengths = 1,
908 int check_pasting = 1,
909 int neg_determinant_flipvector = 1,
910 int update_ptnormals = 0,
912 bool updateaffectednormals =
false,
913 const char *attribpattern =
nullptr,
915 bool *falloff_written =
nullptr);
916 void softTransformEdges(
919 float tx,
float ty,
float tz,
920 float rx,
float ry,
float rz,
921 float sx,
float sy,
float sz,
922 float s_xy,
float s_xz,
float s_yz,
923 float px,
float py,
float pz,
924 float prx,
float pry,
float prz,
929 int keep_vector_lengths = 1,
930 int check_pasting = 1,
931 int neg_determinant_flipvector = 1,
932 int update_ptnormals = 0,
934 bool updateaffectednormals =
false,
935 const char *attribpattern =
nullptr,
937 bool *falloff_written =
nullptr);
949 void softTranslatePoints(
954 int check_pasting = 1,
955 int update_ptnormals = 0,
957 bool updateaffectednormals =
false,
958 const char *attribpattern =
nullptr,
960 bool *falloff_written =
nullptr);
961 void softTranslateEdges(
966 int check_pasting = 1,
967 int update_ptnormals = 0,
969 bool updateaffectednormals =
false,
970 const char *attribpattern =
nullptr,
972 bool *falloff_written =
nullptr);
984 void softNormalTranslatePoints(
989 int along_lead_normal = 1,
990 int check_pasting = 1,
991 int update_ptnormals = 0,
993 bool updateaffectednormals =
false,
995 bool *falloff_written =
nullptr);
1004 void normal(
UT_Vector3Array &output,
bool use_internaln =
true)
const;
1028 &getPointCaptureAttribName(CaptureType
type);
1033 static const char *getPointCaptureIndexPropertyName(CaptureType
type);
1038 &getPointCaptureFrameAttribName(CaptureType
type);
1043 &getPointCaptureRootAttribName(CaptureType
type);
1048 static const char *getPointCaptureDataPropertyName(CaptureType
type);
1052 bool getCaptureRegionRootPath(
UT_String &root_path,
1053 CaptureType
t = CAPTURE_BONE)
const;
1054 bool setCaptureRegionRootPath(
const UT_String &root_path,
1055 CaptureType
t = CAPTURE_BONE);
1059 int getCaptureRegionIndex(
const UT_String &cregion_name,
1060 CaptureType
t = CAPTURE_BONE);
1065 int addCaptureRegion(
const UT_String &cregion_name,
1068 int addCaptureRegion(
const UT_String &cregion_name,
1070 float taperx,
float taperz);
1074 int addCaptureRegion(
const UT_String &cregion_name,
1079 int removeCaptureRegion(
const UT_String &cregion_name,
1080 CaptureType
t = CAPTURE_BONE);
1083 void setCaptureWeight(
int cregion_index,
float weight,
1086 bool add_weight =
false,
1087 bool clamp_negative =
false,
1088 bool normalizeweight =
false,
1089 CaptureType
t = CAPTURE_BONE);
1092 void setCaptureWeight(
int cregion_index,
float weight,
1095 bool add_weight =
false,
1096 bool clamp_negative =
false,
1097 bool normalizeweight =
false,
1098 CaptureType
t = CAPTURE_BONE);
1101 float getCaptureWeight(
int cregion_index,
GA_Offset ptoff,
1102 CaptureType
t = CAPTURE_BONE)
const;
1111 CaptureType
t = CAPTURE_BONE)
const;
1112 void clearCaptureWeights(
GA_Offset ptoff,
1113 CaptureType
t = CAPTURE_BONE);
1122 void colorPointsByCaptureWeight(
1125 CaptureType
t = CAPTURE_BONE,
1126 VisualizationType vistype = VISTYPE_MULTIPLE,
1131 void colorPointsByCaptureWeight(
1135 VisualizationType vistype,
1139 void normalizeCaptureWeights(
const GA_PointGroup *ptgroup =
nullptr,
1140 CaptureType
t = CAPTURE_BONE,
1147 void clampCaptureWeights(
const GA_PointGroup *ptgroup =
nullptr,
1148 bool clamp_low_flag =
true,
1149 float low_threshold = 0.0
f,
float low_val = 0.0
f,
1150 bool clamp_hi_flag =
false,
1151 float hi_threshold = 1.0
f,
float hi_val = 1.0
f,
1155 void normalizeRelativeCaptureWeights(
int idx,
GA_Offset ptoff,
1179 {
return insertPointCopy(src, wrangler); }
1183 {
return insertPointCopy(src); }
1222 getPrimitiveByIndex(idx));
1229 getPrimitiveByIndex(idx));
1239 {
return destroyPoints(range,
mode); }
1241 {
return destroyPrimitives(range, and_points); }
1243 {
return destroyPrimitive(prim, and_points); }
1266 bool and_points =
false);
1269 bool and_points =
false);
1289 bool getVisibleBBox(
1296 bool accurate_bounds =
false)
const;
1308 return getPointBBox(bbox, transform,
1315 bool getPointBSphere(
1318 bool accurate_bounds =
false)
const;
1333 bool getEdgeBSphere(
1336 bool accurate_bounds =
false)
const;
1337 bool getBreakpointBBox(
1340 bool getBreakpointBBox(
1344 bool getBreakpointBSphere(
1347 bool accurate_bounds =
false)
const;
1355 bool getGroupBSphere(
1358 bool accurate_bounds)
const;
1362 bool getPointAttribBBox(
1366 bool getPointAttribBBox(
1370 bool getPointAttribBBox(
1374 bool getPointAttribBBox(
1383 template <
typename T>
1384 bool getPointAttribCentroid(
1389 bool getPointAttribGroupBBox(
1394 bool getVertexAttribBBox(
1398 bool getVertexAttribBBox(
1402 bool getVertexAttribBBox(
1406 bool getVertexAttribBBox(
1410 bool getVertexAttribGroupBBox(
1423 void copyPointVertexAttributes(
GEO_Vertex dest,
1425 bool copy_point_P = true) const;
1426 void copyPointVertexAttributes(
1430 void copyPointVertexAttributes(
1436 copyVertex(dest_vtx, src_vtx, vertex_wrangler,
1437 point_wrangler, copy_point_P);
1448 copyVertex(dest_vtx, src_vtx, vertex_wrangler,
1465 int shallow = 0) const;
1499 void fixSplineWeights();
1535 GA_Attribute *addCaptureFrameAttribute(CaptureType
t = CAPTURE_BONE,
1563 GA_Attribute *addPointCaptureAttribute(geo_NPairs n_pairs,
1564 CaptureType
t = CAPTURE_BONE,
1569 GA_Attribute *addPointCaptureAlphaAttribute(
float dflt,
1599 const GA_Attribute *findInternalNormalAttribute()
const;
1605 CaptureType
t = CAPTURE_BONE)
const;
1607 CaptureType
t = CAPTURE_BONE);
1610 const GA_Attribute *findCaptureSkelRootAttribute(CaptureType
t
1611 = CAPTURE_BONE)
const;
1620 CaptureType
t = CAPTURE_BONE,
1626 CaptureType
t = CAPTURE_BONE,
1634 const GA_Attribute *findPointCaptureAlphaAttribute()
const;
1642 void destroyInternalNormalAttribute();
1651 void destroyTubeCaptureAttribute();
1654 void destroyCaptureFrameAttribute(CaptureType
t
1658 void destroyCaptureSkelRootAttribute(CaptureType
t
1663 void destroyPointCaptureAttribute(CaptureType
t =
1667 void destroyPointCaptureAlphaAttribute();
1674 bool getMetaRestAnchorPath(
UT_String &anchorPath)
const;
1691 int layer = -1)
const;
1692 int getAttributeLayer(
const char* attr_name)
const;
1694 static GA_TypeInfo getStdAttributeTypeInfo(
const char *
name,
int floattuplesize);
1697 int getCurrentLayer()
const;
1698 void setCurrentLayer(
int layer);
1699 void setNumLayers(
int numlayer);
1700 int getNumLayers()
const;
1702 void setLayerMerge(
int preclear,
int mask,
int srcblend,
1704 void getLayerMerge(
int &preclear,
int &
mask,
int &srcblend,
1705 int &dstblend)
const;
1707 void addVariableName(
const char *attr,
const char *varname);
1709 { addVariableName(0, varname); }
1715 void traverseVariableNames(
int (*
function)(
const char *attr,
1716 const char *varname,
void *
data),
1720 GA_Attribute *growPointCaptureAttribute(geo_NPairs num_added_pairs,
1721 CaptureType
t = CAPTURE_BONE);
1726 return getAttributes().cloneAttribute(
1738 creation_args, attribute_options,attribtype);
1747 creation_args, attribute_options,attribtype);
1755 {
return findPointAttribute(src.
getScope(),
1759 {
return findPointAttribute(src.
getScope(),
1797 return getAttributes().cloneAttribute(
1808 creation_args, attribute_options,attribtype);
1817 creation_args, attribute_options,attribtype);
1825 {
return findVertexAttribute(src.
getScope(),
1829 {
return findVertexAttribute(src.
getScope(),
1867 return getAttributes().cloneAttribute(
1878 n, creation_args, attribute_options,attribtype);
1887 creation_args, attribute_options,attribtype);
1895 {
return findPrimitiveAttribute(src.
getScope(),
1899 {
return findPrimitiveAttribute(src.
getScope(),
1922 return getAttributes().cloneAttribute(
1934 creation_args, attribute_options,attribtype);
1943 creation_args, attribute_options,attribtype);
1948 {
return findGlobalAttribute(src.
getScope(),
1952 {
return findGlobalAttribute(src.
getScope(),
1980 {
return getAttributes().getDict(
1984 {
return getAttributes().getDict(
1988 {
return getAttributes().getDict(
1992 {
return getAttributes().getDict(
1998 bool hasMetaPrimitives()
const;
1999 bool hasPastedPrimitives()
const;
2000 bool hasQuadricPrimitives()
const;
2001 bool hasParticlePrimitives()
const;
2002 bool hasVolumePrimitives()
const;
2003 bool hasChannelPrimitives()
const;
2004 bool hasCameraPrimitives()
const;
2005 bool hasTransformingPrimitives()
const;
2009 bool hasCustomPrimitives()
const;
2012 GA_Size getPastedCount()
const;
2013 GA_Size getQuadricCount()
const;
2014 GA_Size getParticleCount()
const;
2015 GA_Size getVolumeCount()
const;
2022 bool mergeCaptureProperties(
2048 const
char *attrib_name) const;
2051 const
char *attrib_name);
2086 bool setDetailAttributeD(const
UT_StringHolder &aname,
double v1,
double v2);
2100 GA_Size getPointGroupAdjacentToPrimitiveGroup(
2103 GA_Size getPointGroupAdjacentToPrimitiveRange(
2106 GA_Size getVertexGroupAdjacentToPrimitiveGroup(
2109 GA_Size getVertexGroupAdjacentToPrimitiveRange(
2115 struct AdjacentPolygonData
2120 {
return myAdjacentPolygon == pad.myAdjacentPolygon; }
2122 {
return myAdjacentPolygon < pad.myAdjacentPolygon; }
2171 const GEO_Primitive *findPrimitiveByName(
const char *nametomatch,
2174 const char *nameattrib=
"name",
2175 int matchnumber = 0)
const;
2179 const char *nameattrib=
"name",
2180 int matchnumber = 0);
2183 void findAllPrimitivesByName(
2185 const char *nametomatch,
2188 const char *nameattrib=
"name")
const;
2189 void findAllPrimitivesByName(
2191 const char *nametomatch,
2194 const char *nameattrib=
"name");
2203 { destroyElementGroup(g); }
2205 { destroyElementGroup(g); }
2207 { destroyElementGroup(g); }
2230 bool override =
true);
2233 bool override =
true);
2237 bool override =
true);
2240 bool override =
true);
2246 GA_Size localIntrinsicTupleSize(
2262 const char *
value)
override;
2288 bool convertIndexPairDataFromH9();
2289 bool convertIndexPairDataToH9();
2291 template<
typename FLOAT_T>
2296 bool keep_vector_lengths,
2298 bool neg_determinant_flipvector,
2299 bool update_ptnormals,
2301 bool updateaffectednormals,
2302 const char *attribpattern);
2307 bool override =
true);
2348 int min_size=1,
int max_size=-1)
const;
2352 int min_size=1,
int max_size=-1)
const
2355 min_size, max_size);
2360 int min_size=1,
int max_size=-1);
2364 int min_size=1,
int max_size=-1)
2367 min_size, max_size);
2372 int min_size=1,
int max_size=-1)
const;
2376 int min_size=1,
int max_size=-1)
const
2379 min_size, max_size);
2384 int min_size=1,
int max_size=-1);
2388 int min_size=1,
int max_size=-1)
2391 min_size, max_size);
2397 int min_size=1,
int max_size=-1)
const;
2401 int min_size=1,
int max_size=-1)
const
2404 name, min_size, max_size);
2410 int min_size=1,
int max_size=-1);
2414 int min_size=1,
int max_size=-1)
2417 name, min_size, max_size);
2422 int min_size=1,
int max_size=-1)
const;
2426 int min_size=1,
int max_size=-1)
const
2429 name, min_size, max_size);
2434 int min_size=1,
int max_size=-1);
2438 int min_size=1,
int max_size=-1)
2441 name, min_size, max_size);
2447 int min_size=1,
int max_size=-1)
const;
2451 int min_size=1,
int max_size=-1)
const
2454 name, min_size, max_size);
2459 int min_size=1,
int max_size=-1);
2463 int min_size=1,
int max_size=-1)
2466 name, min_size, max_size);
2490 int min_size=1,
int max_size=-1)
const;
2494 int min_size=1,
int max_size=-1)
const
2497 min_size, max_size);
2502 int min_size=1,
int max_size=-1);
2506 int min_size=1,
int max_size=-1)
2509 min_size, max_size);
2514 int min_size=1,
int max_size=-1)
const;
2518 int min_size=1,
int max_size=-1)
const
2521 min_size, max_size);
2526 int min_size=1,
int max_size=-1);
2530 int min_size=1,
int max_size=-1)
2533 min_size, max_size);
2538 int min_size=1,
int max_size=-1)
const;
2542 int min_size=1,
int max_size=-1)
const
2545 min_size, max_size);
2550 int min_size=1,
int max_size=-1);
2554 int min_size=1,
int max_size=-1)
2557 min_size, max_size);
2562 int min_size=1,
int max_size=-1)
const;
2566 int min_size=1,
int max_size=-1)
const
2569 min_size, max_size);
2574 int min_size=1,
int max_size=-1);
2578 int min_size=1,
int max_size=-1)
2581 min_size, max_size);
2586 int min_size=1,
int max_size=-1)
const;
2590 int min_size=1,
int max_size=-1)
const
2593 min_size, max_size);
2598 int min_size=1,
int max_size=-1);
2602 int min_size=1,
int max_size=-1)
2605 min_size, max_size);
2647 return addTuple(storage,
2689 tuple_size, defaults,
2716 tuple_size, defaults,
2740 name, tuple_size, creation_args,
2741 attribute_options, reuse);
2762 name, tuple_size, creation_args,
2763 attribute_options, reuse);
2876 return ((
'P'<<24) + (
'G'<<16) + (
'E'<<8) +
'O');
2881 return ((
'B'<<24) + (
'g'<<16) + (
'e'<<8) +
'o');
2887 bool savePointsH9(std::ostream &os,
bool binary,
2891 bool saveExtraH9(std::ostream &os,
bool binary,
2901 os,
false,
nullptr);
2906 friend class GU_IOClassic;
2912 void privateComputeNormal(
2915 const float cuspangledegrees,
2916 const int method)
const override;
void destroyPrimitiveGroup(GA_PrimitiveGroup *g)
virtual void clearCaches()
SYS_FORCE_INLINE GA_Attribute * addIntArray(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())
SYS_FORCE_INLINE const GA_Attribute * findStringTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
Definition of a geometry attribute.
SYS_FORCE_INLINE GA_Attribute * addPointAttrib(const GA_Attribute *src)
SYS_FORCE_INLINE const GA_Attribute * findNumericArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
void incrementMetaCacheCount()
Specify when and how to reuse an existing attribute.
SYS_FORCE_INLINE const GA_Attribute * findPointVectorAttrib(GA_AttributeScope s, const UT_StringRef &n) const
Looks for a 3-float point attribute.
SYS_FORCE_INLINE GA_Attribute * findNumericTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
GLdouble GLdouble GLint GLint const GLdouble * points
SYS_FORCE_INLINE void destroyGlobalAttrib(GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
Axis-aligned bounding box (AABB).
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the and then *wait for them to all complete We provide a helper class
SYS_FORCE_INLINE void destroyPointAttrib(GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
SYS_FORCE_INLINE GA_Attribute * findIntTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
GEO_Capture_Bone_Property
Class which stores the default values for a GA_Attribute.
GEO_Capture_Cloth_Property
getFileOption("OpenEXR:storage") storage
SYS_FORCE_INLINE const GA_Attribute * findDictTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
SYS_FORCE_INLINE GA_Attribute * addDictArray(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())
#define SYS_DEPRECATED_PUSH_DISABLE()
#define SYS_DEPRECATED_POP_DISABLE()
SYS_FORCE_INLINE GA_Attribute * addPrimAttrib(const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
GLsizei const GLfloat * value
void clearAndDestroy()
Clear all the points/primitives out of this detail.
const GLuint GLenum const void * binary
SYS_FORCE_INLINE GA_Attribute * addTuple(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())
SYS_FORCE_INLINE GA_Attribute * addVertexAttrib(GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
SYS_FORCE_INLINE void destroyVertexAttrib(GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
bool deletePrimitive(GA_Primitive &prim, bool and_points=false)
SYS_FORCE_INLINE GA_Attribute * findGlobalAttrib(const GA_Attribute &src)
SYS_FORCE_INLINE GA_Attribute * findIndexPair(GA_AttributeOwner owner, const UT_StringRef &name)
GLboolean GLboolean GLboolean GLboolean a
SYS_FORCE_INLINE GA_AttributeScope getScope() const
GLuint GLsizei GLsizei * length
SYS_FORCE_INLINE GA_Attribute * findStringTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
Class used to map H9 geometry files to a form used by GA.
void destroyVertexGroup(GA_VertexGroup *g)
IOStatus saveClassic(const char *, const GA_SaveOptions *) const
**But if you need a result
SYS_FORCE_INLINE const GA_Attribute * findFloatTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
Standard user attribute level.
GA_Size deletePoints(const GA_Range &range, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES)
static int binaryMagicH9()
Magic number for binary geometry files.
UT_Vector3T< FLOAT_T > myUpVector
GLfloat GLfloat GLfloat v2
SYS_FORCE_INLINE bool GAisValid(GA_Size v)
exint GA_Size
Defines the bit width for index and offset types in GA.
GA_Size deletePrimitives(const GA_Range &range, bool and_points=false)
virtual int64 getMemoryUsage(bool inclusive) const
Compute memory usage (includes all shared memory)
GEO_Capture_Wire_Property
GA_Offset appendPointCopy(GA_Offset src)
void removeVariableName(const char *varname)
A range of elements in an index-map.
GLenum GLuint GLint GLint layer
SYS_FORCE_INLINE const GA_Attribute * findVertexAttrib(const GA_Attribute &src) const
SYS_FORCE_INLINE GA_Attribute * findDictArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
SYS_FORCE_INLINE const UT_StringHolder & getName() const
A string map of attributes to ease backward compatibility In the GB/GEO/GU library code would often p...
SYS_FORCE_INLINE GEO_Primitive * getGEOPrimitive(GA_Offset primoff)
SYS_FORCE_INLINE GA_Attribute * addPrimAttrib(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_Attribute * findPrimAttrib(const GA_Attribute &src)
SYS_FORCE_INLINE void destroyPrimAttrib(const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
SYS_FORCE_INLINE GA_Attribute * addVertexAttrib(const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
SYS_FORCE_INLINE const GEO_Primitive * getGEOPrimitive(GA_Offset off) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
UT_Array< EdgeAdjacencyData > GEO_EdgeAdjArray
SYS_FORCE_INLINE const GA_Attribute * findPointAttrib(const GA_Attribute &src) const
GLint GLint GLsizei GLint GLenum GLenum type
bool operator!=(const SoftSymmetryParms &other) const
UT_Matrix3T< FLOAT_T > myOrient
SYS_FORCE_INLINE GA_Attribute * addPrimAttrib(const GA_Attribute *src)
CaptureType
Methods for manipulating capture weights (GEO_CaptureWeight.C)
SYS_FORCE_INLINE GA_Attribute * findVertexAttrib(const GA_Attribute &src)
SYS_FORCE_INLINE const GA_Attribute * findGlobalAttrib(const GA_Attribute &src) const
UT_Array< PointAdjacencyData > GEO_PointAdjArray
Class used to keep track of inheritance of intrinsic attribute evaluation.
SYS_FORCE_INLINE GA_Attribute * addIntTuple(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())
friend std::ostream & operator<<(std::ostream &os, const GEO_Detail &d)
SYS_FORCE_INLINE bool promotePointAttrib(const UT_StringRef &name)
SYS_FORCE_INLINE GA_Attribute * addFloatArray(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())
SYS_FORCE_INLINE GA_Attribute * addGlobalAttrib(GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
UT_BoundingBoxT< float > UT_BoundingBox
SYS_FORCE_INLINE void destroyAttribute(GA_AttributeOwner owner, const UT_StringRef &name, const GA_AttributeFilter *filter=0)
static const UT_StringHolder theEmptyString
SYS_FORCE_INLINE const GA_Attribute * findNumericTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
SYS_FORCE_INLINE GA_Offset appendPoint()
Append a new point, returning its new data offset.
bool getPointBBox(UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_PointGroup *g=nullptr) const
SYS_FORCE_INLINE const GA_Attribute * findDictArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
SYS_FORCE_INLINE void destroyVertexAttrib(const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
Create macros which emulate the macros in the obsolete GB library.
SYS_FORCE_INLINE const GA_Attribute * findFloatArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
bool operator<(const GU_TetrahedronFacet &a, const GU_TetrahedronFacet &b)
GA_Offset myStartEdgePoint
GLdouble GLdouble GLint GLint order
A handle to simplify manipulation of multiple attributes.
SYS_FORCE_INLINE GA_Attribute * findFloatTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
SYS_FORCE_INLINE const GA_Attribute * findVertexVectorAttrib(GA_AttributeScope s, const UT_StringRef &n) const
Looks for a 3-float vertex attribute.
HUSD_API bool eval(VtValue &val, T &ret_val)
const GEO_Primitive * getGEOPrimitiveByIndex(GA_Index idx) const
GLuint const GLchar * name
#define SYS_DEPRECATED_HDK(__V__)
SYS_FORCE_INLINE GA_Attribute * addPointAttrib(const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
GEO_Primitive GB_MACRO_PRIM_TYPE
SYS_FORCE_INLINE void destroyPointAttrib(const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
SYS_FORCE_INLINE const GA_Attribute * findIndexPair(GA_AttributeOwner owner, const UT_StringRef &name) const
GA_Size GA_Index
Define the strictness of GA_Offset/GA_Index.
GA_API const UT_StringHolder transform
UT_Vector3T< FLOAT_T > myFwdVector
GA_API const UT_StringHolder orient
SYS_FORCE_INLINE GA_Attribute * growTuple(GA_AttributeOwner owner, const UT_StringRef &name, int added_size)
SYS_FORCE_INLINE GA_Attribute * findPointAttrib(const GA_Attribute &src)
SYS_FORCE_INLINE const GA_AttributeDict & attribs() const
bool destroyPointGroup(const char *name)
LocalXformContextT(const UT_Matrix3T< FLOAT_T > &orient, const UT_Vector3T< FLOAT_T > &origin, PivotSpace pivot_space)
SYS_FORCE_INLINE GA_Attribute * findFloatArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
GEO_Primitive * getGEOPrimitiveByIndex(GA_Index idx)
Contains transitional objects to provide some backward compatibility for code that references old GEO...
GEO_API const TypeMask GEOPRIMALL
SYS_FORCE_INLINE GA_Offset appendPointOffset()
A map of string to various well defined value types.
Class to return information about a GA_Detail.
GA_API const UT_StringHolder parms
SYS_FORCE_INLINE const GA_Attribute * findPrimAttrib(const GA_Attribute &src) const
SYS_FORCE_INLINE GA_Attribute * findStringArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
SYS_FORCE_INLINE GA_Attribute * findPointVectorAttrib(GA_AttributeScope s, const UT_StringRef &n)
SYS_FORCE_INLINE GA_Attribute * addGlobalAttrib(const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
SYS_FORCE_INLINE GA_Attribute * addDictTuple(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())
SYS_FORCE_INLINE bool demoteVertexAttrib(const UT_StringRef &name)
SYS_FORCE_INLINE const GA_Attribute * findPointVectorAttrib(const UT_StringRef &n) const
GA_Primitive * appendPrimitive(const GA_PrimitiveTypeId &type)
Append a primitive by GA_PrimitiveTypeId.
virtual void countMemory(UT_MemoryCounter &counter, bool inclusive) const
SYS_FORCE_INLINE GA_Attribute * findIntArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
static int asciiMagicH9()
Magic number for ASCII geometry files.
SYS_FORCE_INLINE const GA_Attribute * findIntArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
SYS_FORCE_INLINE GEO_Primitive * appendPrimitive(const GA_PrimitiveTypeId &type)
SYS_FORCE_INLINE GA_Attribute * addGlobalAttrib(const GA_Attribute *src)
SYS_FORCE_INLINE const GA_AttributeDict & primitiveAttribs() const
Utility class for containing a color ramp.
void destroyPointGroup(GA_PointGroup *g)
GEO_Capture_Muscle_Property
Class used to map the GA attribute into a form for H9 geometry files.
SYS_FORCE_INLINE GA_Attribute * findNumericArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
SYS_FORCE_INLINE GA_Size deletePoints(const GA_PointGroup &point_group, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES)
SYS_FORCE_INLINE GA_Attribute * addFloatTuple(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())
bool destroyPrimitiveGroup(const char *name)
SYS_FORCE_INLINE GA_Attribute * addStringArray(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())
SYS_FORCE_INLINE GA_Attribute * addPointAttrib(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_Attribute * findVertexVectorAttrib(const UT_StringRef &n)
SYS_FORCE_INLINE GA_Attribute * findPointVectorAttrib(const UT_StringRef &n)
Container class for all geometry.
SYS_FORCE_INLINE const GA_Attribute * findIntTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
UT_Vector3T< FLOAT_T > myOrigin
cgltf_primitive * getPrimitive(const cgltf_data &data, const GLTF_Index mesh_id, const GLTF_Index prim_id)
SYS_FORCE_INLINE void destroyGlobalAttrib(const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
GA_Offset appendPointCopy(GA_Offset src, GA_PointWrangler &wrangler)
Append a point, copying data from the source point.
PUGI__FN char_t * translate(char_t *buffer, const char_t *from, const char_t *to, size_t to_length)
SYS_FORCE_INLINE void destroyPrimAttrib(GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
SIM_API const UT_StringHolder distance
SYS_FORCE_INLINE GA_Attribute * addVertexAttrib(const GA_Attribute *src)
GEO_Capture_Meta_Property
SYS_FORCE_INLINE GA_Attribute * addStringTuple(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())
SYS_FORCE_INLINE const GA_Attribute * findStringArray(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
bool operator==(const SoftSymmetryParms &other) const
SYS_FORCE_INLINE GA_Attribute * findDictTuple(GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
Class to specify options for loading geometry.
SYS_FORCE_INLINE GA_Attribute * findVertexVectorAttrib(GA_AttributeScope s, const UT_StringRef &n)
LocalXformContextT(const UT_Vector3T< FLOAT_T > &forward, const UT_Vector3T< FLOAT_T > &up, PivotSpace pivot_space)
Coordinate frame defined by lookat(zero, forward, up).
GEO_CopyMethod
An enum for GEO_Detail::copy's method parameter.
bool destroyVertexGroup(const char *name)
SYS_FORCE_INLINE const GA_Attribute * findVertexVectorAttrib(const UT_StringRef &n) const
SYS_FORCE_INLINE const GA_AttributeDict & vertexAttribs() const
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter