Blender  V2.93
DNA_constraint_types.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  * Constraint DNA data
19  */
20 
25 #pragma once
26 
27 #include "DNA_ID.h"
28 #include "DNA_defs.h"
29 #include "DNA_listBase.h"
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 struct Action;
36 struct Ipo;
37 struct Text;
38 
39 /* channels reside in Object or Action (ListBase) constraintChannels */
40 // XXX deprecated... old AnimSys
41 typedef struct bConstraintChannel {
43  struct Ipo *ipo;
44  short flag;
45  char name[30];
47 
48 /* A Constraint */
49 typedef struct bConstraint {
50  struct bConstraint *next, *prev;
51 
53  void *data;
55  short type;
57  short flag;
58 
60  char ownspace;
62  char tarspace;
63 
64  /* An "expand" bit for each of the constraint's (sub)panels (uiPanelDataExpansion). */
66 
70  char space_subtarget[64];
71 
73  char name[64];
74 
76  float enforce;
78  float headtail;
79 
80  /* old animation system, deprecated for 2.5. */
82  struct Ipo *ipo DNA_DEPRECATED;
83 
84  /* below are readonly fields that are set at runtime
85  * by the solver for use in the GE (only IK atm) */
87  float lin_error;
89  float rot_error;
91 
92 /* Multiple-target constraints --------------------- */
93 
94 /* This struct defines a constraint target.
95  * It is used during constraint solving regardless of how many targets the
96  * constraint has.
97  */
98 typedef struct bConstraintTarget {
100 
102  struct Object *tar;
104  char subtarget[64];
105 
107  float matrix[4][4];
108 
110  short space;
112  short flag;
114  short type;
116  short rotOrder;
118  float weight;
119  char _pad[4];
121 
122 /* bConstraintTarget -> flag */
123 typedef enum eConstraintTargetFlag {
127 
128 /* bConstraintTarget/bConstraintOb -> type */
129 typedef enum eConstraintObType {
137  /* CONSTRAINT_OBTYPE_CV = 4, */ /* UNUSED */
139 
140 /* Python Script Constraint */
141 typedef struct bPythonConstraint {
143  struct Text *text;
146 
148  int flag;
150  int tarnum;
151 
154 
159  struct Object *tar;
164  char subtarget[64];
166 
167 /* Inverse-Kinematics (IK) constraint
168  * This constraint supports a variety of mode determine by the type field
169  * according to eConstraint_IK_Type.
170  * Some fields are used by all types, some are specific to some types
171  * This is indicated in the comments for each field
172  */
173 typedef struct bKinematicConstraint {
175  struct Object *tar;
177  short iterations;
179  short flag;
181  short rootbone;
185  char subtarget[64];
187  struct Object *poletar;
189  char polesubtarget[64];
191  float poleangle;
193  float weight;
197  float grabtarget[3];
199  short type;
201  short mode;
203  float dist;
205 
206 typedef enum eConstraint_IK_Type {
212 
213 /* Spline IK Constraint
214  * Aligns 'n' bones to the curvature defined by the curve,
215  * with the chain ending on the bone that owns this constraint,
216  * and starting on the nth parent.
217  */
218 typedef struct bSplineIKConstraint {
219  /* target(s) */
221  struct Object *tar;
222 
223  /* binding details */
228  float *points;
230  short numpoints;
232  short chainlen;
233 
234  /* settings */
236  short flag;
238  short xzScaleMode;
240  short yScaleMode;
241  short _pad[3];
242 
243  /* volume preservation settings */
244  float bulge;
245  float bulge_min;
246  float bulge_max;
249 
250 /* Armature Constraint */
251 typedef struct bArmatureConstraint {
253  int flag;
254  char _pad[4];
255 
259 
260 /* Single-target subobject constraints --------------------- */
261 
262 /* Track To Constraint */
263 typedef struct bTrackToConstraint {
264  struct Object *tar;
273  int flags;
274  char _pad[4];
276  char subtarget[64];
278 
279 /* Copy Rotation Constraint */
280 typedef struct bRotateLikeConstraint {
281  struct Object *tar;
282  int flag;
284  char mix_mode;
285  char _pad[2];
287  char subtarget[64];
289 
290 /* Copy Location Constraint */
291 typedef struct bLocateLikeConstraint {
292  struct Object *tar;
293  int flag;
296  char subtarget[64];
298 
299 /* Copy Scale Constraint */
300 typedef struct bSizeLikeConstraint {
301  struct Object *tar;
302  int flag;
303  float power;
305  char subtarget[64];
307 
308 /* Maintain Volume Constraint */
309 typedef struct bSameVolumeConstraint {
310  char free_axis;
311  char mode;
312  char _pad[2];
313  float volume;
315 
316 /* Copy Transform Constraint */
317 typedef struct bTransLikeConstraint {
318  struct Object *tar;
319  char mix_mode;
320  char _pad[7];
322  char subtarget[64];
324 
325 /* Floor Constraint */
326 typedef struct bMinMaxConstraint {
327  struct Object *tar;
329  float offset;
330  int flag;
332  char subtarget[64];
333  int _pad;
335 
336 /* Action Constraint */
337 typedef struct bActionConstraint {
338  struct Object *tar;
340  short type;
342  short local;
343  int start;
344  int end;
345  float min;
346  float max;
347  int flag;
348  char mix_mode;
349  char _pad[3];
350  float eval_time; /* Only used when flag ACTCON_USE_EVAL_TIME is set. */
351  struct bAction *act;
353  char subtarget[64];
355 
356 /* Locked Axis Tracking constraint */
357 typedef struct bLockTrackConstraint {
358  struct Object *tar;
360  int lockflag;
362  char subtarget[64];
364 
365 /* Damped Tracking constraint */
366 typedef struct bDampTrackConstraint {
367  struct Object *tar;
369  char _pad[4];
371  char subtarget[64];
373 
374 /* Follow Path constraints */
375 typedef struct bFollowPathConstraint {
377  struct Object *tar;
378 
380  float offset;
382  float offset_fac;
383 
385 
386  short trackflag;
387  short upflag;
389 
390 /* Stretch to constraint */
391 typedef struct bStretchToConstraint {
392  struct Object *tar;
393  int flag;
394  int volmode;
395  int plane;
396  float orglength;
397  float bulge;
398  float bulge_min;
399  float bulge_max;
402  char subtarget[64];
404 
405 /* Rigid Body constraint */
407  struct Object *tar;
408  struct Object *child;
409  int type;
410  float pivX;
411  float pivY;
412  float pivZ;
413  float axX;
414  float axY;
415  float axZ;
416  float minLimit[6];
417  float maxLimit[6];
418  float extraFz;
419  short flag;
420  char _pad[6];
422 
423 /* Clamp-To Constraint */
424 typedef struct bClampToConstraint {
426  struct Object *tar;
428  int flag;
430  int flag2;
432 
433 /* Child Of Constraint */
434 typedef struct bChildOfConstraint {
436  struct Object *tar;
438  int flag;
439  char _pad[4];
441  float invmat[4][4];
443  char subtarget[64];
445 
446 /* Generic Transform->Transform Constraint */
447 typedef struct bTransformConstraint {
449  struct Object *tar;
451  char subtarget[64];
452 
454  short from, to;
456  char map[3];
458  char expo;
459 
464 
469 
470  char _pad[3];
471 
473  float from_min[3];
475  float from_max[3];
477  float to_min[3];
478  float to_max[3];
479 
481  float from_min_rot[3];
483  float from_max_rot[3];
485  float to_min_rot[3];
486  float to_max_rot[3];
487 
489  float from_min_scale[3];
491  float from_max_scale[3];
493  float to_min_scale[3];
494  float to_max_scale[3];
496 
497 /* Pivot Constraint */
498 typedef struct bPivotConstraint {
499  /* Pivot Point:
500  * Either target object + offset, or just offset is used
501  */
503  struct Object *tar;
505  char subtarget[64];
507  float offset[3];
508 
509  /* Rotation-driven activation:
510  * This option provides easier one-stop setups for foot-rolls.
511  */
513  short rotAxis;
514 
515  /* General flags */
517  short flag;
519 
520 /* transform limiting constraints - zero target ---------------------------- */
521 /* Limit Location Constraint */
522 typedef struct bLocLimitConstraint {
523  float xmin, xmax;
524  float ymin, ymax;
525  float zmin, zmax;
526  short flag;
527  short flag2;
529 
530 /* Limit Rotation Constraint */
531 typedef struct bRotLimitConstraint {
532  float xmin, xmax;
533  float ymin, ymax;
534  float zmin, zmax;
535  short flag;
536  short flag2;
538 
539 /* Limit Scale Constraint */
540 typedef struct bSizeLimitConstraint {
541  float xmin, xmax;
542  float ymin, ymax;
543  float zmin, zmax;
544  short flag;
545  short flag2;
547 
548 /* Limit Distance Constraint */
549 typedef struct bDistLimitConstraint {
550  struct Object *tar;
552  char subtarget[64];
553 
555  float dist;
557  float soft;
558 
560  short flag;
562  short mode;
563  char _pad[4];
565 
566 /* ShrinkWrap Constraint */
567 typedef struct bShrinkwrapConstraint {
568  struct Object *target;
570  float dist;
572  short shrinkType;
574  char projAxis;
578  float projLimit;
582  char flag;
584  char trackAxis;
585  char _pad;
587 
588 /* Follow Track constraints */
589 typedef struct bFollowTrackConstraint {
590  struct MovieClip *clip;
592  char track[64];
593  int flag;
596  char object[64];
597  struct Object *camera;
598  struct Object *depth_ob;
600 
601 /* Camera Solver constraints */
602 typedef struct bCameraSolverConstraint {
603  struct MovieClip *clip;
604  int flag;
605  char _pad[4];
607 
608 /* Camera Solver constraints */
609 typedef struct bObjectSolverConstraint {
610  struct MovieClip *clip;
611  int flag;
612  char _pad[4];
614  char object[64];
616  float invmat[4][4];
617  struct Object *camera;
619 
620 /* Transform matrix cache constraint */
624  char object_path[1024];
625 
626  /* Runtime. */
628  char reader_object_path[1024];
630 
631 /* ------------------------------------------ */
632 
633 /* bConstraint->type
634  * - Do not ever change the order of these, or else files could get
635  * broken as their correct value cannot be resolved
636  */
637 typedef enum eBConstraint_Types {
665  /* CONSTRAINT_TYPE_DEPRECATED = 17 */
692 
693  /* NOTE: no constraints are allowed to be added after this */
696 
697 /* bConstraint->flag */
698 /* flags 0x2 (1 << 1) and 0x8 (1 << 3) were used in past */
699 /* flag 0x20 (1 << 5) was used to indicate that a constraint was evaluated
700  * using a 'local' hack for posebones only. */
701 typedef enum eBConstraint_Flags {
702 #ifdef DNA_DEPRECATED_ALLOW
703  /* Expansion for old box constraint layouts. Just for versioning. */
704  CONSTRAINT_EXPAND_DEPRECATED = (1 << 0),
705 #endif
706  /* pre-check for illegal object name or bone name */
707  CONSTRAINT_DISABLE = (1 << 2),
708  /* to indicate which Ipo should be shown, maybe for 3d access later too */
709  CONSTRAINT_ACTIVE = (1 << 4),
710  /* to indicate that the owner's space should only be changed into ownspace, but not out of it */
712  /* influence ipo is on constraint itself, not in action channel */
713  CONSTRAINT_OWN_IPO = (1 << 7),
714  /* indicates that constraint was added locally (i.e. didn't come from the proxy-lib) */
716  /* indicates that constraint is temporarily disabled (only used in GE) */
717  CONSTRAINT_OFF = (1 << 9),
718  /* use bbone curve shape when calculating headtail values (also used by dependency graph!) */
720  /* That constraint has been inserted in local override (i.e. it can be fully edited!). */
722  /* use full transformation (not just segment locations) - only set at runtime */
725 
726 /* bConstraint->ownspace/tarspace */
742  CONSTRAINT_SPACE_INVALID = 4, /* do not exchange for anything! */
744 
745 /* Common enum for constraints that support override. */
749 
758 
759 /* -------------------------------------- */
760 
761 /* bRotateLikeConstraint.flag */
762 typedef enum eCopyRotation_Flags {
763  ROTLIKE_X = (1 << 0),
764  ROTLIKE_Y = (1 << 1),
765  ROTLIKE_Z = (1 << 2),
766  ROTLIKE_X_INVERT = (1 << 4),
767  ROTLIKE_Y_INVERT = (1 << 5),
768  ROTLIKE_Z_INVERT = (1 << 6),
769 #ifdef DNA_DEPRECATED_ALLOW
770  ROTLIKE_OFFSET = (1 << 7),
771 #endif
773 
774 /* bRotateLikeConstraint.mix_mode */
775 typedef enum eCopyRotation_MixMode {
776  /* Replace rotation channel values. */
778  /* Legacy Offset mode - don't use. */
780  /* Add Euler components together. */
782  /* Multiply the copied rotation on the left. */
784  /* Multiply the copied rotation on the right. */
787 
788 /* bLocateLikeConstraint.flag */
789 typedef enum eCopyLocation_Flags {
790  LOCLIKE_X = (1 << 0),
791  LOCLIKE_Y = (1 << 1),
792  LOCLIKE_Z = (1 << 2),
794  LOCLIKE_TIP = (1 << 3),
795  LOCLIKE_X_INVERT = (1 << 4),
796  LOCLIKE_Y_INVERT = (1 << 5),
797  LOCLIKE_Z_INVERT = (1 << 6),
798  LOCLIKE_OFFSET = (1 << 7),
800 
801 /* bSizeLikeConstraint.flag */
802 typedef enum eCopyScale_Flags {
803  SIZELIKE_X = (1 << 0),
804  SIZELIKE_Y = (1 << 1),
805  SIZELIKE_Z = (1 << 2),
806  SIZELIKE_OFFSET = (1 << 3),
807  SIZELIKE_MULTIPLY = (1 << 4),
808  SIZELIKE_UNIFORM = (1 << 5),
810 
811 /* bTransLikeConstraint.mix_mode */
813  /* Replace rotation channel values. */
815  /* Multiply the copied transformation on the left, with anti-shear scale handling. */
817  /* Multiply the copied transformation on the right, with anti-shear scale handling. */
820 
821 /* bTransformConstraint.to/from */
822 typedef enum eTransform_ToFrom {
827 
828 /* bTransformConstraint.mix_mode_loc */
829 typedef enum eTransform_MixModeLoc {
830  /* Add component values together (default). */
832  /* Replace component values. */
835 
836 /* bTransformConstraint.mix_mode_rot */
837 typedef enum eTransform_MixModeRot {
838  /* Add component values together (default). */
840  /* Replace component values. */
842  /* Multiply the generated rotation on the left. */
844  /* Multiply the generated rotation on the right. */
847 
848 /* bTransformConstraint.mix_mode_scale */
850  /* Replace component values (default). */
852  /* Multiply component values together. */
855 
856 /* bSameVolumeConstraint.free_axis */
857 typedef enum eSameVolume_Axis {
862 
863 /* bSameVolumeConstraint.mode */
864 typedef enum eSameVolume_Mode {
865  /* Strictly maintain the volume, overriding non-free axis scale. */
867  /* Maintain the volume when scale is uniform, pass non-uniform other axis scale through. */
869  /* Maintain the volume when scaled only on the free axis, pass other axis scale through. */
872 
873 /* bActionConstraint.flag */
875  /* Bones use "object" part of target action, instead of "same bone name" part */
877  /* Ignore the transform of 'tar' and use 'eval_time' instead: */
880 
881 /* bActionConstraint.mix_mode */
883  /* Multiply the action transformation on the right. */
885  /* Multiply the action transformation on the right, with anti-shear scale handling. */
887  /* Multiply the action transformation on the left, with anti-shear scale handling. */
890 
891 /* Locked-Axis Values (Locked Track) */
892 typedef enum eLockAxis_Modes {
893  LOCK_X = 0,
894  LOCK_Y = 1,
895  LOCK_Z = 2,
897 
898 /* Up-Axis Values (TrackTo and Locked Track) */
899 typedef enum eUpAxis_Modes {
900  UP_X = 0,
901  UP_Y = 1,
902  UP_Z = 2,
904 
905 /* Tracking axis (TrackTo, Locked Track, Damped Track) and minmax (floor) constraint */
906 typedef enum eTrackToAxis_Modes {
907  TRACK_X = 0,
908  TRACK_Y = 1,
909  TRACK_Z = 2,
910  TRACK_nX = 3,
911  TRACK_nY = 4,
912  TRACK_nZ = 5,
914 
915 /* Shrinkwrap flags */
916 typedef enum eShrinkwrap_Flags {
917  /* Also raycast in the opposite direction. */
919  /* Invert the cull mode when projecting opposite. */
921  /* Align the specified axis to the target normal. */
923 
924  /* Ignore front faces in project; same value as MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE */
926  /* Ignore back faces in project; same value as MOD_SHRINKWRAP_CULL_TARGET_BACKFACE */
929 
930 #define CON_SHRINKWRAP_PROJECT_CULL_MASK \
931  (CON_SHRINKWRAP_PROJECT_CULL_FRONTFACE | CON_SHRINKWRAP_PROJECT_CULL_BACKFACE)
932 
933 /* FollowPath flags */
934 typedef enum eFollowPath_Flags {
935  FOLLOWPATH_FOLLOW = (1 << 0),
936  FOLLOWPATH_STATIC = (1 << 1),
937  FOLLOWPATH_RADIUS = (1 << 2),
939 
940 /* bTrackToConstraint->flags */
941 typedef enum eTrackTo_Flags {
942  TARGET_Z_UP = (1 << 0),
944 
945 /* Stretch To Constraint -> volmode */
946 typedef enum eStretchTo_VolMode {
948  VOLUME_X = 1,
949  VOLUME_Z = 2,
952 
953 /* Stretch To Constraint -> plane mode */
954 typedef enum eStretchTo_PlaneMode {
955  PLANE_X = 0,
956  SWING_Y = 1,
957  PLANE_Z = 2,
959 
960 /* Clamp-To Constraint ->flag */
961 typedef enum eClampTo_Modes {
967 
968 /* ClampTo Constraint ->flag2 */
969 typedef enum eClampTo_Flags {
970  CLAMPTO_CYCLIC = (1 << 0),
972 
973 /* bKinematicConstraint->flag */
974 typedef enum eKinematic_Flags {
975  CONSTRAINT_IK_TIP = (1 << 0),
976  CONSTRAINT_IK_ROT = (1 << 1),
977  /* targetless */
978  CONSTRAINT_IK_AUTO = (1 << 2),
979  /* autoik */
980  CONSTRAINT_IK_TEMP = (1 << 3),
982  CONSTRAINT_IK_POS = (1 << 5),
985  /* limit axis */
992  /* axis relative to target */
995 
996 /* bSplineIKConstraint->flag */
997 typedef enum eSplineIK_Flags {
998  /* chain has been attached to spline */
1000  /* root of chain is not influenced by the constraint */
1002 #ifdef DNA_DEPRECATED_ALLOW
1003  /* bones in the chain should not scale to fit the curve */
1004  CONSTRAINT_SPLINEIK_SCALE_LIMITED = (1 << 2),
1005 #endif
1006  /* evenly distribute the bones along the path regardless of length */
1008  /* don't adjust the x and z scaling of the bones by the curve radius */
1010 
1011  /* for "volumetric" xz scale mode, limit the minimum or maximum scale values */
1014 
1015  /* apply volume preservation over original scaling of the bone */
1018 
1019 /* bSplineIKConstraint->xzScaleMode */
1021  /* no x/z scaling */
1023  /* bones in the chain should take their x/z scales from the original scaling */
1025  /* x/z scales are the inverse of the y-scale */
1027  /* x/z scales are computed using a volume preserving technique (from Stretch To constraint) */
1030 
1031 /* bSplineIKConstraint->yScaleMode */
1033  /* no y scaling */
1035  /* bones in the chain should be scaled to fit the length of the curve */
1037  /* bones in the chain should take their y scales from the original scaling */
1040 
1041 /* bArmatureConstraint -> flag */
1042 typedef enum eArmature_Flags {
1050 
1051 /* MinMax (floor) flags */
1052 typedef enum eFloor_Flags {
1053  /* MINMAX_STICKY = (1 << 0), */ /* Deprecated. */
1054  /* MINMAX_STUCK = (1 << 1), */ /* Deprecated. */
1055  MINMAX_USEROT = (1 << 2),
1057 
1058 /* transform limiting constraints -> flag2 */
1060  /* not used anymore - for older Limit Location constraints only */
1061  /* LIMIT_NOPARENT = (1 << 0), */ /* UNUSED */
1062  /* for all Limit constraints - allow to be used during transform? */
1063  LIMIT_TRANSFORM = (1 << 1),
1065 
1066 /* transform limiting constraints -> flag (own flags) */
1068  LIMIT_XMIN = (1 << 0),
1069  LIMIT_XMAX = (1 << 1),
1070  LIMIT_YMIN = (1 << 2),
1071  LIMIT_YMAX = (1 << 3),
1072  LIMIT_ZMIN = (1 << 4),
1073  LIMIT_ZMAX = (1 << 5),
1075 
1076 /* limit rotation constraint -> flag (own flags) */
1077 typedef enum eRotLimit_Flags {
1078  LIMIT_XROT = (1 << 0),
1079  LIMIT_YROT = (1 << 1),
1080  LIMIT_ZROT = (1 << 2),
1082 
1083 /* distance limit constraint */
1084 /* bDistLimitConstraint->flag */
1085 typedef enum eDistLimit_Flag {
1086  /* "soft" cushion effect when reaching the limit sphere */ // NOT IMPLEMENTED!
1087  LIMITDIST_USESOFT = (1 << 0),
1088  /* as for all Limit constraints - allow to be used during transform? */
1091 
1092 /* bDistLimitConstraint->mode */
1093 typedef enum eDistLimit_Modes {
1098 
1099 /* python constraint -> flag */
1100 typedef enum ePyConstraint_Flags {
1101  PYCON_USETARGETS = (1 << 0),
1102  PYCON_SCRIPTERROR = (1 << 1),
1104 
1105 /* ChildOf Constraint -> flag */
1106 typedef enum eChildOf_Flags {
1107  CHILDOF_LOCX = (1 << 0),
1108  CHILDOF_LOCY = (1 << 1),
1109  CHILDOF_LOCZ = (1 << 2),
1110  CHILDOF_ROTX = (1 << 3),
1111  CHILDOF_ROTY = (1 << 4),
1112  CHILDOF_ROTZ = (1 << 5),
1113  CHILDOF_SIZEX = (1 << 6),
1114  CHILDOF_SIZEY = (1 << 7),
1115  CHILDOF_SIZEZ = (1 << 8),
1117  /* Temporary flag used by the Set Inverse operator. */
1120 
1121 /* Pivot Constraint */
1122 /* Restrictions for Pivot Constraint axis to consider for enabling constraint */
1124  /* do not consider this activity-clamping */
1126 
1127  /* consider -ve x-axis rotations */
1129  /* consider -ve y-axis rotations */
1131  /* consider -ve z-axis rotations */
1133 
1134  /* consider +ve x-axis rotations */
1136  /* consider +ve y-axis rotations */
1138  /* consider +ve z-axis rotations */
1141 
1142 /* settings for Pivot Constraint in general */
1144  /* offset is to be interpreted as being a fixed-point in space */
1146  /* rotation-based activation uses negative rotation to drive result */
1149 
1150 typedef enum eFollowTrack_Flags {
1155 
1161 
1162 /* CameraSolver Constraint -> flag */
1163 typedef enum eCameraSolver_Flags {
1166 
1167 /* ObjectSolver Constraint -> flag */
1168 typedef enum eObjectSolver_Flags {
1170  /* Temporary flag used by the Set Inverse operator. */
1173 
1174 /* ObjectSolver Constraint -> flag */
1175 typedef enum eStretchTo_Flags {
1179 
1180 /* important: these defines need to match up with PHY_DynamicTypes headerfile */
1181 #define CONSTRAINT_RB_BALL 1
1182 #define CONSTRAINT_RB_HINGE 2
1183 #define CONSTRAINT_RB_CONETWIST 4
1184 #define CONSTRAINT_RB_VEHICLE 11
1185 #define CONSTRAINT_RB_GENERIC6DOF 12
1186 
1187 #ifdef __cplusplus
1188 }
1189 #endif
ID and Library types, which are fundamental for sdna.
struct bStretchToConstraint bStretchToConstraint
eBConstraint_Flags
@ CONSTRAINT_BBONE_SHAPE
@ CONSTRAINT_OFF
@ CONSTRAINT_OVERRIDE_LIBRARY_LOCAL
@ CONSTRAINT_PROXY_LOCAL
@ CONSTRAINT_SPACEONCE
@ CONSTRAINT_ACTIVE
@ CONSTRAINT_DISABLE
@ CONSTRAINT_OWN_IPO
@ CONSTRAINT_BBONE_SHAPE_FULL
eCopyScale_Flags
@ SIZELIKE_MULTIPLY
@ SIZELIKE_Z
@ SIZELIKE_UNIFORM
@ SIZELIKE_Y
@ SIZELIKE_X
@ SIZELIKE_OFFSET
struct bFollowTrackConstraint bFollowTrackConstraint
struct bActionConstraint bActionConstraint
eKinematic_Flags
@ CONSTRAINT_IK_ROT
@ CONSTRAINT_IK_NO_ROT_X
@ CONSTRAINT_IK_TARGETAXIS
@ CONSTRAINT_IK_NO_POS_Z
@ CONSTRAINT_IK_GETANGLE
@ CONSTRAINT_IK_TEMP
@ CONSTRAINT_IK_NO_POS_Y
@ CONSTRAINT_IK_SETANGLE
@ CONSTRAINT_IK_NO_ROT_Y
@ CONSTRAINT_IK_POS
@ CONSTRAINT_IK_NO_POS_X
@ CONSTRAINT_IK_NO_ROT_Z
@ CONSTRAINT_IK_AUTO
@ CONSTRAINT_IK_STRETCH
@ CONSTRAINT_IK_TIP
eConstraintTargetFlag
@ CONSTRAINT_TAR_TEMP
struct bConstraintTarget bConstraintTarget
eCopyRotation_MixMode
@ ROTLIKE_MIX_OFFSET
@ ROTLIKE_MIX_BEFORE
@ ROTLIKE_MIX_AFTER
@ ROTLIKE_MIX_REPLACE
@ ROTLIKE_MIX_ADD
eBConstraint_Types
@ CONSTRAINT_TYPE_TRACKTO
@ CONSTRAINT_TYPE_PIVOT
@ CONSTRAINT_TYPE_CHILDOF
@ CONSTRAINT_TYPE_TRANSFORM
@ CONSTRAINT_TYPE_FOLLOWTRACK
@ CONSTRAINT_TYPE_OBJECTSOLVER
@ CONSTRAINT_TYPE_ARMATURE
@ CONSTRAINT_TYPE_LOCLIKE
@ CONSTRAINT_TYPE_SHRINKWRAP
@ CONSTRAINT_TYPE_MINMAX
@ CONSTRAINT_TYPE_ROTLIMIT
@ CONSTRAINT_TYPE_CAMERASOLVER
@ CONSTRAINT_TYPE_ROTLIKE
@ CONSTRAINT_TYPE_SPLINEIK
@ CONSTRAINT_TYPE_PYTHON
@ CONSTRAINT_TYPE_KINEMATIC
@ CONSTRAINT_TYPE_NULL
@ NUM_CONSTRAINT_TYPES
@ CONSTRAINT_TYPE_DISTLIMIT
@ CONSTRAINT_TYPE_TRANSLIKE
@ CONSTRAINT_TYPE_LOCLIMIT
@ CONSTRAINT_TYPE_CLAMPTO
@ CONSTRAINT_TYPE_LOCKTRACK
@ CONSTRAINT_TYPE_SIZELIMIT
@ CONSTRAINT_TYPE_ACTION
@ CONSTRAINT_TYPE_FOLLOWPATH
@ CONSTRAINT_TYPE_STRETCHTO
@ CONSTRAINT_TYPE_SIZELIKE
@ CONSTRAINT_TYPE_SAMEVOL
@ CONSTRAINT_TYPE_DAMPTRACK
@ CONSTRAINT_TYPE_TRANSFORM_CACHE
eSameVolume_Axis
eConstraintObType
@ CONSTRAINT_OBTYPE_OBJECT
@ CONSTRAINT_OBTYPE_BONE
@ CONSTRAINT_OBTYPE_VERT
struct bShrinkwrapConstraint bShrinkwrapConstraint
@ LIMITDIST_INSIDE
@ LIMITDIST_OUTSIDE
@ LIMITDIST_ONSURFACE
@ CONSTRAINT_ARMATURE_QUATERNION
@ CONSTRAINT_ARMATURE_ENVELOPE
@ CONSTRAINT_ARMATURE_CUR_LOCATION
struct bLocateLikeConstraint bLocateLikeConstraint
struct bChildOfConstraint bChildOfConstraint
eCameraSolver_Flags
@ CAMERASOLVER_ACTIVECLIP
struct bSplineIKConstraint bSplineIKConstraint
eFollowTrack_Flags
@ FOLLOWTRACK_USE_UNDISTORTION
@ FOLLOWTRACK_USE_3D_POSITION
@ FOLLOWTRACK_ACTIVECLIP
@ MINMAX_USEROT
struct bLockTrackConstraint bLockTrackConstraint
struct bRigidBodyJointConstraint bRigidBodyJointConstraint
eActionConstraint_Flags
@ ACTCON_BONE_USE_OBJECT_ACTION
@ ACTCON_USE_EVAL_TIME
struct bTransformConstraint bTransformConstraint
struct bSizeLimitConstraint bSizeLimitConstraint
struct bArmatureConstraint bArmatureConstraint
@ TARGET_Z_UP
struct bDistLimitConstraint bDistLimitConstraint
struct bMinMaxConstraint bMinMaxConstraint
eTransform_MixModeScale
@ TRANS_MIXSCALE_MULTIPLY
@ TRANS_MIXSCALE_REPLACE
eSplineIK_YScaleModes
@ CONSTRAINT_SPLINEIK_YS_NONE
@ CONSTRAINT_SPLINEIK_YS_FIT_CURVE
@ CONSTRAINT_SPLINEIK_YS_ORIGINAL
eTransform_MixModeLoc
@ TRANS_MIXLOC_ADD
@ TRANS_MIXLOC_REPLACE
eBConstraint_SpaceTypes
@ CONSTRAINT_SPACE_CUSTOM
@ CONSTRAINT_SPACE_INVALID
@ CONSTRAINT_SPACE_POSE
@ CONSTRAINT_SPACE_WORLD
@ CONSTRAINT_SPACE_LOCAL
@ CONSTRAINT_SPACE_PARLOCAL
struct bTrackToConstraint bTrackToConstraint
eActionConstraint_MixMode
@ ACTCON_MIX_BEFORE
@ ACTCON_MIX_AFTER_FULL
@ ACTCON_MIX_AFTER
eFollowPath_Flags
@ FOLLOWPATH_FOLLOW
@ FOLLOWPATH_RADIUS
@ FOLLOWPATH_STATIC
eTransformLimits_Flags2
@ LIMIT_TRANSFORM
struct bSizeLikeConstraint bSizeLikeConstraint
ePyConstraint_Flags
@ PYCON_USETARGETS
@ PYCON_SCRIPTERROR
struct bClampToConstraint bClampToConstraint
struct bSameVolumeConstraint bSameVolumeConstraint
eTransformLimits_Flags
@ CONSTRAINT_SPLINEIK_EVENSPLITS
@ CONSTRAINT_SPLINEIK_USE_BULGE_MAX
@ CONSTRAINT_SPLINEIK_USE_ORIGINAL_SCALE
@ CONSTRAINT_SPLINEIK_USE_BULGE_MIN
@ CONSTRAINT_SPLINEIK_BOUND
@ CONSTRAINT_SPLINEIK_NO_CURVERAD
@ CONSTRAINT_SPLINEIK_NO_ROOT
struct bTransLikeConstraint bTransLikeConstraint
struct bLocLimitConstraint bLocLimitConstraint
eCopyTransforms_MixMode
@ TRANSLIKE_MIX_AFTER
@ TRANSLIKE_MIX_BEFORE
@ TRANSLIKE_MIX_REPLACE
struct bRotateLikeConstraint bRotateLikeConstraint
eObjectSolver_Flags
@ OBJECTSOLVER_ACTIVECLIP
@ OBJECTSOLVER_SET_INVERSE
eShrinkwrap_Flags
@ CON_SHRINKWRAP_PROJECT_INVERT_CULL
@ CON_SHRINKWRAP_PROJECT_OPPOSITE
@ CON_SHRINKWRAP_PROJECT_CULL_FRONTFACE
@ CON_SHRINKWRAP_PROJECT_CULL_BACKFACE
@ CON_SHRINKWRAP_TRACK_NORMAL
@ CLAMPTO_CYCLIC
eConstraint_IK_Type
@ CONSTRAINT_IK_COPYPOSE
@ CONSTRAINT_IK_DISTANCE
struct bTransformCacheConstraint bTransformCacheConstraint
struct bConstraint bConstraint
eTrackToAxis_Modes
ePivotConstraint_Axis
@ PIVOTCON_AXIS_X_NEG
@ PIVOTCON_AXIS_X
@ PIVOTCON_AXIS_Z
@ PIVOTCON_AXIS_Z_NEG
@ PIVOTCON_AXIS_Y
@ PIVOTCON_AXIS_NONE
@ PIVOTCON_AXIS_Y_NEG
eSameVolume_Mode
@ SAMEVOL_SINGLE_AXIS
@ SAMEVOL_STRICT
@ SAMEVOL_UNIFORM
ePivotConstraint_Flag
@ PIVOTCON_FLAG_OFFSET_ABS
@ PIVOTCON_FLAG_ROTACT_NEG
eConstraint_EulerOrder
@ CONSTRAINT_EULER_XZY
@ CONSTRAINT_EULER_YXZ
@ CONSTRAINT_EULER_ZYX
@ CONSTRAINT_EULER_AUTO
@ CONSTRAINT_EULER_ZXY
@ CONSTRAINT_EULER_YZX
@ CONSTRAINT_EULER_XYZ
@ LIMITDIST_TRANSFORM
@ LIMITDIST_USESOFT
@ STRETCHTOCON_USE_BULGE_MAX
@ STRETCHTOCON_USE_BULGE_MIN
struct bConstraintChannel bConstraintChannel
eCopyRotation_Flags
@ ROTLIKE_Y_INVERT
@ ROTLIKE_Z_INVERT
@ ROTLIKE_X_INVERT
struct bObjectSolverConstraint bObjectSolverConstraint
eCopyLocation_Flags
@ LOCLIKE_Z_INVERT
@ LOCLIKE_Y_INVERT
@ LOCLIKE_TIP
@ LOCLIKE_OFFSET
@ LOCLIKE_X_INVERT
struct bKinematicConstraint bKinematicConstraint
struct bRotLimitConstraint bRotLimitConstraint
eStretchTo_PlaneMode
eStretchTo_VolMode
struct bPythonConstraint bPythonConstraint
struct bFollowPathConstraint bFollowPathConstraint
struct bCameraSolverConstraint bCameraSolverConstraint
struct bPivotConstraint bPivotConstraint
@ CHILDOF_ROTY
@ CHILDOF_LOCZ
@ CHILDOF_ROTX
@ CHILDOF_SIZEX
@ CHILDOF_SIZEZ
@ CHILDOF_LOCX
@ CHILDOF_SIZEY
@ CHILDOF_ROTZ
@ CHILDOF_SET_INVERSE
@ CHILDOF_LOCY
eSplineIK_XZScaleModes
@ CONSTRAINT_SPLINEIK_XZS_VOLUMETRIC
@ CONSTRAINT_SPLINEIK_XZS_ORIGINAL
@ CONSTRAINT_SPLINEIK_XZS_NONE
@ CONSTRAINT_SPLINEIK_XZS_INVERSE
eTransform_ToFrom
@ TRANS_SCALE
@ TRANS_ROTATION
@ TRANS_LOCATION
@ CLAMPTO_AUTO
eTransform_MixModeRot
@ TRANS_MIXROT_REPLACE
@ TRANS_MIXROT_ADD
@ TRANS_MIXROT_BEFORE
@ TRANS_MIXROT_AFTER
struct bDampTrackConstraint bDampTrackConstraint
eFollowTrack_FrameMethod
@ FOLLOWTRACK_FRAME_CROP
@ FOLLOWTRACK_FRAME_FIT
@ FOLLOWTRACK_FRAME_STRETCH
These structs are the foundation for all linked lists in the library system.
The CacheReader struct is only used for anonymous pointers, to interface between C and C++ code....
Definition: abc_util.h:30
struct bAction * act
struct bConstraintChannel * prev
struct bConstraintChannel * next
struct bConstraintTarget * prev
struct bConstraintTarget * next
struct Object * space_object
struct bConstraint * prev
struct bConstraint * next
char space_subtarget[64]
struct Ipo *ipo DNA_DEPRECATED