178 const bool use_empty_drawtype,
223 const float vec[3],
const float b1[3],
const float b2[3],
float rad1,
float rad2,
float rdist);
297void mat3_vec_to_roll(
const float mat[3][3],
const float vec[3],
float *r_roll);
317 const float inmat[4][4],
329 const float inmat[4][4],
337 float pose_mat[4][4],
338 float arm_mat[4][4]);
343 const float inmat[4][4],
392 const float inmat[4][4],
428 int inherit_scale_mode,
429 const float offs_bone[4][4],
430 const float parent_arm_mat[4][4],
431 const float parent_pose_mat[4][4],
442 float quat[4],
float eul[3],
float axis[3],
float *angle,
short oldMode,
short newMode);
445#define MAX_BBONE_SUBDIV 32
534 float *r_blend_next);
548 float *r_blend_next);
551#define PBONE_VISIBLE(arm, bone) ANIM_bone_is_visible(arm, bone)
553#define PBONE_SELECTABLE(arm, bone) \
554 (PBONE_VISIBLE(arm, bone) && !((bone)->flag & BONE_UNSELECTABLE))
556#define PBONE_SELECTED(arm, bone) (((bone)->flag & BONE_SELECTED) & PBONE_VISIBLE(arm, bone))
559#define FOREACH_PCHAN_SELECTED_IN_OBJECT_BEGIN(_ob, _pchan) \
560 for (bPoseChannel *_pchan = (bPoseChannel *)(_ob)->pose->chanbase.first; _pchan; \
561 _pchan = _pchan->next) \
563 if (PBONE_VISIBLE(((bArmature *)(_ob)->data), (_pchan)->bone) && \
564 ((_pchan)->bone->flag & BONE_SELECTED)) \
566#define FOREACH_PCHAN_SELECTED_IN_OBJECT_END \
571#define FOREACH_PCHAN_VISIBLE_IN_OBJECT_BEGIN(_ob, _pchan) \
572 for (bPoseChannel *_pchan = (bPoseChannel *)(_ob)->pose->chanbase.first; _pchan; \
573 _pchan = _pchan->next) \
575 if (PBONE_VISIBLE(((bArmature *)(_ob)->data), (_pchan)->bone)) {
576#define FOREACH_PCHAN_VISIBLE_IN_OBJECT_END \
634 float (*vert_coords)[3],
635 float (*vert_deform_mats)[3][3],
638 float (*vert_coords_prev)[3],
639 const char *defgrp_name,
655 float (*vert_coords)[3],
656 float (*vert_deform_mats)[3][3],
659 float (*vert_coords_prev)[3],
660 const char *defgrp_name,
661 const Mesh *me_target);
665 float (*vert_coords)[3],
666 float (*vert_deform_mats)[3][3],
669 float (*vert_coords_prev)[3],
670 const char *defgrp_name,
void BKE_pchan_rot_to_mat3(const bPoseChannel *pchan, float r_mat[3][3])
void BKE_splineik_execute_tree(Depsgraph *depsgraph, Scene *scene, Object *ob, bPoseChannel *pchan_root, float ctime)
void BKE_pose_eval_init_ik(Depsgraph *depsgraph, Scene *scene, Object *object)
void BKE_pose_splineik_evaluate(Depsgraph *depsgraph, Scene *scene, Object *object, int rootchan_index)
void BKE_armature_bone_hash_make(bArmature *arm)
void BKE_pchan_bbone_spline_setup(bPoseChannel *pchan, bool rest, bool for_deform, Mat4 *result_array)
void BKE_pose_rebuild(Main *bmain, Object *ob, bArmature *arm, bool do_id_user)
bArmature * BKE_armature_from_object(Object *ob)
bPoseChannel * BKE_armature_ik_solver_find_root(bPoseChannel *pchan, bKinematicConstraint *data)
void BKE_pose_pchan_index_rebuild(bPose *pose)
void BKE_bone_parent_transform_clear(BoneParentTransform *bpt)
void BKE_armature_deform_coords_with_editmesh(const Object *ob_arm, const 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 BMEditMesh *em_target)
void BKE_pchan_bbone_deform_segment_index(const bPoseChannel *pchan, const float *co, int *r_index, float *r_blend_next)
void BKE_bone_parent_transform_combine(const BoneParentTransform *in1, const BoneParentTransform *in2, BoneParentTransform *result)
void BKE_pchan_bbone_spline_params_get(bPoseChannel *pchan, bool rest, BBoneSplineParameters *param)
void BKE_pose_where_is_bone(Depsgraph *depsgraph, Scene *scene, Object *ob, bPoseChannel *pchan, float ctime, bool do_extra)
int BKE_armature_bonelist_count(const ListBase *lb)
void BKE_armature_loc_pose_to_bone(bPoseChannel *pchan, const float inloc[3], float outloc[3])
void BKE_pose_splineik_init_tree(Scene *scene, Object *ob, float ctime)
void BKE_bone_parent_transform_invert(BoneParentTransform *bpt)
void mat3_vec_to_roll(const float mat[3][3], const float vec[3], float *r_roll)
void BKE_armature_mat_bone_to_pose(bPoseChannel *pchan, const float inmat[4][4], float outmat[4][4])
void BKE_pchan_calc_mat(bPoseChannel *pchan)
void BKE_armature_bonelist_free(ListBase *lb, bool do_id_user)
void BKE_pose_where_is_bone_tail(bPoseChannel *pchan)
void BKE_pchan_apply_mat4(bPoseChannel *pchan, const float mat[4][4], bool use_compat)
void BKE_pchan_minmax(const Object *ob, const bPoseChannel *pchan, const bool use_empty_drawtype, float r_min[3], float r_max[3])
void BKE_pose_iktree_evaluate(Depsgraph *depsgraph, Scene *scene, Object *object, int rootchan_index)
void BKE_pose_eval_cleanup(Depsgraph *depsgraph, Scene *scene, Object *object)
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(bPoseChannel *pchan, const float inmat[4][4], float outmat[4][4])
void BKE_pose_eval_init(Depsgraph *depsgraph, Scene *scene, Object *object)
void BKE_armature_where_is_bone(Bone *bone, const Bone *bone_parent, bool use_recursion)
void BKE_pchan_rebuild_bbone_handles(bPose *pose, bPoseChannel *pchan)
void BKE_armature_deform_coords_with_mesh(const Object *ob_arm, const 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 Mesh *me_target)
void BKE_pose_clear_pointers(bPose *pose)
bool BKE_armature_bone_flag_test_recursive(const Bone *bone, int flag)
void BKE_pchan_to_mat4(const bPoseChannel *pchan, float r_chanmat[4][4])
void BKE_armature_copy_bone_transforms(bArmature *armature_dst, const bArmature *armature_src)
void BKE_rotMode_change_values(float quat[4], float eul[3], float axis[3], float *angle, short oldMode, short newMode)
void BKE_armature_transform(bArmature *arm, const float mat[4][4], bool do_props)
void BKE_bone_parent_transform_apply(const BoneParentTransform *bpt, const float inmat[4][4], float outmat[4][4])
void BKE_pchan_bbone_segments_cache_copy(bPoseChannel *pchan, bPoseChannel *pchan_from)
void BKE_armature_deform_coords_with_gpencil_stroke(const Object *ob_arm, const 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, bGPDstroke *gps_target)
void BKE_armature_mat_pose_to_delta(float delta_mat[4][4], float pose_mat[4][4], float arm_mat[4][4])
void vec_roll_to_mat3(const float vec[3], float roll, float r_mat[3][3])
void BKE_pose_eval_bbone_segments(Depsgraph *depsgraph, Object *object, int pchan_index)
void BKE_pose_ensure(Main *bmain, Object *ob, bArmature *arm, bool do_id_user)
void BKE_pose_where_is(Depsgraph *depsgraph, Scene *scene, Object *ob)
void BKE_armature_mat_pose_to_bone_ex(Depsgraph *depsgraph, Object *ob, bPoseChannel *pchan, const float inmat[4][4], float outmat[4][4])
void BKE_bone_parent_transform_calc_from_pchan(const bPoseChannel *pchan, BoneParentTransform *r_bpt)
void BKE_armature_editbonelist_free(ListBase *lb, bool do_id_user)
void BKE_pchan_mat3_to_rot(bPoseChannel *pchan, const float mat[3][3], bool use_compat)
void mat3_to_vec_roll(const float mat[3][3], float r_vec[3], float *r_roll)
void BKE_armature_deform_coords_with_curves(const Object &ob_arm, const Object &ob_target, const ListBase *defbase, blender::MutableSpan< blender::float3 > vert_coords, std::optional< blender::MutableSpan< blender::float3 > > vert_coords_prev, std::optional< blender::MutableSpan< blender::float3x3 > > vert_deform_mats, blender::Span< MDeformVert > dverts, int deformflag, blender::StringRefNull defgrp_name)
void BKE_pchan_bbone_segments_cache_compute(bPoseChannel *pchan)
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], BoneParentTransform *r_bpt)
void BKE_pchan_bbone_handles_get(bPoseChannel *pchan, bPoseChannel **r_prev, bPoseChannel **r_next)
void BKE_bone_offset_matrix_get(const Bone *bone, float offs_bone[4][4])
std::optional< blender::Bounds< blender::float3 > > BKE_armature_min_max(const Object *ob)
Bone * BKE_armature_find_bone_name(bArmature *arm, const char *name)
void BKE_armature_bone_hash_free(bArmature *arm)
void BKE_armature_where_is(bArmature *arm)
void BKE_pose_bone_done(Depsgraph *depsgraph, Object *object, int pchan_index)
void BKE_pchan_bbone_deform_clamp_segment_index(const bPoseChannel *pchan, float head_tail, int *r_index, float *r_blend_next)
void BKE_armature_mat_world_to_pose(Object *ob, const float inmat[4][4], float outmat[4][4])
void BKE_pose_constraints_evaluate(Depsgraph *depsgraph, Scene *scene, Object *object, int pchan_index)
void BKE_pose_eval_done(Depsgraph *depsgraph, Object *object)
void vec_roll_to_mat3_normalized(const float nor[3], float roll, float r_mat[3][3])
int BKE_pchan_bbone_spline_compute(BBoneSplineParameters *param, bool for_deform, Mat4 *result_array)
bPoseChannel * BKE_armature_splineik_solver_find_root(bPoseChannel *pchan, bSplineIKConstraint *data)
bool bone_autoside_name(char name[64], int strip_number, short axis, float head, float tail)
void BKE_pose_channels_clear_with_null_bone(bPose *pose, bool do_id_user)
void BKE_pose_remap_bone_pointers(bArmature *armature, bPose *pose)
void BKE_pose_eval_bone(Depsgraph *depsgraph, Scene *scene, Object *object, int pchan_index)
void BKE_armature_loc_world_to_pose(Object *ob, const float inloc[3], float outloc[3])
std::optional< blender::Bounds< blender::float3 > > BKE_pose_minmax(const Object *ob, bool use_select)
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)
bArmature * BKE_armature_add(Main *bmain, const char *name)
const Depsgraph * depsgraph
DEGForeachIDComponentCallback callback
draw_view in_light_buf[] float
SelectedBonesResult BKE_armature_find_selected_bones(const bArmature *armature, SelectedBoneCallback callback)
BoneNameSet BKE_armature_find_selected_bone_names(const bArmature *armature)
Frequency::GEOMETRY nor[]
ListBase bone_collections
float disp_bbone_mat[32][4][4]
float disp_tail_mat[4][4]
eBone_BBoneMappingMode bbone_mapping_mode
float(* basis_change)[3][3]