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);
177 bool allow_extract =
false )
override;
184 return getCustomChildToWorldTransform( frame, t,
187 bool getObjectToChainParentTransform(
194 { myUseSolverFlag = onoff; }
196 {
return myUseSolverFlag; }
198 {
return myIsUsingSolverFlag; }
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,
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[];
537 OBJ_TransformComponent
type );
539 void transferLocalToPreTransformHelper(
fpreal gtime,
540 OBJ_TransformComponent
type );
542 bool getParmTransformFromBaseClass(
544 OBJ_TransformComponent
type );
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)
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)
GLuint const GLchar * name
#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
GLuint const GLfloat * val
void setLength(fpreal t, fpreal v)
GA_API const UT_StringHolder rot
virtual const char * getSetRotateParmName() const
void setCaptPoseT(fpreal t, fpreal x, fpreal y, fpreal z)
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)
GLint GLint GLint GLint GLint x
void setCaptPoseBoneLength(fpreal t, fpreal l)
GLint GLint GLint GLint GLint GLint y
fpreal XROLLOFF(fpreal t)
virtual void applyToCaptTransformAndDescendents(OP_Context &context, const UT_DMatrix4 &xform)
fpreal getCaptPoseRx(fpreal t)
GLint GLenum GLsizei GLint GLsizei const void * data
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)
GLuint GLsizei GLsizei * length
void setZMAX(fpreal t, fpreal v)
void setLinkDisplay(bool onoff)
fpreal getCaptPoseSz(fpreal t)
typedef int(WINAPI *PFNWGLRELEASEPBUFFERDCARBPROC)(HPBUFFERARB hPbuffer
void setCRotate(fpreal t, fpreal x, fpreal y, fpreal z)
fpreal CRSCALE(fpreal t, int i)
*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
virtual int getRelativeCaptureTransform(OP_Node &to, UT_Matrix4 &xform, OP_Context &context)
fpreal BONELENGTH(fpreal t, int thread)
#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)
GLuint GLuint GLsizei GLenum type
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()
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)
GLdouble GLdouble GLdouble r
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)