46 class gq_SubdivideAttribHandler;
48 template<
typename T,
bool B>
class GA_EdgeT;
78 fpreal super_point_tolerance = 1E-6);
81 void clearAndDestroy();
98 int normalize,
int outputGroups,
108 bool fixsharededges =
false);
113 void createEdgeWeights();
132 void setCreaseWeight(
const GA_Edge &edge,
139 void setCreaseWeight(
const GA_Edge &gedge,
147 bool setEdgeWeight(
exint edge_index,
151 void dual(
const char *attribs_to_swap=NULL);
159 void makeWire(
fpreal radius,
161 bool dospheres,
bool docaps);
164 void copyEdgeWeightToVertex();
165 void unHole(
int maintain);
167 void createCuspGroup(
GA_Group *group,
168 bool doMinAngle,
fpreal minAngle,
169 bool doMaxAngle,
fpreal maxAngle);
170 void createBoundaryGroup(
GA_Group *grp);
175 void createBoundaryGroup(
const GA_Edge &edge,
198 void deleteAllShareEdges();
205 int idx = myEdges.append(Q);
206 for (
int i = 0; i < 4; i++)
207 Q[i].init(i + idx * 4);
212 void removePoint(
int i);
214 void removeEdge(
int i);
220 void removeFace(
int i);
240 if (myRay)
delete myRay;
249 void deleteShareEdge(
GQ_Edge *edge,
260 int nEdges()
const {
return myEdges.entries();}
261 int nFaces()
const {
return myFaces.entries();}
262 int nPoints()
const {
return myPoints.entries();}
265 int aboveOrBelow(
GQ_Face *face);
268 void simpleDecimate(
int targetPolys);
274 void save(std::ostream &os)
const;
276 { d.
save(os);
return os; }
283 {
return findEdge(edge, myGdp); }
300 void buildSuperPoints(
fpreal distance,
316 void createCreaseFace(
GQ_Edge *edge,
321 void addIntersectEdges(
GQ_Face *face,
327 bool nonBridgeLoopHasFlag(
GQ_Edge *e,
336 void removeAllPossibleBridges(
GQ_Face *face,
347 int outputGroups = 0,
353 void unHole(
GQ_Face *face,
int maintain);
357 void uniqueEdge(
GQ_Edge *edge);
360 int twoFacesShareAllEdges(
GQ_Edge *edge,
364 void calcFacePoints(
int numfaces);
365 void calcEdgePoints(
int numedges,
368 void calcVertexPoints(
int numpoints,
375 void copyVertexAttributeByPoint(
int numpoints,
377 gq_SubdivideAttribHandler &ahandler);
379 void copyEdgeVertexAttributes(
int numedge);
382 void flagVertexBoundaries();
383 void subdivideEdges(
int numedges,
bool linear);
384 void subdivideFaces(
int numfaces,
385 gq_SubdivideAttribHandler &ahandler);
388 void copyVertexAttributes(
int numedges,
389 gq_SubdivideAttribHandler &);
393 gq_SubdivideAttribHandler &);
405 void createVirtualEdgePoints(
const UT_Vector4 &,
408 void createActualEdgePoints(
const UT_Vector4 &,
414 int, gq_SubdivideAttribHandler &);
419 gq_SubdivideAttribHandler &,
428 gq_SubdivideAttribHandler &);
GU_Detail * getDetail() const
GA_API const UT_StringHolder dist
Definition of a geometry attribute.
UT_ValArray< GQ_Face * > & getFaceList()
SIM_API const UT_StringHolder angle
GLboolean GLboolean GLboolean GLboolean a
const UT_Array< GQ_Point * > & getEdgePoints() const
const UT_ValArray< GQ_Edge * > & getEdgeList() const
const UT_DoubleArray & getEdgeWeights() const
const UT_ValArray< GQ_Face * > & getFaceList() const
void save(std::ostream &os) const
exint GA_Size
Defines the bit width for index and offset types in GA.
SIM_API const UT_StringHolder all
const UT_Array< GQ_Point * > & getPointList() const
UT_Array< GQ_Point * > & getEdgePoints()
GQ_Edge * findEdge(const GA_Edge *edge)
UT_Array< GA_RWAttributeRef > & getOffsets()
A handle to simplify manipulation of multiple attributes.
GLboolean GLboolean GLboolean b
GLint GLint GLsizei GLsizei GLsizei depth
const GU_Detail * getGdp() const
virtual bool smooth(GA_AttributeOperand &d, GA_AttributeOperand &min, GA_AttributeOperand &max, GA_AttributeOperand &t) const
d = SYSsmooth(min, max, t);
GU_RayIntersect * getRay()
UT_Array< GQ_Point * > & getPointList()
void OIIO_UTIL_API split(string_view str, std::vector< string_view > &result, string_view sep=string_view(), int maxsplit=-1)
SIM_API const UT_StringHolder distance
friend std::ostream & operator<<(std::ostream &os, const GQ_Detail &d)
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER IMATH_HOSTDEVICE IMATH_CONSTEXPR14 T clip(const T &p, const Box< T > &box) IMATH_NOEXCEPT
UT_DoubleArray & getEdgeWeights()
constexpr T normalize(UT_FixedVector< T, D > &a) noexcept
UT_ValArray< GQ_Edge * > & getEdgeList()