9 #define DNA_DEPRECATED_ALLOW
92 #define VALID_CONS_TARGET(ct) ((ct) && (ct->tar))
137 cob->
type = datatype;
166 cob->
type = datatype;
198 float delta[4][4], imat[4][4];
251 const bool keep_scale)
253 float diff_mat[4][4];
517 float imat[3][3], tmat[3][3];
524 if (defgroup == -1) {
528 float vec[3] = {0.0f, 0.0f, 0.0f};
529 float normal[3] = {0.0f, 0.0f, 0.0f};
530 float weightsum = 0.0f;
540 if (dw && dw->
weight > 0.0f) {
551 int numVerts = me_eval->
totvert;
557 for (
int i = 0; i < numVerts; i++) {
562 if (dw && dw->
weight > 0.0f) {
618 const float *co = dl ? dl->verts :
NULL;
623 float vec[3] = {0.0f, 0.0f, 0.0f}, tvec[3];
632 if (defgroup == -1) {
642 for (i = 0; i < tot_verts; i++, dv++) {
645 if (dw && dw->
weight > 0.0f) {
647 memcpy(tvec, co ? co : bp->
vec,
sizeof(
float[3]));
676 const char *substring,
685 if (substring[0] ==
'\0') {
719 if (headtail < 0.000001f && !(is_bbone && full_bbone)) {
735 interp_m4_m4m4(tempmat, bbone[index].mat, bbone[index + 1].mat, fac);
741 interp_v3_v3v3(loc, bbone[index].mat[3], bbone[index + 1].mat[3], fac);
750 float tempmat[4][4], loc[3];
790 CONSTRAINT_TYPE_CONSTRNAME,
791 sizeof(bConstrNameConstraint),
793 "bConstrNameConstraint",
795 constrname_id_looper,
799 constrname_flush_tars,
800 constrname_get_tarmat,
858 #define SINGLETARGET_GET_TARS(con, datatar, datasubtarget, ct, list) \
860 ct = MEM_callocN(sizeof(bConstraintTarget), "tempConstraintTarget"); \
863 BLI_strncpy(ct->subtarget, datasubtarget, sizeof(ct->subtarget)); \
864 ct->space = con->tarspace; \
865 ct->flag = CONSTRAINT_TAR_TEMP; \
868 if ((ct->tar->type == OB_ARMATURE) && (ct->subtarget[0])) { \
869 bPoseChannel *pchan = BKE_pose_channel_find_name(ct->tar->pose, ct->subtarget); \
870 ct->type = CONSTRAINT_OBTYPE_BONE; \
871 ct->rotOrder = (pchan) ? (pchan->rotmode) : EULER_ORDER_DEFAULT; \
873 else if (OB_TYPE_SUPPORT_VGROUP(ct->tar->type) && (ct->subtarget[0])) { \
874 ct->type = CONSTRAINT_OBTYPE_VERT; \
875 ct->rotOrder = EULER_ORDER_DEFAULT; \
878 ct->type = CONSTRAINT_OBTYPE_OBJECT; \
879 ct->rotOrder = ct->tar->rotmode; \
883 BLI_addtail(list, ct); \
893 #define SINGLETARGETNS_GET_TARS(con, datatar, ct, list) \
895 ct = MEM_callocN(sizeof(bConstraintTarget), "tempConstraintTarget"); \
898 ct->space = con->tarspace; \
899 ct->flag = CONSTRAINT_TAR_TEMP; \
902 ct->type = CONSTRAINT_OBTYPE_OBJECT; \
904 BLI_addtail(list, ct); \
914 #define SINGLETARGET_FLUSH_TARS(con, datatar, datasubtarget, ct, list, no_copy) \
917 bConstraintTarget *ctn = ct->next; \
918 if (no_copy == 0) { \
920 BLI_strncpy(datasubtarget, ct->subtarget, sizeof(datasubtarget)); \
921 con->tarspace = (char)ct->space; \
924 BLI_freelinkN(list, ct); \
936 #define SINGLETARGETNS_FLUSH_TARS(con, datatar, ct, list, no_copy) \
939 bConstraintTarget *ctn = ct->next; \
940 if (no_copy == 0) { \
942 con->tarspace = (char)ct->space; \
945 BLI_freelinkN(list, ct); \
973 func(con, (
ID **)&
data->tar,
false, userdata);
1013 float inverse_matrix[4][4];
1021 float loc[3], eul[3],
size[3];
1022 float loco[3], eulo[3], sizeo[3];
1035 loc[0] = loco[0] = 0.0f;
1038 loc[1] = loco[1] = 0.0f;
1041 loc[2] = loco[2] = 0.0f;
1044 eul[0] = eulo[0] = 0.0f;
1047 eul[1] = eulo[1] = 0.0f;
1050 eul[2] = eulo[2] = 0.0f;
1053 size[0] = sizeo[0] = 1.0f;
1056 size[1] = sizeo[1] = 1.0f;
1059 size[2] = sizeo[2] = 1.0f;
1081 if (orig_con !=
NULL) {
1092 float orig_cob_matrix[4][4];
1100 cob->
matrix[3][0] = orig_cob_matrix[3][0];
1103 cob->
matrix[3][1] = orig_cob_matrix[3][1];
1106 cob->
matrix[3][2] = orig_cob_matrix[3][2];
1115 "bChildOfConstraint",
1141 func(con, (
ID **)&
data->tar,
false, userdata);
1187 const float target_up[3],
1242 if (axis != upflag) {
1243 right_index = 3 - axis - upflag;
1247 m[right_index][0] = neg *
right[0];
1248 m[right_index][1] = neg *
right[1];
1249 m[right_index][2] = neg *
right[2];
1267 float size[3], vec[3];
1290 vec, ct->
matrix[2], (
short)
data->reserved1, (
short)
data->reserved2,
data->flags, totmat);
1300 "bTrackToConstraint",
1317 data->weight = 1.0f;
1318 data->orientweight = 1.0f;
1319 data->iterations = 500;
1329 func(con, (
ID **)&
data->tar,
false, userdata);
1332 func(con, (
ID **)&
data->poletar,
false, userdata);
1406 "bKinematicConstraint",
1426 data->followflag = 0;
1434 func(con, (
ID **)&
data->tar,
false, userdata);
1473 float vec[4], radius;
1499 CLAMP(curvetime, 0.0f, 1.0f);
1504 curvetime =
data->offset_fac;
1523 float tmat[4][4], rmat[4][4];
1584 "bFollowPathConstraint",
1636 N_(
"Limit Location"),
1637 "bLocLimitConstraint",
1671 rot_order =
data->euler_order;
1684 if (eul[0] <
data->xmin) {
1685 eul[0] =
data->xmin;
1688 if (eul[0] >
data->xmax) {
1689 eul[0] =
data->xmax;
1693 if (eul[1] <
data->ymin) {
1694 eul[1] =
data->ymin;
1697 if (eul[1] >
data->ymax) {
1698 eul[1] =
data->ymax;
1702 if (eul[2] <
data->zmin) {
1703 eul[2] =
data->zmin;
1706 if (eul[2] >
data->zmax) {
1707 eul[2] =
data->zmax;
1717 N_(
"Limit Rotation"),
1718 "bRotLimitConstraint",
1734 float obsize[3],
size[3];
1785 "bSizeLimitConstraint",
1810 func(con, (
ID **)&
data->tar,
false, userdata);
1845 float offset[3] = {0.0f, 0.0f, 0.0f};
1881 N_(
"Copy Location"),
1882 "bLocateLikeConstraint",
1907 func(con, (
ID **)&
data->tar,
false, userdata);
1942 float loc[3],
size[3], oldrot[3][3], newrot[3][3];
1943 float eul[3], obeul[3], defeul[3];
1951 rot_order =
data->euler_order;
1967 bool legacy_offset =
false;
1969 switch (
data->mix_mode) {
1971 legacy_offset =
true;
1987 if (legacy_offset) {
2000 if (legacy_offset) {
2013 if (legacy_offset) {
2033 switch (
data->mix_mode) {
2058 N_(
"Copy Rotation"),
2059 "bRotateLikeConstraint",
2085 func(con, (
ID **)&
data->tar,
false, userdata);
2120 float obsize[3],
size[3];
2130 if ((
data->flag & all_axes) == all_axes) {
2155 for (
int i = 0; i < 3; i++) {
2189 "bSizeLikeConstraint",
2207 func(con, (
ID **)&
data->tar,
false, userdata);
2242 float target_mat[4][4];
2253 switch (
data->mix_mode) {
2294 N_(
"Copy Transforms"),
2295 "bTransLikeConstraint",
2313 data->volume = 1.0f;
2320 float volume =
data->volume;
2321 float fac = 1.0f, total_scale = 1.0f;
2327 switch (
data->mode) {
2329 total_scale = obsize[0] * obsize[1] * obsize[2];
2332 total_scale =
pow3f(obsize[
data->free_axis]);
2335 total_scale = obsize[
data->free_axis];
2339 if (total_scale != 0) {
2340 fac =
sqrtf(volume / total_scale);
2344 switch (
data->free_axis) {
2363 N_(
"Maintain Volume"),
2364 "bSameVolumeConstraint",
2414 return data->tarnum;
2426 func(con, (
ID **)&ct->
tar,
false, userdata);
2430 func(con, (
ID **)&
data->text,
true, userdata);
2496 "bPythonConstraint",
2530 *list =
data->targets;
2544 func(con, (
ID **)&ct->
tar,
false, userdata);
2559 if (pchan !=
NULL) {
2570 const float iobmat[4][4],
2571 const float basemat[4][4],
2572 const float bonemat[4][4],
2574 float r_sum_mat[4][4],
2577 if (weight == 0.0f) {
2586 if (r_sum_dq !=
NULL) {
2587 float basemat_world[4][4];
2606 bool force_envelope,
2608 float r_sum_mat[4][4],
2611 float iobmat[4][4], co[3];
2613 float weight = ct->
weight;
2629 float(*iamat)[4] = b_bone_mats[0].
mat;
2630 float basemat[4][4];
2635 float y = iamat[0][1] * co[0] + iamat[1][1] * co[1] + iamat[2][1] * co[2] + iamat[3][1];
2642 if (r_sum_dq !=
NULL) {
2650 b_bone_mats[index + 1].
mat,
2651 weight * (1.0f -
blend),
2655 if (r_sum_dq !=
NULL) {
2663 b_bone_mats[index + 2].
mat,
2675 *r_totweight += weight;
2682 float sum_mat[4][4], input_co[3];
2684 float weight = 0.0f;
2688 memset(&sum_dq, 0,
sizeof(sum_dq));
2706 if (ct->
weight <= 0.0f) {
2725 if (weight > 0.0f) {
2743 "bArmatureConstraint",
2772 func(con, (
ID **)&
data->tar,
false, userdata);
2775 func(con, (
ID **)&
data->act,
true, userdata);
2813 float tempmat[4][4], vec[3];
2822 s =
data->eval_time;
2841 if (
data->type < 10) {
2847 else if (
data->type < 20) {
2850 axis =
data->type - 10;
2855 axis =
data->type - 20;
2870 printf(
"do Action Constraint %s - Ob %s Pchan %s\n",
2910 puts(
"Error: unknown owner type for Action Constraint");
2921 switch (
data->mix_mode) {
2959 "bActionConstraint",
2985 func(con, (
ID **)&
data->tar,
false, userdata);
3020 float vec[3], vec2[3];
3028 switch (
data->lockflag) {
3031 switch (
data->trackflag) {
3099 switch (
data->trackflag) {
3167 switch (
data->trackflag) {
3243 totmat[0][0] = tmpmat[0][0];
3244 totmat[0][1] = tmpmat[0][1];
3245 totmat[0][2] = tmpmat[0][2];
3246 totmat[1][0] = tmpmat[1][0];
3247 totmat[1][1] = tmpmat[1][1];
3248 totmat[1][2] = tmpmat[1][2];
3249 totmat[2][0] = tmpmat[2][0];
3250 totmat[2][1] = tmpmat[2][1];
3251 totmat[2][2] = tmpmat[2][2];
3275 "bLockTrackConstraint",
3300 func(con, (
ID **)&
data->tar,
false, userdata);
3336 float dvec[3], dist, sfac = 1.0f;
3337 short clamp_surf = 0;
3343 if (
data->dist == 0) {
3349 if (orig_con !=
NULL) {
3359 if (dist <= data->dist) {
3362 sfac =
data->dist / dist;
3367 if (dist <= (
data->dist +
data->soft)) {
3374 if (dist >=
data->dist) {
3377 sfac =
data->dist / dist;
3383 if (dist >= (
data->dist -
data->soft)) {
3398 sfac =
data->dist / dist;
3417 N_(
"Limit Distance"),
3418 "bDistLimitConstraint",
3437 data->orglength = 0.0;
3439 data->bulge_max = 1.0f;
3440 data->bulge_min = 1.0f;
3448 func(con, (
ID **)&
data->tar,
false, userdata);
3484 float size[3], scale[3], vec[3], xx[3], zz[3],
orth[3];
3511 if (
data->orglength == 0) {
3512 data->orglength = dist;
3517 if (orig_con !=
NULL) {
3524 scale[1] = dist /
data->orglength;
3530 float bulge_max =
max_ff(
data->bulge_max, 1.0f);
3531 float hard =
min_ff(bulge, bulge_max);
3533 float range = bulge_max - 1.0f;
3534 float scale_fac = (range > 0.0f) ? 1.0f / range : 0.0f;
3535 float soft = 1.0f + range *
atanf((bulge - 1.0f) * scale_fac) / (
float)
M_PI_2;
3542 float bulge_min =
CLAMPIS(
data->bulge_min, 0.0f, 1.0f);
3543 float hard =
max_ff(bulge, bulge_min);
3545 float range = 1.0f - bulge_min;
3546 float scale_fac = (range > 0.0f) ? 1.0f / range : 0.0f;
3547 float soft = 1.0f - range *
atanf((1.0f - bulge) * scale_fac) / (
float)
M_PI_2;
3553 switch (
data->volmode) {
3556 scale[0] =
sqrtf(bulge);
3557 scale[2] = scale[0];
3579 switch (
data->plane) {
3626 "bStretchToConstraint",
3644 data->offset = 0.0f;
3653 func(con, (
ID **)&
data->tar,
false, userdata);
3689 float obmat[4][4], imat[4][4], tarmat[4][4], tmat[4][4];
3704 switch (
data->minmaxflag) {
3706 val1 = tarmat[3][2];
3707 val2 = obmat[3][2] -
data->offset;
3711 val1 = tarmat[3][1];
3712 val2 = obmat[3][1] -
data->offset;
3716 val1 = tarmat[3][0];
3717 val2 = obmat[3][0] -
data->offset;
3721 val2 = tarmat[3][2];
3722 val1 = obmat[3][2] -
data->offset;
3726 val2 = tarmat[3][1];
3727 val1 = obmat[3][1] -
data->offset;
3731 val2 = tarmat[3][0];
3732 val1 = obmat[3][0] -
data->offset;
3740 obmat[3][index] = tarmat[3][index] +
data->offset;
3757 "bMinMaxConstraint",
3775 func(con, (
ID **)&
data->tar,
false, userdata);
3825 float obmat[4][4], ownLoc[3];
3826 float curveMin[3], curveMax[3];
3827 float targetMatrix[4][4];
3842 if (
data->tar->runtime.curve_cache &&
data->tar->runtime.curve_cache->anim_path_accum_length) {
3843 float vec[4], totmat[4][4];
3868 clamp_axis =
data->flag - 1;
3874 float len = (curveMax[clamp_axis] - curveMin[clamp_axis]);
3880 if (ownLoc[clamp_axis] < curveMin[clamp_axis]) {
3882 offset = curveMin[clamp_axis] -
3883 ceilf((curveMin[clamp_axis] - ownLoc[clamp_axis]) /
len) *
len;
3887 curvetime = (ownLoc[clamp_axis] -
offset) / (
len);
3889 else if (ownLoc[clamp_axis] > curveMax[clamp_axis]) {
3891 offset = curveMax[clamp_axis] +
3892 (int)((ownLoc[clamp_axis] - curveMax[clamp_axis]) /
len) *
len;
3896 curvetime = (ownLoc[clamp_axis] -
offset) / (
len);
3900 curvetime = (ownLoc[clamp_axis] - curveMin[clamp_axis]) / (
len);
3910 if (ownLoc[clamp_axis] <= curveMin[clamp_axis]) {
3913 else if (ownLoc[clamp_axis] >= curveMax[clamp_axis]) {
3916 else if (
IS_EQF((curveMax[clamp_axis] - curveMin[clamp_axis]), 0.0f) ==
false) {
3917 curvetime = (ownLoc[clamp_axis] - curveMin[clamp_axis]) /
3918 (curveMax[clamp_axis] - curveMin[clamp_axis]);
3943 "bClampToConstraint",
3964 for (
int i = 0; i < 3; i++) {
3965 data->from_min_scale[i] =
data->from_max_scale[i] = 1.0f;
3966 data->to_min_scale[i] =
data->to_max_scale[i] = 1.0f;
3975 func(con, (
ID **)&
data->tar,
false, userdata);
4011 float *from_min, *from_max, *to_min, *to_max;
4012 float loc[3],
rot[3][3], oldeul[3],
size[3];
4013 float newloc[3], newrot[3][3], neweul[3], newsize[3];
4014 float dbuf[4], sval[3];
4015 float *
const dvec = dbuf + 1;
4018 switch (
data->from) {
4029 from_min =
data->from_min_scale;
4030 from_max =
data->from_max_scale;
4035 from_min =
data->from_min_rot;
4036 from_max =
data->from_max_rot;
4041 from_min =
data->from_min;
4042 from_max =
data->from_max;
4050 rot_order =
data->to_euler_order;
4058 for (
int i = 0; i < 3; i++) {
4059 if (from_max[i] - from_min[i]) {
4060 sval[i] = (dvec[i] - from_min[i]) / (from_max[i] - from_min[i]);
4069 for (
int i = 0; i < 3; i++) {
4070 CLAMP(dvec[i], from_min[i], from_max[i]);
4071 if (from_max[i] - from_min[i]) {
4072 sval[i] = (dvec[i] - from_min[i]) / (from_max[i] - from_min[i]);
4083 to_min =
data->to_min_scale;
4084 to_max =
data->to_max_scale;
4085 for (
int i = 0; i < 3; i++) {
4086 newsize[i] = to_min[i] + (sval[(int)
data->map[i]] * (to_max[i] - to_min[i]));
4088 switch (
data->mix_mode_scale) {
4099 to_min =
data->to_min_rot;
4100 to_max =
data->to_max_rot;
4101 for (
int i = 0; i < 3; i++) {
4102 neweul[i] = to_min[i] + (sval[(int)
data->map[i]] * (to_max[i] - to_min[i]));
4104 switch (
data->mix_mode_rot) {
4126 to_min =
data->to_min;
4127 to_max =
data->to_max;
4128 for (
int i = 0; i < 3; i++) {
4129 newloc[i] = (to_min[i] + (sval[(int)
data->map[i]] * (to_max[i] - to_min[i])));
4131 switch (
data->mix_mode_loc) {
4151 N_(
"Transformation"),
4152 "bTransformConstraint",
4170 func(con, (
ID **)&
data->target,
false, userdata);
4216 float co[3] = {0.0f, 0.0f, 0.0f};
4217 bool track_normal =
false;
4218 float track_no[3] = {0.0f, 0.0f, 0.0f};
4245 if (nearest.
index < 0) {
4251 if (do_track_normal) {
4252 track_normal =
true;
4273 co, co, nearest.
co, (dist - scon->
dist) / dist);
4284 float no[3] = {0.0f, 0.0f, 0.0f};
4333 if (hit.
index < 0) {
4338 if (do_track_normal) {
4339 track_normal =
true;
4383 "bShrinkwrapConstraint",
4408 func(con, (
ID **)&
data->tar,
false, userdata);
4468 float obvec[3], obloc[3];
4469 float raxis[3], rangle;
4470 float rmat[3][3], tmat[4][4];
4505 if (
norm < FLT_EPSILON) {
4526 else if (
norm < 0.1f) {
4548 "bDampTrackConstraint",
4584 data->bulge_max = 1.0f;
4585 data->bulge_min = 1.0f;
4596 func(con, (
ID **)&
data->tar,
false, userdata);
4643 "bSplineIKConstraint",
4661 func(con, (
ID **)&
data->tar,
false, userdata);
4695 float pivot[3], vec[3];
4699 float axis[3],
angle;
4711 if (
rot[
data->rotAxis] > 0.0f) {
4793 func(con, (
ID **)&
data->clip,
true, userdata);
4794 func(con, (
ID **)&
data->camera,
false, userdata);
4795 func(con, (
ID **)&
data->depth_ob,
false, userdata);
4816 if (
data->object[0]) {
4831 return data->camera;
4904 float camera_obmat[4][4];
4908 float reconstructed_camera_mat[4][4];
4910 tracking, tracking_object,
context->clip_frame, reconstructed_camera_mat);
4911 float reconstructed_camera_mat_inv[4][4];
4912 invert_m4_m4(reconstructed_camera_mat_inv, reconstructed_camera_mat);
4928 float reconstructed_camera_mat[4][4];
4952 const int clip_width,
4953 const int clip_height,
4954 float marker_position[2])
4961 marker_position[0] *= clip_width;
4962 marker_position[1] *= clip_height;
4965 context->tracking, clip_width, clip_height, marker_position, marker_position);
4968 marker_position[0] /= clip_width;
4969 marker_position[1] /= clip_height;
4974 const int clip_width,
4975 const int clip_height,
4976 float marker_position[2])
4986 const float w_src = clip_width * clip->
aspx;
4987 const float h_src = clip_height * clip->
aspy;
4992 const float asp_src = w_src / h_src;
4993 const float asp_dst = w_dst / h_dst;
4995 if (
fabsf(asp_src - asp_dst) < FLT_EPSILON) {
5001 float div = asp_src / asp_dst;
5002 float cent = (
float)clip_width / 2.0f;
5004 marker_position[0] = (((marker_position[0] * clip_width - cent) * div) + cent) / clip_width;
5008 float div = asp_dst / asp_src;
5009 float cent = (
float)clip_height / 2.0f;
5011 marker_position[1] = (((marker_position[1] * clip_height - cent) * div) + cent) / clip_height;
5022 float camera_matrix[4][4];
5025 const float z_axis[3] = {0.0f, 0.0f, 1.0f};
5028 float camera_axis[3];
5036 float projection[3];
5039 return len_v3(projection);
5052 if (depth_mesh ==
NULL) {
5056 float depth_object_mat_inv[4][4];
5059 float ray_start[3], ray_end[3];
5063 float ray_direction[3];
5095 const float clip_frame =
context->clip_frame;
5099 if (object_depth < FLT_EPSILON) {
5103 int clip_width, clip_height;
5106 float marker_position[2];
5119 vec[0] =
params.ortho_scale * (marker_position[0] - 0.5f +
params.shiftx);
5120 vec[1] =
params.ortho_scale * (marker_position[1] - 0.5f +
params.shifty);
5121 vec[2] = -object_depth;
5123 if (aspect > 1.0f) {
5140 const float d = (object_depth *
params.sensor_x) / (2.0f *
params.lens);
5143 vec[0] = d * (2.0f * (marker_position[0] +
params.shiftx) - 1.0f);
5144 vec[1] = d * (2.0f * (marker_position[1] +
params.shifty) - 1.0f);
5145 vec[2] = -object_depth;
5147 if (aspect > 1.0f) {
5188 "bFollowTrackConstraint",
5213 func(con, (
ID **)&
data->clip,
true, userdata);
5228 float mat[4][4], obmat[4][4];
5245 N_(
"Camera Solver"),
5246 "bCameraSolverConstraint",
5272 func(con, (
ID **)&
data->clip,
false, userdata);
5273 func(con, (
ID **)&
data->camera,
false, userdata);
5287 if (!camob || !clip) {
5299 float mat[4][4], obmat[4][4], imat[4][4], parmat[4][4];
5319 if (orig_con !=
NULL) {
5333 N_(
"Object Solver"),
5334 "bObjectSolverConstraint",
5350 func(con, (
ID **)&
data->cache_file,
true, userdata);
5355 #if defined(WITH_ALEMBIC) || defined(WITH_USD)
5378 switch (cache_file->
type) {
5380 # ifdef WITH_ALEMBIC
5416 data->reader_object_path[0] =
'\0';
5430 N_(
"Transform Cache"),
5431 "bTransformCacheConstraint",
5501 CLOG_WARN(&
LOG,
"No valid constraint type-info data available. Type = %i",
type);
5531 if (*idpoin && is_reference) {
5635 ListBase single_con = {new_con, new_con};
5689 single_con.
first = new_con;
5690 single_con.
last = new_con;
5746 const char *newName;
5771 newName = (name && name[0]) ? name :
DATA_(cti->
name);
5776 newName = (name && name[0]) ? name :
DATA_(
"Const");
5863 if (pchan ==
NULL) {
5893 bool UNUSED(is_reference),
5911 if ((*idpoin) && (is_reference)) {
5920 const bool do_extern)
5957 if (pchan ==
NULL) {
5980 for (con = dst->
first, srccon =
src->first; con && srccon;
5981 srccon = srccon->
next, con = con->
next) {
6022 if (con_iter == con) {
6056 if (r_pchan !=
NULL) {
6071 if (r_pchan !=
NULL) {
6098 if (pchan !=
NULL) {
6101 if (orig_pchan ==
NULL) {
6121 if (r_orig_ob !=
NULL) {
6122 *r_orig_ob = orig_ob;
6142 if (orig_con !=
NULL) {
6231 cob->
type = ownertype;
6234 switch (ownertype) {
6319 for (ct = targets->
first; ct; ct = ct->
next) {
6324 for (ct = targets->
first; ct; ct = ct->
next) {
6367 for (con = conlist->
first; con; con = con->
next) {
6430 float solution[4][4];
6443 if (cti && con->
data) {
6448 switch (con->
type) {
6495 switch (con->
type) {
6538 data->reader_object_path[0] =
'\0';
6552 bool UNUSED(is_reference),
6589 bool UNUSED(is_reference),
void ABC_get_transform(struct CacheReader *reader, float r_mat_world[4][4], double time, float scale)
typedef float(TangentPoint)[2]
void BIK_clear_data(struct bPose *pose)
Blender kernel action and pose functionality.
struct bPoseChannel * BKE_pose_channel_find_name(const struct bPose *pose, const char *name)
void what_does_obaction(struct Object *ob, struct Object *workob, struct bPose *pose, struct bAction *act, char groupname[], const struct AnimationEvalContext *anim_eval_context)
struct bPoseChannel * BKE_pose_channel_ensure(struct bPose *pose, const char *name)
void BKE_pose_free_data(struct bPose *pose)
bool BKE_where_on_path(const struct Object *ob, float ctime, float r_vec[4], float r_dir[3], float r_quat[4], float *r_radius, float *r_weight)
AnimationEvalContext BKE_animsys_eval_context_construct(struct Depsgraph *depsgraph, float eval_time)
void BKE_pchan_bbone_deform_segment_index(const struct bPoseChannel *pchan, float pos, int *r_index, float *r_blend_next)
void BKE_pchan_apply_mat4(struct bPoseChannel *pchan, const float mat[4][4], bool use_compat)
float distfactor_to_bone(const float vec[3], const float b1[3], const float b2[3], float rad1, float rad2, float rdist)
void BKE_armature_mat_pose_to_bone(struct bPoseChannel *pchan, const float inmat[4][4], float outmat[4][4])
void BKE_armature_mat_bone_to_pose(struct bPoseChannel *pchan, const float inmat[4][4], float outmat[4][4])
void BKE_pchan_calc_mat(struct bPoseChannel *pchan)
void free_bvhtree_from_mesh(struct BVHTreeFromMesh *data)
BVHTree * BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data, const struct Mesh *mesh, BVHCacheType bvh_cache_type, int tree_type)
void BKE_cachefile_reader_open(struct CacheFile *cache_file, struct CacheReader **reader, struct Object *object, const char *object_path)
void BKE_cachefile_reader_free(struct CacheFile *cache_file, struct CacheReader **reader)
double BKE_cachefile_time_offset(const struct CacheFile *cache_file, double time, double fps)
bool BKE_cache_file_uses_render_procedural(const struct CacheFile *cache_file, struct Scene *scene)
Camera data-block and utility functions.
void BKE_camera_params_init(CameraParams *params)
void BKE_camera_params_from_object(CameraParams *params, const struct Object *cam_ob)
void(* ConstraintIDFunc)(struct bConstraint *con, struct ID **idpoin, bool is_reference, void *userdata)
bool CustomData_has_layer(const struct CustomData *data, int type)
void * CustomData_get_layer(const struct CustomData *data, int type)
void * CustomData_bmesh_get(const struct CustomData *data, void *block, int type)
display list (or rather multi purpose list) stuff.
DispList * BKE_displist_find(struct ListBase *lb, int type)
BMEditMesh * BKE_editmesh_from_object(struct Object *ob)
Return the BMEditMesh for a given object.
void BKE_driver_target_matrix_to_rot_channels(float mat[4][4], int auto_order, int rotation_mode, int channel, bool angles, float r_buf[4])
void IDP_BlendWrite(struct BlendWriter *writer, const struct IDProperty *prop)
#define IDP_BlendDataRead(reader, prop)
void IDP_FreeProperty(struct IDProperty *prop)
struct IDProperty * IDP_CopyProperty(const struct IDProperty *prop) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
@ LIB_ID_COPY_NO_LIB_OVERRIDE_LOCAL_DATA_FLAG
@ LIB_ID_CREATE_NO_USER_REFCOUNT
void id_us_min(struct ID *id)
void id_lib_extern(struct ID *id)
void id_us_plus(struct ID *id)
const float(* BKE_mesh_vertex_normals_ensure(const struct Mesh *mesh))[3]
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
void BKE_movieclip_get_size(struct MovieClip *clip, struct MovieClipUser *user, int *width, int *height)
General operations, lookup, etc. for blender objects.
struct Mesh * BKE_object_get_evaluated_mesh(const struct Object *object)
void BKE_object_where_is_calc_mat4(struct Object *ob, float r_obmat[4][4])
void BKE_object_to_mat4(struct Object *ob, float r_mat[4][4])
void BKE_object_apply_mat4(struct Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
void BKE_object_minmax(struct Object *ob, float r_min[3], float r_max[3], bool use_hidden)
float BKE_scene_frame_get(const struct Scene *scene)
void BKE_shrinkwrap_find_nearest_surface(struct ShrinkwrapTreeData *tree, struct BVHTreeNearest *nearest, float co[3], int type)
bool BKE_shrinkwrap_project_normal(char options, const float vert[3], const float dir[3], float ray_radius, const struct SpaceTransform *transf, struct ShrinkwrapTreeData *tree, BVHTreeRayHit *hit)
#define NULL_BVHTreeFromMesh
void BKE_shrinkwrap_compute_smooth_normal(const struct ShrinkwrapTreeData *tree, const struct SpaceTransform *transform, int looptri_idx, const float hit_co[3], const float hit_no[3], float r_no[3])
bool BKE_shrinkwrap_init_tree(struct ShrinkwrapTreeData *data, Mesh *mesh, int shrinkType, int shrinkMode, bool force_normals)
void BKE_shrinkwrap_free_tree(struct ShrinkwrapTreeData *data)
void BKE_shrinkwrap_snap_point_to_surface(const struct ShrinkwrapTreeData *tree, const struct SpaceTransform *transform, int mode, int hit_idx, const float hit_co[3], const float hit_no[3], float goal_dist, const float point_co[3], float r_point_co[3])
void BKE_tracking_get_camera_object_matrix(struct Object *camera_object, float mat[4][4])
void BKE_tracking_camera_get_reconstructed_interpolate(struct MovieTracking *tracking, struct MovieTrackingObject *object, float framenr, float mat[4][4])
struct MovieTrackingTrack * BKE_tracking_track_get_named(struct MovieTracking *tracking, struct MovieTrackingObject *object, const char *name)
struct MovieTrackingObject * BKE_tracking_object_get_named(struct MovieTracking *tracking, const char *name)
struct MovieTrackingObject * BKE_tracking_object_get_camera(struct MovieTracking *tracking)
void BKE_tracking_marker_get_subframe_position(struct MovieTrackingTrack *track, float framenr, float pos[2])
void BKE_tracking_undistort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
#define BLI_assert_msg(a, msg)
#define BVH_RAYCAST_DIST_MAX
int BLI_bvhtree_ray_cast(BVHTree *tree, const float co[3], const float dir[3], float radius, BVHTreeRayHit *hit, BVHTree_RayCastCallback callback, void *userdata)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE float max_ff(float a, float b)
MINLINE float min_ff(float a, float b)
MINLINE float square_f(float a)
MINLINE float interpf(float a, float b, float t)
MINLINE float pow3f(float x)
void BLI_space_transform_from_matrices(struct SpaceTransform *data, const float local[4][4], const float target[4][4])
void interp_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4], float t)
void mul_m3_v3(const float M[3][3], float r[3])
void madd_m4_m4m4fl(float R[4][4], const float A[4][4], const float B[4][4], float f)
void zero_m4(float m[4][4])
void mul_m4_fl(float R[4][4], float f)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void BLI_space_transform_apply(const struct SpaceTransform *data, float co[3])
bool invert_m4(float R[4][4])
void unit_m3(float m[3][3])
void copy_m3_m4(float m1[3][3], const float m2[4][4])
void unit_m4(float m[4][4])
void mul_mat3_m4_v3(const float M[4][4], float r[3])
void translate_m4(float mat[4][4], float tx, float ty, float tz)
void loc_rot_size_to_mat4(float R[4][4], const float loc[3], const float rot[3][3], const float size[3])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void mat4_to_loc_rot_size(float loc[3], float rot[3][3], float size[3], const float wmat[4][4])
void normalize_m3(float R[3][3]) ATTR_NONNULL()
void rescale_m4(float mat[4][4], const float scale[3])
void loc_eulO_size_to_mat4(float R[4][4], const float loc[3], const float eul[3], const float size[3], short order)
void mul_m4_v3(const float M[4][4], float r[3])
void orthogonalize_m4_stable(float R[4][4], int axis, bool normalize)
#define mul_m4_series(...)
void scale_m4_fl(float R[4][4], float scale)
void mul_m4_m4m4_split_channels(float R[4][4], const float A[4][4], const float B[4][4])
void normalize_m4_ex(float R[4][4], float r_scale[3]) ATTR_NONNULL()
bool invert_m3_m3(float R[3][3], const float A[3][3])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
void invert_m4_m4_safe(float Ainv[4][4], const float A[4][4])
bool is_negative_m4(const float mat[4][4])
void mul_m4_m4m4_aligned_scale(float R[4][4], const float A[4][4], const float B[4][4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
void BLI_space_transform_invert_normal(const struct SpaceTransform *data, float no[3])
void mat4_to_size(float size[3], const float M[4][4])
void transpose_m3(float R[3][3])
void BLI_space_transform_invert(const struct SpaceTransform *data, float co[3])
float determinant_m3(float a1, float a2, float a3, float b1, float b2, float b3, float c1, float c2, float c3)
float mat4_to_volume_scale(const float M[4][4])
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
void mul_m4_m3m4(float R[4][4], const float A[3][3], const float B[4][4])
void mul_v3_mat3_m4v3(float r[3], const float M[4][4], const float v[3])
void normalize_m4(float R[4][4]) ATTR_NONNULL()
void eulO_to_mat3(float mat[3][3], const float eul[3], short order)
void mat4_to_compatible_eulO(float eul[3], const float old[3], short order, const float mat[4][4])
void mat4_to_eulO(float eul[3], short order, const float mat[4][4])
void mat3_to_eulO(float eul[3], short order, const float mat[3][3])
void add_weighted_dq_dq(DualQuat *dq_sum, const DualQuat *dq, float weight)
void axis_angle_normalized_to_mat3(float R[3][3], const float axis[3], float angle)
void mat4_to_eul(float eul[3], const float mat[4][4])
void dquat_to_mat4(float R[4][4], const DualQuat *dq)
void rotate_eulO(float eul[3], short order, char axis, float angle)
void mat3_normalized_to_axis_angle(float axis[3], float *angle, const float M[3][3])
void mat4_to_dquat(DualQuat *dq, const float basemat[4][4], const float mat[4][4])
void quat_apply_track(float quat[4], short axis, short upflag)
void compatible_eul(float eul[3], const float old[3])
void normalize_dq(DualQuat *dq, float totw)
void quat_to_mat4(float mat[4][4], const float q[4])
MINLINE float len_squared_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void madd_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void add_v3_fl(float r[3], float f)
MINLINE float normalize_v3(float r[3])
MINLINE void mul_v3_v3(float r[3], const float a[3])
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE void cross_v3_v3v3_hi_prec(float r[3], const float a[3], const float b[3])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void negate_v3_v3(float r[3], const float a[3])
void project_v3_v3v3(float out[3], const float p[3], const float v_proj[3])
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
void interp_v3_v3v3(float r[3], const float a[3], const float b[3], float t)
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void cross_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void negate_v3(float r[3])
MINLINE float normalize_v3_v3(float r[3], const float a[3])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void zero_v3(float r[3])
MINLINE void add_v3_v3(float r[3], const float a[3])
MINLINE float len_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
#define STRNCPY(dst, src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t name_len)
#define INIT_MINMAX(min, max)
#define BLO_read_data_address(reader, ptr_p)
void BLO_write_struct_by_name(BlendWriter *writer, const char *struct_name, const void *data_ptr)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
void BLO_write_float_array(BlendWriter *writer, uint num, const float *data_ptr)
#define BLO_read_id_address(reader, lib, id_ptr_p)
#define BLO_expand(expander, id)
void BPY_pyconstraint_target(struct bPythonConstraint *con, struct bConstraintTarget *ct)
void BPY_pyconstraint_exec(struct bPythonConstraint *con, struct bConstraintOb *cob, struct ListBase *targets)
#define CLOG_WARN(clg_ref,...)
struct Depsgraph Depsgraph
bool DEG_is_active(const struct Depsgraph *depsgraph)
void DEG_id_tag_update(struct ID *id, int flag)
float DEG_get_ctime(const Depsgraph *graph)
struct ID * DEG_get_original_id(struct ID *id)
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
@ ID_RECALC_COPY_ON_WRITE
#define ID_IS_LINKED(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ CACHE_FILE_TYPE_INVALID
struct bStretchToConstraint bStretchToConstraint
@ CONSTRAINT_OVERRIDE_LIBRARY_LOCAL
@ CONSTRAINT_BBONE_SHAPE_FULL
struct bFollowTrackConstraint bFollowTrackConstraint
struct bActionConstraint bActionConstraint
@ CONSTRAINT_TAR_CUSTOM_SPACE
@ CONSTRAINT_TYPE_TRACKTO
@ CONSTRAINT_TYPE_CHILDOF
@ CONSTRAINT_TYPE_TRANSFORM
@ CONSTRAINT_TYPE_FOLLOWTRACK
@ CONSTRAINT_TYPE_OBJECTSOLVER
@ CONSTRAINT_TYPE_ARMATURE
@ CONSTRAINT_TYPE_LOCLIKE
@ CONSTRAINT_TYPE_SHRINKWRAP
@ CONSTRAINT_TYPE_ROTLIMIT
@ CONSTRAINT_TYPE_CAMERASOLVER
@ CONSTRAINT_TYPE_ROTLIKE
@ CONSTRAINT_TYPE_SPLINEIK
@ CONSTRAINT_TYPE_KINEMATIC
@ CONSTRAINT_TYPE_DISTLIMIT
@ CONSTRAINT_TYPE_TRANSLIKE
@ CONSTRAINT_TYPE_LOCLIMIT
@ CONSTRAINT_TYPE_CLAMPTO
@ CONSTRAINT_TYPE_LOCKTRACK
@ CONSTRAINT_TYPE_SIZELIMIT
@ CONSTRAINT_TYPE_FOLLOWPATH
@ CONSTRAINT_TYPE_STRETCHTO
@ CONSTRAINT_TYPE_SIZELIKE
@ CONSTRAINT_TYPE_SAMEVOL
@ CONSTRAINT_TYPE_DAMPTRACK
@ CONSTRAINT_TYPE_TRANSFORM_CACHE
@ CONSTRAINT_OBTYPE_OBJECT
struct bShrinkwrapConstraint bShrinkwrapConstraint
@ CONSTRAINT_ARMATURE_QUATERNION
@ CONSTRAINT_ARMATURE_ENVELOPE
@ CONSTRAINT_ARMATURE_CUR_LOCATION
struct bLocateLikeConstraint bLocateLikeConstraint
struct bChildOfConstraint bChildOfConstraint
@ CAMERASOLVER_ACTIVECLIP
struct bSplineIKConstraint bSplineIKConstraint
@ FOLLOWTRACK_USE_UNDISTORTION
@ FOLLOWTRACK_USE_3D_POSITION
struct bLockTrackConstraint bLockTrackConstraint
@ ACTCON_BONE_USE_OBJECT_ACTION
struct bTransformConstraint bTransformConstraint
struct bSizeLimitConstraint bSizeLimitConstraint
struct bArmatureConstraint bArmatureConstraint
struct bDistLimitConstraint bDistLimitConstraint
#define CON_SHRINKWRAP_PROJECT_CULL_MASK
struct bMinMaxConstraint bMinMaxConstraint
@ TRANS_MIXSCALE_MULTIPLY
@ CONSTRAINT_SPLINEIK_YS_FIT_CURVE
@ CONSTRAINT_SPACE_CUSTOM
@ CONSTRAINT_SPACE_OWNLOCAL
@ CONSTRAINT_SPACE_PARLOCAL
struct bTrackToConstraint bTrackToConstraint
@ ACTCON_MIX_BEFORE_SPLIT
struct bSizeLikeConstraint bSizeLikeConstraint
struct bClampToConstraint bClampToConstraint
struct bSameVolumeConstraint bSameVolumeConstraint
@ CONSTRAINT_SPLINEIK_USE_ORIGINAL_SCALE
struct bTransLikeConstraint bTransLikeConstraint
struct bLocLimitConstraint bLocLimitConstraint
@ TRANSLIKE_MIX_AFTER_FULL
@ TRANSLIKE_MIX_BEFORE_SPLIT
@ TRANSLIKE_MIX_BEFORE_FULL
@ TRANSLIKE_MIX_AFTER_SPLIT
struct bRotateLikeConstraint bRotateLikeConstraint
@ OBJECTSOLVER_ACTIVECLIP
@ OBJECTSOLVER_SET_INVERSE
@ CON_SHRINKWRAP_PROJECT_INVERT_CULL
@ CON_SHRINKWRAP_PROJECT_OPPOSITE
@ CON_SHRINKWRAP_TRACK_NORMAL
struct bTransformCacheConstraint bTransformCacheConstraint
@ PIVOTCON_FLAG_OFFSET_ABS
@ TRANSLIKE_REMOVE_TARGET_SHEAR
@ STRETCHTOCON_USE_BULGE_MAX
@ STRETCHTOCON_USE_BULGE_MIN
struct bObjectSolverConstraint bObjectSolverConstraint
struct bKinematicConstraint bKinematicConstraint
struct bRotLimitConstraint bRotLimitConstraint
struct bPythonConstraint bPythonConstraint
struct bFollowPathConstraint bFollowPathConstraint
struct bCameraSolverConstraint bCameraSolverConstraint
struct bPivotConstraint bPivotConstraint
struct bDampTrackConstraint bDampTrackConstraint
@ FOLLOWTRACK_FRAME_STRETCH
@ MOD_SHRINKWRAP_TARGET_PROJECT
@ MOD_SHRINKWRAP_NEAREST_VERTEX
@ MOD_SHRINKWRAP_NEAREST_SURFACE
Object is a sort of wrapper for general info.
@ UI_PANEL_DATA_EXPAND_ROOT
@ UI_SUBPANEL_DATA_EXPAND_2
@ UI_SUBPANEL_DATA_EXPAND_1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble right
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
#define BM_ITER_MESH(ele, iter, bm, itype)
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
btVector3 orth(const btVector3 &v)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint ** constraints
SIMD_FORCE_INLINE btScalar norm() const
Return the norm (length) of the vector.
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
static bConstraint * add_new_constraint(Object *ob, bPoseChannel *pchan, const char *name, short type)
static void add_new_constraint_to_list(Object *ob, bPoseChannel *pchan, bConstraint *con)
bConstraint * BKE_constraint_copy_for_object(Object *ob, bConstraint *src)
static void minmax_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void minmax_new_data(void *cdata)
static bConstraint * constraint_find_original_for_update(bConstraintOb *cob, bConstraint *con)
static void stretchto_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void minmax_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void followtrack_fit_frame(FollowTrackContext *context, const int clip_width, const int clip_height, float marker_position[2])
static void samevolume_new_data(void *cdata)
bool BKE_constraint_apply_and_remove_for_pose(Depsgraph *depsgraph, Scene *scene, ListBase *constraints, Object *ob, bConstraint *con, bPoseChannel *pchan)
static float followtrack_distance_from_viewplane_get(FollowTrackContext *context, bConstraintOb *cob)
void BKE_constraint_blend_read_expand(BlendExpander *expander, ListBase *lb)
static void con_invoke_id_looper(const bConstraintTypeInfo *cti, bConstraint *con, ConstraintIDFunc func, void *userdata)
static void pycon_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void rotlimit_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *UNUSED(targets))
void BKE_constraints_id_loop(ListBase *conlist, ConstraintIDFunc func, void *userdata)
static Object * followtrack_camera_object_get(bConstraint *con, bConstraintOb *cob)
static void damptrack_do_transform(float matrix[4][4], const float tarvec[3], int track_axis)
static int kinematic_get_tars(bConstraint *con, ListBase *list)
static bConstraintTypeInfo CTI_TRANSFORM_CACHE
static void stretchto_new_data(void *cdata)
bool BKE_constraint_is_nonlocal_in_liboverride(const Object *ob, const bConstraint *con)
void BKE_constraints_copy(ListBase *dst, const ListBase *src, bool do_extern)
static bConstraintTypeInfo CTI_ROTLIKE
static void locktrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void sizelike_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
bool BKE_constraint_remove_ex(ListBase *list, Object *ob, bConstraint *con, bool clear_dep)
static void transformcache_new_data(void *cdata)
static int followpath_get_tars(bConstraint *con, ListBase *list)
static void kinematic_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void loclike_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static void actcon_get_tarmat(struct Depsgraph *depsgraph, bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
static bConstraintTypeInfo CTI_ROTLIMIT
static void followtrack_evaluate_using_3d_position_object(FollowTrackContext *context, bConstraintOb *cob)
static void sizelike_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static int loclike_get_tars(bConstraint *con, ListBase *list)
bConstraint * BKE_constraint_add_for_object(Object *ob, const char *name, short type)
static void transform_new_data(void *cdata)
bConstraint * BKE_constraint_copy_for_pose(Object *ob, bPoseChannel *pchan, bConstraint *src)
static void transformcache_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void rotlike_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void translike_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void transformcache_copy(bConstraint *con, bConstraint *srccon)
static int minmax_get_tars(bConstraint *con, ListBase *list)
static void followpath_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
bConstraint * BKE_constraints_find_name(ListBase *list, const char *name)
static void followtrack_evaluate_using_3d_position_camera(FollowTrackContext *context, bConstraintOb *cob)
static bConstraintTypeInfo CTI_STRETCHTO
static void camerasolver_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *UNUSED(targets))
static bConstraintTypeInfo CTI_TRANSFORM
static void vectomat(const float vec[3], const float target_up[3], short axis, short upflag, short flags, float m[3][3])
static bConstraintTypeInfo CTI_DAMPTRACK
static int pycon_get_tars(bConstraint *con, ListBase *list)
static int stretchto_get_tars(bConstraint *con, ListBase *list)
static void rotlike_new_data(void *cdata)
static void splineik_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *UNUSED(con), bConstraintOb *UNUSED(cob), bConstraintTarget *ct, float UNUSED(ctime))
static void followtrack_evaluate_using_3d_position(FollowTrackContext *context, bConstraintOb *cob)
static void pycon_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
static void shrinkwrap_evaluate(bConstraint *UNUSED(con), bConstraintOb *cob, ListBase *targets)
static void childof_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void followpath_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static bool is_custom_space_needed(bConstraint *con)
static bConstraintTypeInfo CTI_CLAMPTO
void BKE_constraint_targets_flush(struct bConstraint *con, struct ListBase *targets, bool no_copy)
static void pivotcon_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static bConstraintTypeInfo CTI_SAMEVOL
static MovieTrackingObject * followtrack_tracking_object_get(bConstraint *con, bConstraintOb *cob)
static void con_extern_cb(bConstraint *UNUSED(con), ID **idpoin, bool UNUSED(is_reference), void *UNUSED(userData))
static void splineik_copy(bConstraint *con, bConstraint *srccon)
static int damptrack_get_tars(bConstraint *con, ListBase *list)
static void clampto_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static int basis_cross(int n, int m)
void BKE_constraint_target_matrix_get(struct Depsgraph *depsgraph, Scene *scene, bConstraint *con, int index, short ownertype, void *ownerdata, float mat[4][4], float ctime)
static bConstraintTypeInfo CTI_TRACKTO
static void childof_new_data(void *cdata)
void BKE_constraint_free_data_ex(bConstraint *con, bool do_id_user)
static bConstraintTypeInfo CTI_KINEMATIC
static int splineik_get_tars(bConstraint *con, ListBase *list)
static void actcon_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
bConstraint * BKE_constraint_find_from_target(Object *ob, bConstraintTarget *tgt, bPoseChannel **r_pchan)
static void distlimit_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
void BKE_constraint_unique_name(bConstraint *con, ListBase *list)
static bConstraintTypeInfo CTI_TRANSLIKE
static bConstraintTypeInfo CTI_FOLLOWPATH
static void shrinkwrap_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
void BKE_constraints_active_set(ListBase *list, bConstraint *con)
void BKE_constraint_blend_read_lib(BlendLibReader *reader, ID *id, ListBase *conlist)
static bConstraintTypeInfo CTI_SIZELIKE
bool BKE_constraint_apply_and_remove_for_object(Depsgraph *depsgraph, Scene *scene, ListBase *constraints, Object *ob, bConstraint *con)
static void armdef_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *UNUSED(con), bConstraintOb *UNUSED(cob), bConstraintTarget *ct, float UNUSED(ctime))
static void actcon_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void splineik_new_data(void *cdata)
void BKE_constraints_clear_evalob(bConstraintOb *cob)
static void pycon_new_data(void *cdata)
int BKE_constraint_targets_get(struct bConstraint *con, struct ListBase *r_targets)
static bConstraint * add_new_constraint_internal(const char *name, short type)
static void con_unlink_refs_cb(bConstraint *UNUSED(con), ID **idpoin, bool is_reference, void *UNUSED(userData))
static void kinematic_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
static void locktrack_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static void transform_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static bConstraintTypeInfo CTI_CHILDOF
static void armdef_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void shrinkwrap_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
static void actcon_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void sizelimit_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *UNUSED(targets))
static void followpath_new_data(void *cdata)
static void pycon_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void transform_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static void camerasolver_new_data(void *cdata)
static int translike_get_tars(bConstraint *con, ListBase *list)
static bConstraintTypeInfo CTI_SIZELIMIT
const bConstraintTypeInfo * BKE_constraint_typeinfo_from_type(int type)
static void clampto_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static bConstraintTypeInfo CTI_DISTLIMIT
static bConstraintTypeInfo CTI_CAMERASOLVER
static bConstraintTypeInfo CTI_LOCLIKE
static void stretchto_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void trackto_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static bConstraint * constraint_list_find_from_target(ListBase *constraints, bConstraintTarget *tgt)
static void objectsolver_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static bConstraintTypeInfo CTI_LOCLIMIT
static void trackto_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static void camerasolver_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void armdef_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void followtrack_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void loclike_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void clampto_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *UNUSED(con), bConstraintOb *UNUSED(cob), bConstraintTarget *ct, float UNUSED(ctime))
static void constraint_copy_data_ex(bConstraint *dst, bConstraint *src, const int flag, const bool do_extern)
static bool followtrack_context_init(FollowTrackContext *context, bConstraint *con, bConstraintOb *cob)
void BKE_constraint_mat_convertspace(Object *ob, bPoseChannel *pchan, bConstraintOb *cob, float mat[4][4], short from, short to, const bool keep_scale)
static void loclike_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static int childof_get_tars(bConstraint *con, ListBase *list)
void BKE_constraint_panel_expand(bConstraint *con)
static int actcon_get_tars(bConstraint *con, ListBase *list)
static void shrinkwrap_new_data(void *cdata)
static void objectsolver_new_data(void *cdata)
static void contarget_get_mesh_mat(Object *ob, const char *substring, float mat[4][4])
static void splineik_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static void distlimit_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void default_get_tarmat_full_bbone(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
static void rotlike_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static bConstraintTypeInfo CTI_FOLLOWTRACK
static void armdef_copy(bConstraint *con, bConstraint *srccon)
bConstraint * BKE_constraints_active_get(ListBase *list)
static bConstraintTypeInfo CTI_SHRINKWRAP
static void kinematic_new_data(void *cdata)
static bConstraintTypeInfo CTI_ARMATURE
static void sizelike_new_data(void *cdata)
void BKE_constraints_copy_ex(ListBase *dst, const ListBase *src, const int flag, bool do_extern)
static void childof_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
bool BKE_constraint_apply_for_pose(Depsgraph *depsgraph, Scene *scene, Object *ob, bPoseChannel *pchan, bConstraint *con)
static void lib_link_constraint_cb(bConstraint *UNUSED(con), ID **idpoin, bool UNUSED(is_reference), void *userdata)
static int sizelike_get_tars(bConstraint *con, ListBase *list)
static void stretchto_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
bool BKE_constraint_target_uses_bbone(struct bConstraint *con, struct bConstraintTarget *ct)
void BKE_constraints_free_ex(ListBase *list, bool do_id_user)
static int rotlike_get_tars(bConstraint *con, ListBase *list)
static void translike_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
bool BKE_constraint_remove(ListBase *list, bConstraint *con)
static void objectsolver_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *UNUSED(targets))
void BKE_constraints_solve(struct Depsgraph *depsgraph, ListBase *conlist, bConstraintOb *cob, float ctime)
static void translike_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void armdef_accumulate_bone(bConstraintTarget *ct, bPoseChannel *pchan, const float wco[3], bool force_envelope, float *r_totweight, float r_sum_mat[4][4], DualQuat *r_sum_dq)
static void rotlike_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void default_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
static void followpath_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void pycon_copy(bConstraint *con, bConstraint *srccon)
static void transformcache_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
struct tConstraintLinkData tConstraintLinkData
bConstraint * BKE_constraint_duplicate_ex(bConstraint *src, const int flag, const bool do_extern)
static void locktrack_new_data(void *cdata)
static void constraints_init_typeinfo(void)
static int locktrack_get_tars(bConstraint *con, ListBase *list)
static void loclimit_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *UNUSED(targets))
static void shrinkwrap_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static void samevolume_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *UNUSED(targets))
#define SINGLETARGETNS_GET_TARS(con, datatar, ct, list)
void BKE_constraint_custom_object_space_init(bConstraintOb *cob, bConstraint *con)
static int distlimit_get_tars(bConstraint *con, ListBase *list)
static void followtrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *UNUSED(targets))
static bConstraintTypeInfo CTI_SPLINEIK
static void splineik_free(bConstraint *con)
static int pivotcon_get_tars(bConstraint *con, ListBase *list)
static void trackto_new_data(void *cdata)
static void followtrack_undistort_if_needed(FollowTrackContext *context, const int clip_width, const int clip_height, float marker_position[2])
struct FollowTrackContext FollowTrackContext
static void damptrack_new_data(void *cdata)
static void damptrack_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
bConstraint * BKE_constraint_add_for_pose(Object *ob, bPoseChannel *pchan, const char *name, short type)
static void trackto_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void damptrack_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static void followtrack_evaluate_using_2d_position(FollowTrackContext *context, bConstraintOb *cob)
static void constraint_target_to_mat4(Object *ob, const char *substring, bConstraintOb *cob, float mat[4][4], short from, short to, short flag, float headtail)
static void contarget_get_lattice_mat(Object *ob, const char *substring, float mat[4][4])
static bConstraintTypeInfo CTI_MINMAX
static int shrinkwrap_get_tars(bConstraint *con, ListBase *list)
void BKE_constraints_free(ListBase *list)
static void pivotcon_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
const bConstraintTypeInfo * BKE_constraint_typeinfo_get(bConstraint *con)
static bConstraint * constraint_find_original(Object *ob, bPoseChannel *pchan, bConstraint *con, Object **r_orig_ob)
static bConstraintTypeInfo * constraintsTypeInfo[NUM_CONSTRAINT_TYPES]
static void sizelike_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *targets)
static int armdef_get_tars(bConstraint *con, ListBase *list)
static void pycon_free(bConstraint *con)
static void followtrack_project_to_depth_object_if_needed(FollowTrackContext *context, bConstraintOb *cob)
static void transformcache_free(bConstraint *con)
static void pivotcon_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
void BKE_constraint_blend_read_data(BlendDataReader *reader, ListBase *lb)
static const float track_dir_vecs[6][3]
bConstraintOb * BKE_constraints_make_evalob(Depsgraph *depsgraph, Scene *scene, Object *ob, void *subdata, short datatype)
static int trackto_get_tars(bConstraint *con, ListBase *list)
#define SINGLETARGETNS_FLUSH_TARS(con, datatar, ct, list, no_copy)
static void locktrack_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void splineik_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void minmax_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
void BKE_constraint_free_data(bConstraint *con)
#define VALID_CONS_TARGET(ct)
static void actcon_new_data(void *cdata)
static void loclike_new_data(void *cdata)
static void armdef_free(bConstraint *con)
static void damptrack_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void followpath_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *UNUSED(cob), bConstraintTarget *ct, float UNUSED(ctime))
#define SINGLETARGET_GET_TARS(con, datatar, datasubtarget, ct, list)
static bConstraintTypeInfo CTI_LOCKTRACK
void BKE_constraint_blend_write(BlendWriter *writer, ListBase *conlist)
static void con_fix_copied_refs_cb(bConstraint *UNUSED(con), ID **idpoin, bool is_reference, void *UNUSED(userData))
static int transform_get_tars(bConstraint *con, ListBase *list)
static bConstraintTypeInfo CTI_OBJECTSOLVER
static bConstraintTypeInfo CTI_PIVOT
static void expand_constraint_cb(bConstraint *UNUSED(con), ID **idpoin, bool UNUSED(is_reference), void *userdata)
bool BKE_constraint_apply_for_object(Depsgraph *depsgraph, Scene *scene, Object *ob, bConstraint *con)
static bConstraintTypeInfo CTI_PYTHON
static bConstraintTypeInfo CTI_ACTION
static int clampto_get_tars(bConstraint *con, ListBase *list)
static void armdef_accumulate_matrix(const float obmat[4][4], const float iobmat[4][4], const float basemat[4][4], const float bonemat[4][4], float weight, float r_sum_mat[4][4], DualQuat *r_sum_dq)
static void kinematic_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static void distlimit_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
static void clampto_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
static void followtrack_new_data(void *cdata)
#define SINGLETARGET_FLUSH_TARS(con, datatar, datasubtarget, ct, list, no_copy)
static MovieClip * followtrack_tracking_clip_get(bConstraint *con, bConstraintOb *cob)
static void childof_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
void BKE_constraint_targets_for_solving_get(struct Depsgraph *depsgraph, bConstraint *con, bConstraintOb *cob, ListBase *targets, float ctime)
static void distlimit_new_data(void *cdata)
static void transform_id_looper(bConstraint *con, ConstraintIDFunc func, void *userdata)
const Depsgraph * depsgraph
SyclQueue void void * src
IconTextureDrawCall normal
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
BVHTree_RayCastCallback raycast_callback
const float * anim_path_accum_length
MovieTrackingObject * tracking_object
MovieTrackingTrack * track
struct MDeformVert * dvert
struct MovieTracking tracking
struct CurveCache * curve_cache
float space_obj_world_matrix[4][4]
struct bPoseChannel * pchan
struct Depsgraph * depsgraph
struct bConstraintTarget * next
void(* id_looper)(struct bConstraint *con, ConstraintIDFunc func, void *userdata)
int(* get_constraint_targets)(struct bConstraint *con, struct ListBase *list)
void(* evaluate_constraint)(struct bConstraint *con, struct bConstraintOb *cob, struct ListBase *targets)
void(* flush_constraint_targets)(struct bConstraint *con, struct ListBase *list, bool no_copy)
void(* copy_data)(struct bConstraint *con, struct bConstraint *src)
void(* get_target_matrix)(struct Depsgraph *depsgraph, struct bConstraint *con, struct bConstraintOb *cob, struct bConstraintTarget *ct, float ctime)
void(* free_data)(struct bConstraint *con)
void(* new_data)(void *cdata)
struct Object * space_object
struct bConstraint * prev
struct bConstraint * next
struct Mat4 * bbone_deform_mats
struct Mat4 * bbone_pose_mats
struct Mat4 * bbone_rest_mats
struct bPoseChannel_Runtime runtime
struct bPoseChannel * orig_pchan
static int blend(const Tex *tex, const float texvec[3], TexResult *texres)
void USD_get_transform(struct CacheReader *reader, float r_mat_world[4][4], float time, float scale)