167 const bool use_empty_drawtype,
179 struct Object *ob,
float r_min[3],
float r_max[3],
bool use_hidden,
bool use_select);
208 const float vec[3],
const float b1[3],
const float b2[3],
float rad1,
float rad2,
float rdist);
220 const struct Bone *bone_parent,
304 void mat3_to_vec_roll(
const float mat[3][3],
float r_vec[3],
float *r_roll);
309 void mat3_vec_to_roll(
const float mat[3][3],
const float vec[3],
float *r_roll);
317 const float inmat[4][4],
331 const float inmat[4][4],
339 const float inloc[3],
345 const float inmat[4][4],
353 float pose_mat[4][4],
359 const float inmat[4][4],
408 const float inmat[4][4],
444 int inherit_scale_mode,
445 const float offs_bone[4][4],
446 const float parent_arm_mat[4][4],
447 const float parent_pose_mat[4][4],
458 float quat[4],
float eul[3],
float axis[3],
float *
angle,
short oldMode,
short newMode);
461 #define MAX_BBONE_SUBDIV 32
546 float *r_blend_next);
549 #define PBONE_VISIBLE(arm, bone) \
550 (CHECK_TYPE_INLINE(arm, bArmature *), \
551 CHECK_TYPE_INLINE(bone, Bone *), \
552 (((bone)->layer & (arm)->layer) && !((bone)->flag & BONE_HIDDEN_P)))
554 #define PBONE_SELECTABLE(arm, bone) \
555 (PBONE_VISIBLE(arm, bone) && !((bone)->flag & BONE_UNSELECTABLE))
557 #define PBONE_SELECTED(arm, bone) (((bone)->flag & BONE_SELECTED) & PBONE_VISIBLE(arm, bone))
560 #define FOREACH_PCHAN_SELECTED_IN_OBJECT_BEGIN(_ob, _pchan) \
561 for (bPoseChannel *_pchan = (_ob)->pose->chanbase.first; _pchan; _pchan = _pchan->next) { \
562 if (PBONE_VISIBLE(((bArmature *)(_ob)->data), (_pchan)->bone) && \
563 ((_pchan)->bone->flag & BONE_SELECTED)) {
564 #define FOREACH_PCHAN_SELECTED_IN_OBJECT_END \
569 #define FOREACH_PCHAN_VISIBLE_IN_OBJECT_BEGIN(_ob, _pchan) \
570 for (bPoseChannel *_pchan = (_ob)->pose->chanbase.first; _pchan; _pchan = _pchan->next) { \
571 if (PBONE_VISIBLE(((bArmature *)(_ob)->data), (_pchan)->bone)) {
572 #define FOREACH_PCHAN_VISIBLE_IN_OBJECT_END \
642 const struct Object *ob_target,
643 float (*vert_coords)[3],
644 float (*vert_deform_mats)[3][3],
647 float (*vert_coords_prev)[3],
648 const char *defgrp_name,
652 const struct Object *ob_target,
653 float (*vert_coords)[3],
654 float (*vert_deform_mats)[3][3],
657 float (*vert_coords_prev)[3],
658 const char *defgrp_name,
659 const struct Mesh *me_target);
662 const struct Object *ob_target,
663 float (*vert_coords)[3],
664 float (*vert_deform_mats)[3][3],
667 float (*vert_coords_prev)[3],
668 const char *defgrp_name,
typedef float(TangentPoint)[2]
void BKE_pchan_bbone_handles_get(struct bPoseChannel *pchan, struct bPoseChannel **r_prev, struct bPoseChannel **r_next)
void BKE_bone_parent_transform_calc_from_pchan(const struct bPoseChannel *pchan, struct BoneParentTransform *r_bpt)
void BKE_pchan_to_mat4(const struct bPoseChannel *pchan, float r_chanmat[4][4])
void BKE_armature_where_is_bone(struct Bone *bone, const struct Bone *bone_parent, bool use_recursion)
bool BKE_pose_minmax(struct Object *ob, float r_min[3], float r_max[3], bool use_hidden, bool use_select)
void BKE_pose_splineik_evaluate(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object, int rootchan_index)
void BKE_pose_splineik_init_tree(struct Scene *scene, struct Object *ob, float ctime)
struct BoneParentTransform BoneParentTransform
void BKE_pose_iktree_evaluate(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object, int rootchan_index)
void BKE_pose_apply_action_selected_bones(struct Object *ob, struct bAction *action, struct AnimationEvalContext *anim_eval_context)
struct Bone * BKE_armature_find_bone_name(struct bArmature *arm, const char *name)
struct bArmature * BKE_armature_from_object(struct Object *ob)
void BKE_armature_refresh_layer_used(struct Depsgraph *depsgraph, struct bArmature *arm)
void BKE_pose_apply_action_all_bones(struct Object *ob, struct bAction *action, struct AnimationEvalContext *anim_eval_context)
void BKE_armature_mat_world_to_pose(struct Object *ob, const float inmat[4][4], float outmat[4][4])
struct PoseTarget PoseTarget
void BKE_pchan_rebuild_bbone_handles(struct bPose *pose, struct bPoseChannel *pchan)
void BKE_pose_eval_bone(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object, int pchan_index)
void mat3_vec_to_roll(const float mat[3][3], const float vec[3], float *r_roll)
void BKE_pchan_bbone_segments_cache_compute(struct bPoseChannel *pchan)
struct bPoseChannel * BKE_armature_ik_solver_find_root(struct bPoseChannel *pchan, struct bKinematicConstraint *data)
void BKE_pchan_bbone_deform_segment_index(const struct bPoseChannel *pchan, float pos, int *r_index, float *r_blend_next)
void BKE_armature_loc_pose_to_bone(struct bPoseChannel *pchan, const float inloc[3], float outloc[3])
void BKE_pose_eval_bbone_segments(struct Depsgraph *depsgraph, struct Object *object, int pchan_index)
void BKE_armature_bone_hash_free(struct bArmature *arm)
void BKE_pose_bone_done(struct Depsgraph *depsgraph, struct Object *object, int pchan_index)
void BKE_pchan_apply_mat4(struct bPoseChannel *pchan, const float mat[4][4], bool use_compat)
struct BBoneSplineParameters BBoneSplineParameters
void BKE_pose_ensure(struct Main *bmain, struct Object *ob, struct bArmature *arm, bool do_id_user)
float distfactor_to_bone(const float vec[3], const float b1[3], const float b2[3], float rad1, float rad2, float rdist)
void BKE_splineik_execute_tree(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan_root, float ctime)
void BKE_pchan_mat3_to_rot(struct bPoseChannel *pchan, const float mat[3][3], bool use_compat)
void BKE_pchan_minmax(const struct Object *ob, const struct bPoseChannel *pchan, const bool use_empty_drawtype, float r_min[3], float r_max[3])
void BKE_bone_parent_transform_combine(const struct BoneParentTransform *in1, const struct BoneParentTransform *in2, struct BoneParentTransform *result)
void BKE_pose_clear_pointers(struct bPose *pose)
void BKE_pose_eval_init(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
void BKE_armature_transform(struct bArmature *arm, const float mat[4][4], bool do_props)
bool BKE_armature_bone_flag_test_recursive(const struct Bone *bone, int flag)
void BKE_armature_mat_pose_to_bone(struct bPoseChannel *pchan, const float inmat[4][4], float outmat[4][4])
void BKE_armature_mat_pose_to_bone_ex(struct Depsgraph *depsgraph, struct Object *ob, struct bPoseChannel *pchan, const float inmat[4][4], float outmat[4][4])
void BKE_pose_where_is_bone_tail(struct bPoseChannel *pchan)
struct BoundBox * BKE_armature_boundbox_get(struct Object *ob)
struct bArmature * BKE_armature_add(struct Main *bmain, const char *name)
void BKE_pchan_bbone_spline_params_get(struct bPoseChannel *pchan, bool rest, struct BBoneSplineParameters *r_param)
void BKE_bone_parent_transform_invert(struct BoneParentTransform *bpt)
void BKE_bone_offset_matrix_get(const struct Bone *bone, float offs_bone[4][4])
void BKE_armature_mat_bone_to_pose(struct bPoseChannel *pchan, const float inmat[4][4], float outmat[4][4])
void BKE_pose_eval_done(struct Depsgraph *depsgraph, struct Object *object)
void BKE_pose_remap_bone_pointers(struct bArmature *armature, struct bPose *pose)
void BKE_pose_apply_action_blend(struct Object *ob, struct bAction *action, struct AnimationEvalContext *anim_eval_context, float blend_factor)
void BKE_rotMode_change_values(float quat[4], float eul[3], float axis[3], float *angle, short oldMode, short newMode)
void BKE_pose_where_is_bone(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan, float ctime, bool do_extra)
void BKE_bone_parent_transform_clear(struct BoneParentTransform *bpt)
void BKE_pose_pchan_index_rebuild(struct bPose *pose)
void BKE_pose_eval_cleanup(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
void BKE_armature_loc_world_to_pose(struct Object *ob, const float inloc[3], float outloc[3])
void BKE_armature_mat_pose_to_delta(float delta_mat[4][4], float pose_mat[4][4], float arm_mat[4][4])
void BKE_armature_deform_coords_with_editmesh(const struct Object *ob_arm, const struct Object *ob_target, float(*vert_coords)[3], float(*vert_deform_mats)[3][3], int vert_coords_len, int deformflag, float(*vert_coords_prev)[3], const char *defgrp_name, struct BMEditMesh *em_target)
void vec_roll_to_mat3(const float vec[3], float roll, float r_mat[3][3])
void BKE_pchan_bbone_spline_setup(struct bPoseChannel *pchan, bool rest, bool for_deform, Mat4 *result_array)
void BKE_pose_where_is(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
int BKE_armature_bonelist_count(const struct ListBase *lb)
void BKE_pchan_calc_mat(struct bPoseChannel *pchan)
int BKE_pchan_bbone_spline_compute(struct BBoneSplineParameters *param, bool for_deform, Mat4 *result_array)
void BKE_pose_constraints_evaluate(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object, int pchan_index)
void BKE_armature_where_is(struct bArmature *arm)
void BKE_armature_copy_bone_transforms(struct bArmature *armature_dst, const struct bArmature *armature_src)
void mat3_to_vec_roll(const float mat[3][3], float r_vec[3], float *r_roll)
void BKE_pose_channels_clear_with_null_bone(struct bPose *pose, bool do_id_user)
void BKE_armature_editbonelist_free(struct ListBase *lb, bool do_id_user)
void BKE_bone_parent_transform_calc_from_matrices(int bone_flag, int inherit_scale_mode, const float offs_bone[4][4], const float parent_arm_mat[4][4], const float parent_pose_mat[4][4], struct BoneParentTransform *r_bpt)
void BKE_pchan_rot_to_mat3(const struct bPoseChannel *pchan, float r_mat[3][3])
void BKE_armature_deform_coords_with_mesh(const struct Object *ob_arm, const struct Object *ob_target, float(*vert_coords)[3], float(*vert_deform_mats)[3][3], int vert_coords_len, int deformflag, float(*vert_coords_prev)[3], const char *defgrp_name, const struct Mesh *me_target)
void BKE_armature_deform_coords_with_gpencil_stroke(const struct Object *ob_arm, const struct Object *ob_target, float(*vert_coords)[3], float(*vert_deform_mats)[3][3], int vert_coords_len, int deformflag, float(*vert_coords_prev)[3], const char *defgrp_name, struct bGPDstroke *gps_target)
void BKE_bone_parent_transform_apply(const struct BoneParentTransform *bpt, const float inmat[4][4], float outmat[4][4])
void vec_roll_to_mat3_normalized(const float nor[3], float roll, float r_mat[3][3])
void BKE_pose_rebuild(struct Main *bmain, struct Object *ob, struct bArmature *arm, bool do_id_user)
void BKE_pchan_bbone_segments_cache_copy(struct bPoseChannel *pchan, struct bPoseChannel *pchan_from)
bool bone_autoside_name(char name[64], int strip_number, short axis, float head, float tail)
void BKE_armature_bone_hash_make(struct bArmature *arm)
void BKE_armature_bonelist_free(struct ListBase *lb, bool do_id_user)
void BKE_pose_eval_init_ik(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
void BKE_pchan_bbone_handles_compute(const BBoneSplineParameters *param, float h1[3], float *r_roll1, float h2[3], float *r_roll2, bool ease, bool offsets)
struct bPoseChannel * BKE_armature_splineik_solver_find_root(struct bPoseChannel *pchan, struct bSplineIKConstraint *data)
struct Depsgraph Depsgraph
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
const Depsgraph * depsgraph
struct EditBone * bbone_child
float disp_bbone_mat[32][4][4]
struct EditBone * bbone_next
float disp_tail_mat[4][4]
struct EditBone * bbone_prev
float(* basis_change)[3][3]
struct bPoseChannel ** pchan