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,
int doSpheres,
163 void copyEdgeWeightToVertex();
164 void unHole(
int maintain);
167 bool doMinAngle,
fpreal minAngle,
168 bool doMaxAngle,
fpreal maxAngle);
169 void createBoundaryGroup(
GA_Group *grp);
174 void createBoundaryGroup(
const GA_Edge &edge,
197 void deleteAllShareEdges();
204 int idx = myEdges.append(Q);
205 for (
int i = 0; i < 4; i++)
206 Q[i].init(i + idx * 4);
211 void removePoint(
int i);
213 void removeEdge(
int i);
219 void removeFace(
int i);
239 if (myRay)
delete myRay;
248 void deleteShareEdge(
GQ_Edge *edge,
255 int nEdges()
const {
return myEdges.entries();}
256 int nFaces()
const {
return myFaces.entries();}
257 int nPoints()
const {
return myPoints.entries();}
263 void simpleDecimate(
int targetPolys);
269 void save(std::ostream &os)
const;
271 { d.
save(os);
return os; }
278 {
return findEdge(edge, myGdp); }
295 void buildSuperPoints(
fpreal distance,
311 void createCreaseFace(
GQ_Edge *edge,
322 bool nonBridgeLoopHasFlag(
GQ_Edge *e,
342 int outputGroups = 0,
352 void uniqueEdge(
GQ_Edge *edge);
355 int twoFacesShareAllEdges(
GQ_Edge *edge,
359 void calcFacePoints(
int numfaces);
360 void calcEdgePoints(
int numedges,
363 void calcVertexPoints(
int numpoints,
370 void copyVertexAttributeByPoint(
int numpoints,
372 gq_SubdivideAttribHandler &ahandler);
374 void copyEdgeVertexAttributes(
int numedge);
377 void flagVertexBoundaries();
378 void subdivideEdges(
int numedges,
bool linear);
379 void subdivideFaces(
int numfaces,
380 gq_SubdivideAttribHandler &ahandler);
383 void copyVertexAttributes(
int numedges,
384 gq_SubdivideAttribHandler &);
388 gq_SubdivideAttribHandler &);
400 void createVirtualEdgePoints(
const UT_Vector4 &,
403 void createActualEdgePoints(
const UT_Vector4 &,
409 int, gq_SubdivideAttribHandler &);
414 gq_SubdivideAttribHandler &,
423 gq_SubdivideAttribHandler &);
GU_Detail * getDetail() const
GA_API const UT_StringHolder dist
GLboolean GLboolean GLboolean b
UT_ValArray< GQ_Face * > & getFaceList()
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.
GLuint GLuint GLfloat weight
const UT_Array< GQ_Point * > & getPointList() const
UT_Array< GQ_Point * > & getEdgePoints()
GLint GLint GLsizei GLsizei GLsizei depth
GLsizei GLsizei GLfloat distance
GLboolean GLboolean GLboolean GLboolean a
GQ_Edge * findEdge(const GA_Edge *edge)
UT_Array< GA_RWAttributeRef > & getOffsets()
A handle to simplify manipulation of multiple attributes.
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)
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
bool all(const vbool4 &v)
UT_DoubleArray & getEdgeWeights()
GLenum GLuint GLint GLenum face
constexpr T normalize(UT_FixedVector< T, D > &a) noexcept
UT_ValArray< GQ_Edge * > & getEdgeList()