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(
191 {
return myPointStarts.entries() > 0
192 ? myPointStarts.entries()-1 : 0; }
196 {
return myRegionXforms.entries(); }
201 {
return myRegionNames[i]; }
206 {
return myRegionXforms[i]; }
211 {
return myUsedRegions.getBitFast(i); }
214 static bool getCaptureParms(
219 int& max_pt_regions);
221 using CaptureElementRange =
248 myCaptureElements.
begin() + myPointStarts[ptidx + 1]);
275 Method method = DEFORM_LINEAR,
276 bool create_missing_attribs =
false,
277 const char *blend_attrib =
nullptr);
280 {
return mySrcWeights->myRegionXforms.entries(); }
283 {
return mySrcWeights->regionName(i); }
292 void setRegionTransform(
298 void setFullRegionTransform(
305 bool setRegionTransformsFromGeo(
322 void appendDeformTasks(
324 void appendInverseDeformTasks(
339 void inverse_deform();
350 static bool getGlobalAttribBlendAttrib(
const GU_Detail *igdp,
357 void deformInParallel();
359 template <
bool ALIGNED,
bool INVERT>
360 void appendLinearTasks(
362 template <
bool ALIGNED,
bool INVERT>
363 void appendDualQuatTasks(
365 template <
bool ALIGNED,
bool INVERT>
366 void appendBlendedDualQuatTasks(
386 AttribPtrArray mySrcPromotedAttribs;
396 exint myNumTransformsSet;
401 #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)
GLuint const GLchar * name
GU_CaptureElement(int i, float w)
A range of elements in an index-map.
GLubyte GLubyte GLubyte GLubyte w
GLuint GLenum GLenum transform
GLint GLint GLsizei GLint GLenum GLenum type
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.
GA_Size GA_Index
Define the strictness of GA_Offset/GA_Index.