24 #define BONESTATE_CHOPNET "KIN_Chops"
75 #define EVAL_FLOAT(name, idx, vi, t) \
76 return evalFloat(name, &getIndirect()[idx], vi, t);
77 #define EVAL_FLOAT_T(name, idx, vi, t, thread) \
78 return evalFloatT(name, &getIndirect()[idx], vi, t, thread);
79 #define EVAL_FLOATS(name, idx, v, t) \
80 evalFloats(name, &getIndirect()[idx], v, t);
81 #define EVAL_FLOATS_T(name, idx, v, t, stid) \
82 evalFloatsT(name, &getIndirect()[idx], v, t, stid);
83 #define EVAL_INT(name, idx, vi, t) \
84 return evalInt(name, &getIndirect()[idx], vi, t);
85 #define EVAL_BOOL(name, idx, vi, t) \
86 return (evalInt(name, &getIndirect()[idx], vi, t) != 0);
87 #define EVAL_STR(name, idx, vi, t) \
88 evalString(str, name, &getIndirect()[idx], vi, t);
90 #define SET_FLOAT(name, parm_index, vector_index, t, val) \
91 setChRefFloat(name, getIndirect()[parm_index], vector_index, t, val)
92 #define SET_FLOATREF(name, vector_index, t, val) \
93 setChRefFloat(getParmList()->getParmIndex(name), vector_index, t, val)
94 #define SET_INT(name, parm_index, vector_index, t, val) \
95 setChRefInt(name, getIndirect()[parm_index], vector_index, t, val)
96 #define SET_STRING(val, meaning, name, parm_index, vector_index, t) \
97 setChRefString(val,meaning, name, getIndirect()[parm_index], vector_index, t)
118 void setIsObjectRenderable(
bool val);
129 void cleanBoneTransform(
OP_Context &context );
158 virtual void getCaptureParmTransform(
OP_Context &context,
162 virtual void setCaptureParmTransform(
OP_Context &context,
167 void getAnimLocalToWorldTransform(
OP_Context &context,
169 void getAnimInverseLocalToWorldTransform(
OP_Context &context,
177 bool allow_extract =
false )
override;
184 return getCustomChildToWorldTransform( frame, t,
187 bool getObjectToChainParentTransform(
194 { myUseSolverFlag = onoff; }
196 {
return myUseSolverFlag; }
198 {
return myIsUsingSolverFlag; }
206 void setCaptureParameters(
OP_Context &context,
215 void alignRegionCaptureWithDeform(
OP_Context &context,
224 void alignRegionDeformWithCapture(
OP_Context &context,
227 void alignRegionDeformWithCapture(
OP_Context &context,
297 void setCaptLengthAndTranslateDescendents(
fpreal t,
299 void setCaptTransformAndDescendents(
fpreal t,
386 static void setGlobalKinOverride( KinOverride
val,
387 bool recook_bones =
true );
393 typedef int (*OBJ_BoneCallbackFunction)(
const OBJ_Bone *,
void *);
395 static void traverseAllBones( OBJ_BoneCallbackFunction fnct,
399 {
return theReferenceFrames; }
401 {
return theReferenceFrameNames; }
402 int getRestPosition(
const char *frame,
405 int setRestPosition(
const char *frame,
409 enum FrameType { FRAME_INVALID = -1, FRAME_WORLD = 0, FRAME_PARENT };
413 int getPosition(
const char *frame,
416 int setPosition(
const char *frame,
424 void getCookedLocalRotates(
OP_Context &context,
430 void getBoneToParentCaptureTranslate(
433 void getBoneToParentCaptureRotate(
438 void getBoneToParentCaptureRotate(
444 void setCaptureRotateInParentSpace(
453 void getBoneParentCaptureTransform(
462 bool create_keys =
false,
464 bool check_modified =
true)
override;
470 bool create_keys =
false,
472 bool check_modified =
true)
override;
480 bool follow_chan_refs =
false)
override;
484 void getCaptureRegions(
497 {
return boneIndirect; }
515 OP_Node *interest = 0)
override;
527 static int getReferenceFrame(
const char *frame);
529 static int *boneIndirect;
530 static KinOverride theGlobalKinOverride;
531 static const char *theReferenceFrames[];
532 static const char *theReferenceFrameNames[];
535 bool getParmTransformHelper(
OP_Context &context,
537 OBJ_TransformComponent
type );
539 void transferLocalToPreTransformHelper(
fpreal gtime,
540 OBJ_TransformComponent
type );
542 bool getParmTransformFromBaseClass(
544 OBJ_TransformComponent
type );
546 bool getParmTransformFromKin(
OP_Context &context,
554 static int applyCustomParmTransform(
557 int getCustomChildToWorldTransform(
559 int getCustomObjectToWorldTransform(
562 void adjustCaptureAndRestAngles(
565 int myCurrentReferenceFrame;
566 int myLastKinSolverOpId;
567 bool myUseSolverFlag;
568 bool myIsUsingSolverFlag;
void setCaptureDisplay(bool onoff)
virtual void transferPreToLocalTransform(fpreal gtime, bool follow_chan_refs=false)
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
fpreal CRROTATE(fpreal t, int i)
void getNodeSpecificInfoText(OP_Context &context, OP_NodeInfoParms &iparms) override
void setCRbotHeight(fpreal t, fpreal v)
fpreal getCaptPoseTz(fpreal t)
#define SET_INT(name, parm_index, vector_index, t, val)
void setYMIN(fpreal t, fpreal v)
static const char ** getReferenceFrameNames()
#define EVAL_FLOAT_T(name, idx, vi, t, thread)
OBJ_OBJECT_TYPE getObjectType() const override
void setLength(fpreal t, fpreal v)
GA_API const UT_StringHolder rot
GLdouble GLdouble GLdouble z
virtual const char * getSetRotateParmName() const
void setCaptPoseT(fpreal t, fpreal x, fpreal y, fpreal z)
GLuint GLsizei GLsizei * length
Parameters for OP_Node::getInfoText()/OP_Node::getNodeSpecificInfoText()
virtual void transferLocalToPreTransform(fpreal gtime)
CH_StringMeaning getStringMeaning(int pi, int vi, fpreal t) const
fpreal getCaptPoseBoneLength(fpreal t)
fpreal YROLLOFF(fpreal t)
bool getUseSolver() const
fpreal IKDAMPENING(fpreal t)
virtual bool getParmTransform(OP_Context &context, UT_DMatrix4 &xform)
void setCRtopCap(fpreal t, fpreal x, fpreal y, fpreal z)
fpreal CRBOTC(fpreal t, int i)
void setZMIN(fpreal t, fpreal v)
void setCRscale(fpreal t, fpreal x, fpreal y, fpreal z)
fpreal BONELENGTH(fpreal t)
void SOLVER(UT_String &str)
virtual void setScaleFromHandle(fpreal t, const UT_Vector3R &s, bool create_keys=false, int key_idx=-1, bool check_modified=true)
static PRM_Template * getTemplateList(OBJ_ParmsStyle style)
static PRM_Template * getObsolete()
#define SET_FLOAT(name, parm_index, vector_index, t, val)
void setXMIN(fpreal t, fpreal v)
void setXMAX(fpreal t, fpreal v)
void setCaptPoseBoneLength(fpreal t, fpreal l)
fpreal XROLLOFF(fpreal t)
virtual void applyToCaptTransformAndDescendents(OP_Context &context, const UT_DMatrix4 &xform)
fpreal getCaptPoseRx(fpreal t)
virtual int applyInputIndependentTransform(OP_Context &context, UT_DMatrix4 &mat)
void setUseSolver(bool onoff)
virtual bool getParmTransformTranslates(OP_Context &context, UT_DMatrix4 &xform)
fpreal getCaptPoseRy(fpreal t)
int getChildToWorldRestTransform(const char *frame, UT_DMatrix4 &xform, fpreal t)
#define EVAL_BOOL(name, idx, vi, t)
void setZMAX(fpreal t, fpreal v)
void setLinkDisplay(bool onoff)
fpreal getCaptPoseSz(fpreal t)
void setCRotate(fpreal t, fpreal x, fpreal y, fpreal z)
fpreal CRSCALE(fpreal t, int i)
virtual int getRelativeCaptureTransform(OP_Node &to, UT_Matrix4 &xform, OP_Context &context)
fpreal BONELENGTH(fpreal t, int thread)
GLuint const GLchar * name
#define EVAL_STR(name, idx, vi, t)
virtual bool getParmTransformScales(OP_Context &context, UT_DMatrix4 &xform)
static OP_Node * myConstructor(OP_Network *net, const char *name, OP_Operator *entry)
void setCRbotCap(fpreal t, fpreal x, fpreal y, fpreal z)
virtual int keepWorldTransform(OP_Context &context, const UT_DMatrix4 &world_xform, bool allow_extract=false)
int * getIndirect() const override
static KinOverride getGlobalKinOverride()
**Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
void fillInfoTreeNodeSpecific(UT_InfoTree &tree, const OP_NodeInfoTreeParms &parms) override
fpreal getCaptPoseTy(fpreal t)
fpreal ZROLLOFF(fpreal t)
Parameters for OP_Node::fillInfoTree()/OP_Node::fillInfoTreeNodeSpecific()
virtual int applyPreTransform(OP_Context &context, UT_DMatrix4 &mat)
virtual void transferLocalToPreTransformRotates(fpreal gtime)
Transfers only the rotate portion of the matrix to pre-transform.
virtual int isObjectRenderable(fpreal t) const
SYS_FORCE_INLINE void REST(fpreal *v, fpreal t, int stid)
#define EVAL_FLOATS_T(name, idx, v, t, stid)
fpreal CRCEN(fpreal t, int i)
#define EVAL_FLOAT(name, idx, vi, t)
static UT_XformOrder XFORM_ORDER
fpreal getCaptPoseTx(fpreal t)
fpreal getCaptPoseSx(fpreal t)
fpreal getCaptPoseRz(fpreal t)
void setCRcenter(fpreal t, fpreal x, fpreal y, fpreal z)
fpreal CRTOPC(fpreal t, int i)
bool isUsingSolver() const
virtual void setRotateFromHandle(fpreal t, const UT_Vector3R &r, bool create_keys=false, int key_idx=-1, bool check_modified=true)
#define SET_FLOATREF(name, vector_index, t, val)
void setYMAX(fpreal t, fpreal v)
virtual int buildLookAt(OP_Context &context, const UT_DMatrix4 &world, UT_DMatrix4 &lookat, OP_Node *interest=0)
fpreal getCaptPoseSy(fpreal t)
void REST(fpreal *v, fpreal t)
FrameType
Different types of local frames that can be computed for components.
OBJ_Bone * castToOBJBone() override
#define EVAL_FLOATS(name, idx, v, t)
void setRestY(fpreal t, fpreal v)
CH_StringMeaning SOLVERmeaning()
void setCaptPoseR(fpreal t, fpreal x, fpreal y, fpreal z)
void setRestX(fpreal t, fpreal v)
static const char ** getReferenceFrames()
void setCaptPoseS(fpreal t, fpreal x, fpreal y, fpreal z)
virtual bool getParmTransformRotates(OP_Context &context, UT_DMatrix4 &xform)
void setCRtopHeight(fpreal t, fpreal v)
void setRestZ(fpreal t, fpreal v)
#define SET_STRING(val, meaning, name, parm_index, vector_index, t)
void setSOLVER(const char *solver, CH_StringMeaning meaning)