11 #ifndef __GU_LINEARSKINDEFORMER_H_INCLUDED__
12 #define __GU_LINEARSKINDEFORMER_H_INCLUDED__
78 myDQ.transform(src * myStretch, dst);
85 myDQ.transform(src, dst);
93 myDQ.getRotation().getRotationMatrix(dst);
102 dst *= myDQ.convertToXform();
109 myDQ.rotate(src, dst);
115 return src * myDQ.getRotation();
129 GU_LinearSkinDeformerSourceAttribs(
const GU_Detail *gdp);
131 int64 getMemoryUsage(
bool inclusive)
const;
161 int64 getMemoryUsage(
bool inclusive)
const;
174 int max_pt_weights = 0);
184 bool setRegionXformsFromGeo(
195 {
return myRegionXforms.entries(); }
200 {
return myRegionNames[i]; }
205 {
return myRegionXforms[i]; }
210 {
return myUsedRegions.getBitFast(i); }
213 static bool getCaptureParms(
218 int& max_pt_regions);
220 using CaptureElementRange =
250 myCaptureElements.
begin() + myPointStarts[ptidx + 1]);
277 Method method = DEFORM_LINEAR,
278 bool create_missing_attribs =
false,
279 const char *blend_attrib =
nullptr);
282 {
return mySrcWeights->myRegionXforms.entries(); }
285 {
return mySrcWeights->regionName(i); }
294 void setRegionTransform(
300 void setFullRegionTransform(
307 bool setRegionTransformsFromGeo(
325 void spawnDeformTasks(
327 void spawnInverseDeformTasks(
344 void inverseDeform();
356 static bool getGlobalAttribBlendAttrib(
const GU_Detail *igdp,
363 void deformInParallel();
365 template <
bool ALIGNED,
bool INVERT>
366 void spawnLinearTasks(
368 template <
bool ALIGNED,
bool INVERT>
369 void spawnDualQuatTasks(
371 template <
bool ALIGNED,
bool INVERT>
372 void spawnBlendedDualQuatTasks(
392 AttribPtrArray mySrcPromotedAttribs;
402 exint myNumTransformsSet;
405 #endif // __GU_LINEARSKINDEFORMER_H_INCLUDED__
Definition of a geometry attribute.
void leftMult(const UT_SymMatrix3T< S > &m)
Multiply given symmetric matrix on the left.
*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
UT_IteratorRange< IterT > UTmakeRange(IterT &&b, IterT &&e)
GU_CaptureElement(int i, float w)
A range of elements in an index-map.
This class provides a way to manage a reference to an attribute permitting Read-Only access...
bool operator>(const GU_CaptureElement &elem) const
#define SYS_DECLARE_IS_POD(T)
Declare a type as POD.
GLuint const GLchar * name
GA_Size GA_Index
Define the strictness of GA_Offset/GA_Index.
GA_API const UT_StringHolder transform
LeafData & operator=(const LeafData &)=delete
GLubyte GLubyte GLubyte GLubyte w