32 namespace GU_CurveFrame {
34 static constexpr
int theCurveUVComponent = 0;
35 static constexpr
int theCrossSectionUVComponent = 1;
192 template<
typename T,
typename OUTPUT_T,
typename FUNCTOR>
199 FUNCTOR &&extract_functor)
215 [geo,&transform_attrib,&interrupt,&output_attrib,&extract_functor](
const GA_SplittableRange &
r) {
230 for (
GA_Offset primoff = start; primoff <
end; ++primoff) {
236 const GA_Size npoints = nedges + !closed;
246 for (
GA_Size i = 0; i < npoints; ++i) {
248 output_attrib.
set(vtxoff, extract_functor(transform_attrib.get(vtxoff)));
251 GA_Offset dest_vtxoff = vertices(npoints);
253 output_attrib.
set(dest_vtxoff, extract_functor(transform_attrib.get(src_vtxoff)));
261 template<
int AXIS,
typename T,
typename OUTPUT_T>
UT_Vector3T< T > myIncAngles
Apply angle increment to each edge on top of previous edge's rotation.
Iteration over a range of elements.
bool myAdjustUpByCurvature
bool myUseEndTargetUpVector
bool blockAdvance(GA_Offset &start, GA_Offset &end)
T myUniformCurvatureScale
bool myContinuousClosedCurves
bool myExtrapolateEndTangents
void UTparallelForLightItems(const Range &range, const Body &body, const bool force_use_task_scope=true)
bool myTargetUpVectorAtStart
UT_Vector3T< T > myAngles
GA_ROHandleT< T > myRotAttribs[3]
exint GA_Size
Defines the bit width for index and offset types in GA.
void extractAttribFromTransform(GEO_Detail *geo, const GA_PrimitiveGroup *curve_group, const GA_ROHandleT< UT_Matrix4T< T >> &transform_attrib, const GA_RWHandleT< OUTPUT_T > &output_attrib, FUNCTOR &&extract_functor)
SYS_FORCE_INLINE GA_OffsetListRef getPrimitiveVertexList(GA_Offset primoff) const
UT_Vector3T< T > myEndTargetUpVector
GU_API void computeCurveTransforms(const GEO_Detail *const geo, const GA_PrimitiveGroup *curve_group, const GA_RWHandleT< UT_Matrix4T< T >> &transform_attrib, const CurveFrameParms< T > &parms)
GA_API const UT_StringHolder transform
bool myUseCurveNormalAsTargetUp
bool myStretchAroundTurns
bool myTransformByInstanceAttribs
Use incoming N, up, rot, orient, pscale, scale, pivot, trans, transform.
RotationPer myIncAnglePer[3]
NOTE: myIncAnglePer[2] will also be used for ensuring closed curve continuity.
const GEO_Detail * myBankingCurveGeo
void hardenAllPages(GA_Offset start_offset=GA_Offset(0), GA_Offset end_offset=GA_INVALID_OFFSET) override
Harden data pages.
SYS_FORCE_INLINE void set(GA_Offset off, const T &val) const
GA_ROHandleT< UT_Vector3T< T > > myTargetUpVectorAttrib
Utility class for containing a color ramp.
void extractAxisAttrib(GEO_Detail *geo, const GA_PrimitiveGroup *curve_group, const GA_ROHandleT< UT_Matrix4T< T >> &transform_attrib, const GA_RWHandleT< UT_Vector3T< OUTPUT_T >> &axis_attrib)
This works for AXIS == 0 (x), 1 (y), 2 (z), and 3 (translation).
GA_ROHandleT< T > myCurvatureScaleAttrib
UT_XformOrder::xyzOrder myRotationOrder
TangentType myTangentType
GA_ROHandleT< UT_Vector3T< T > > myEndTargetUpVectorAttrib
int myRotAttribComponent
Component of myRotAttribs being read. (default 0)
GA_Range getPrimitiveRange(const GA_PrimitiveGroup *group=0) const
Get a range of all primitives in the detail.
GA_ROHandleV3D myCurvatureAttrib
GU_API bool getPolyProperties(const GEO_Detail *geometry, const GA_OffsetListRef &vertices, exint &nedges, bool &closed, bool &unrolled)
bool myUseBankingCurve
Banking curve overrides instance up attribute.
UT_Vector3T< T > myTargetUpVector