|
Blender V4.3
|
Go to the source code of this file.
Macros | |
| #define | IK_STRETCH_STIFF_EPS 0.01f |
| #define | IK_STRETCH_STIFF_MIN 0.001f |
| #define | IK_STRETCH_STIFF_MAX 1e10 |
Typedefs | |
| typedef void | IK_Segment |
| typedef enum IK_SegmentAxis | IK_SegmentAxis |
| typedef void | IK_Solver |
Enumerations | |
| enum | IK_SegmentFlag { IK_XDOF = 1 , IK_YDOF = 2 , IK_ZDOF = 4 , IK_TRANS_XDOF = 8 , IK_TRANS_YDOF = 16 , IK_TRANS_ZDOF = 32 } |
| enum | IK_SegmentAxis { IK_X = 0 , IK_Y = 1 , IK_Z = 2 , IK_TRANS_X = 3 , IK_TRANS_Y = 4 , IK_TRANS_Z = 5 } |
| #define IK_STRETCH_STIFF_EPS 0.01f |
Definition at line 145 of file IK_solver.h.
Referenced by IK_SetStiffness().
| #define IK_STRETCH_STIFF_MAX 1e10 |
Definition at line 147 of file IK_solver.h.
Referenced by execute_posetree().
| #define IK_STRETCH_STIFF_MIN 0.001f |
Definition at line 146 of file IK_solver.h.
Referenced by execute_posetree().
| typedef void IK_Segment |
Typical order of calls for solving an IK problem:
The local transformation is then defined as: start * rest_basis * basis * basis_change * translation_change * translate(0,length,0)
Definition at line 80 of file IK_solver.h.
| typedef enum IK_SegmentAxis IK_SegmentAxis |
| typedef void IK_Solver |
An IK_Solver must be created to be able to execute the solver.
An arbitray number of goals can be created, stating that a given end effector must have a given position or rotation. If multiple goals are specified, they can be weighted (range 0..1) to get some control over their importance.
IK_Solve will execute the solver, that will run until either the system converges, or a maximum number of iterations is reached. It returns 1 if the system converged, 0 otherwise.
Definition at line 125 of file IK_solver.h.
| enum IK_SegmentAxis |
| Enumerator | |
|---|---|
| IK_X | |
| IK_Y | |
| IK_Z | |
| IK_TRANS_X | |
| IK_TRANS_Y | |
| IK_TRANS_Z | |
Definition at line 91 of file IK_solver.h.
| enum IK_SegmentFlag |
| Enumerator | |
|---|---|
| IK_XDOF | |
| IK_YDOF | |
| IK_ZDOF | |
| IK_TRANS_XDOF | |
| IK_TRANS_YDOF | |
| IK_TRANS_ZDOF | |
Definition at line 82 of file IK_solver.h.
|
extern |
Definition at line 97 of file IK_Solver.cpp.
References CreateSegment(), flag, NULL, rot, IK_QSegment::SetComposite(), and IK_QSegment::SetParent().
Referenced by execute_posetree().
| IK_Solver * IK_CreateSolver | ( | IK_Segment * | root | ) |
Definition at line 289 of file IK_Solver.cpp.
References NULL, and IK_QSolver::root.
Referenced by execute_posetree().
|
extern |
Definition at line 124 of file IK_Solver.cpp.
References IK_QSegment::Composite().
Referenced by execute_posetree().
| void IK_FreeSolver | ( | IK_Solver * | solver | ) |
Definition at line 301 of file IK_Solver.cpp.
References NULL, and IK_QSolver::tasks.
Referenced by execute_posetree().
|
extern |
Definition at line 252 of file IK_Solver.cpp.
References IK_QSegment::BasisChange(), IK_QSegment::Composite(), float, and IK_QSegment::Translational().
Referenced by execute_posetree().
|
extern |
Definition at line 274 of file IK_Solver.cpp.
References IK_QSegment::Composite(), float, IK_QSegment::Translational(), and IK_QSegment::TranslationChange().
Referenced by execute_posetree().
|
extern |
Definition at line 187 of file IK_Solver.cpp.
References IK_QSegment::Composite(), IK_TRANS_X, IK_TRANS_Y, IK_X, IK_Y, IK_Z, IK_QSegment::SetLimit(), and IK_QSegment::Translational().
Referenced by execute_posetree().
|
extern |
Definition at line 134 of file IK_Solver.cpp.
References IK_QSegment::Composite(), and IK_QSegment::SetParent().
Referenced by execute_posetree().
|
extern |
Definition at line 215 of file IK_Solver.cpp.
References IK_QSegment::Composite(), IK_STRETCH_STIFF_EPS, IK_TRANS_X, IK_TRANS_Y, IK_X, IK_Y, IK_Z, IK_QSegment::SetWeight(), and IK_QSegment::Translational().
Referenced by execute_posetree().
|
extern |
Definition at line 147 of file IK_Solver.cpp.
References IK_QSegment::Composite(), CreateMatrix(), and IK_QSegment::SetTransform().
Referenced by execute_posetree().
Definition at line 426 of file IK_Solver.cpp.
References NULL, IK_QSolver::root, IK_QJacobianSolver::Setup(), IK_QJacobianSolver::Solve(), IK_QSolver::solver, and IK_QSolver::tasks.
Referenced by execute_posetree().
| void IK_SolverAddGoal | ( | IK_Solver * | solver, |
| IK_Segment * | tip, | ||
| float | goal[3], | ||
| float | weight ) |
Definition at line 318 of file IK_Solver.cpp.
References IK_QSegment::Composite(), NULL, pos, IK_QTask::SetWeight(), and IK_QSolver::tasks.
Referenced by execute_posetree().
| void IK_SolverAddGoalOrientation | ( | IK_Solver * | solver, |
| IK_Segment * | tip, | ||
| float | goal[][3], | ||
| float | weight ) |
Definition at line 339 of file IK_Solver.cpp.
References IK_QSegment::Composite(), CreateMatrix(), NULL, rot, IK_QTask::SetWeight(), and IK_QSolver::tasks.
Referenced by execute_posetree().
Definition at line 394 of file IK_Solver.cpp.
References IK_QJacobianSolver::GetPoleAngle(), NULL, and IK_QSolver::solver.
Referenced by execute_posetree().
| void IK_SolverSetPoleVectorConstraint | ( | IK_Solver * | solver, |
| IK_Segment * | tip, | ||
| float | goal[3], | ||
| float | polegoal[3], | ||
| float | poleangle, | ||
| int | getangle ) |
Definition at line 369 of file IK_Solver.cpp.
References IK_QSegment::Composite(), NULL, IK_QJacobianSolver::SetPoleVectorConstraint(), and IK_QSolver::solver.
Referenced by execute_posetree().