Blender V4.3
armature_edit.cc File Reference
#include "DNA_armature_types.h"
#include "DNA_constraint_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "MEM_guardedalloc.h"
#include "BLT_translation.hh"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BKE_action.hh"
#include "BKE_armature.hh"
#include "BKE_constraint.h"
#include "BKE_context.hh"
#include "BKE_global.hh"
#include "BKE_layer.hh"
#include "BKE_main.hh"
#include "BKE_object.hh"
#include "BKE_object_types.hh"
#include "BKE_report.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "RNA_prototypes.hh"
#include "UI_interface_icons.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "ED_armature.hh"
#include "ED_object.hh"
#include "ED_outliner.hh"
#include "ED_screen.hh"
#include "ED_view3d.hh"
#include "ANIM_bone_collections.hh"
#include "DEG_depsgraph.hh"
#include "armature_intern.hh"

Go to the source code of this file.

Classes

struct  EditBonePoint
 

Functions

Object Tools Public API
bArmatureED_armature_context (const bContext *C)
 
void ED_armature_edit_transform (bArmature *arm, const float mat[4][4], const bool do_props)
 
void ED_armature_transform (bArmature *arm, const float mat[4][4], const bool do_props)
 
void ED_armature_origin_set (Main *bmain, Object *ob, const float cursor[3], int centermode, int around)
 
Chain-Based Tool Utilities
static void chains_find_tips (ListBase *edbo, ListBase *list)
 
Fill Operator
static void fill_add_joint (EditBone *ebo, short eb_tail, ListBase *points)
 
static int armature_fill_bones_exec (bContext *C, wmOperator *op)
 
void ARMATURE_OT_fill (wmOperatorType *ot)
 
Switch Direction Operator

Currently, this does not use context loops, as context loops do not make it easy to retrieve any hierarchical/chain relationships which are necessary for this to be done easily.

static void armature_clear_swap_done_flags (bArmature *arm)
 
static int armature_switch_direction_exec (bContext *C, wmOperator *)
 
void ARMATURE_OT_switch_direction (wmOperatorType *ot)
 
Align Operator
static void fix_connected_bone (EditBone *ebone)
 
static void fix_editbone_connected_children (ListBase *edbo, EditBone *ebone)
 
static void bone_align_to_bone (ListBase *edbo, EditBone *selbone, EditBone *actbone)
 
static int armature_align_bones_exec (bContext *C, wmOperator *op)
 
void ARMATURE_OT_align (wmOperatorType *ot)
 
Split Operator
static int armature_split_exec (bContext *C, wmOperator *)
 
void ARMATURE_OT_split (wmOperatorType *ot)
 
Delete Operator
static bool armature_delete_ebone_cb (const char *bone_name, void *arm_p)
 
static int armature_delete_selected_exec (bContext *C, wmOperator *)
 
static int armature_delete_selected_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void ARMATURE_OT_delete (wmOperatorType *ot)
 
static bool armature_dissolve_ebone_cb (const char *bone_name, void *arm_p)
 
static int armature_dissolve_selected_exec (bContext *C, wmOperator *)
 
void ARMATURE_OT_dissolve (wmOperatorType *ot)
 
Hide Operator
static int armature_hide_exec (bContext *C, wmOperator *op)
 
void ARMATURE_OT_hide (wmOperatorType *ot)
 
Reveal Operator
static int armature_reveal_exec (bContext *C, wmOperator *op)
 
void ARMATURE_OT_reveal (wmOperatorType *ot)
 

Bone Roll Calculate Operator

enum  eCalcRollTypes {
  CALC_ROLL_POS_X = 0 , CALC_ROLL_POS_Y , CALC_ROLL_POS_Z , CALC_ROLL_TAN_POS_X ,
  CALC_ROLL_TAN_POS_Z , CALC_ROLL_NEG_X , CALC_ROLL_NEG_Y , CALC_ROLL_NEG_Z ,
  CALC_ROLL_TAN_NEG_X , CALC_ROLL_TAN_NEG_Z , CALC_ROLL_ACTIVE , CALC_ROLL_VIEW ,
  CALC_ROLL_CURSOR
}
 
static const EnumPropertyItem prop_calc_roll_types []
 
float ED_armature_ebone_roll_to_vector (const EditBone *bone, const float align_axis[3], const bool axis_only)
 
static int armature_calc_roll_exec (bContext *C, wmOperator *op)
 
void ARMATURE_OT_calculate_roll (wmOperatorType *ot)
 
static int armature_roll_clear_exec (bContext *C, wmOperator *op)
 
void ARMATURE_OT_roll_clear (wmOperatorType *ot)
 

Detailed Description

Armature EditMode tools - transforms, chain based editing, and other settings.

Definition in file armature_edit.cc.

Enumeration Type Documentation

◆ eCalcRollTypes

Enumerator
CALC_ROLL_POS_X 
CALC_ROLL_POS_Y 
CALC_ROLL_POS_Z 
CALC_ROLL_TAN_POS_X 
CALC_ROLL_TAN_POS_Z 
CALC_ROLL_NEG_X 
CALC_ROLL_NEG_Y 
CALC_ROLL_NEG_Z 
CALC_ROLL_TAN_NEG_X 
CALC_ROLL_TAN_NEG_Z 
CALC_ROLL_ACTIVE 
CALC_ROLL_VIEW 
CALC_ROLL_CURSOR 

Definition at line 234 of file armature_edit.cc.

Function Documentation

◆ armature_align_bones_exec()

◆ armature_calc_roll_exec()

◆ armature_clear_swap_done_flags()

static void armature_clear_swap_done_flags ( bArmature * arm)
static

Definition at line 897 of file armature_edit.cc.

References bArmature::edbo, and LISTBASE_FOREACH.

Referenced by armature_switch_direction_exec().

◆ armature_delete_ebone_cb()

static bool armature_delete_ebone_cb ( const char * bone_name,
void * arm_p )
static

◆ armature_delete_selected_exec()

◆ armature_delete_selected_invoke()

static int armature_delete_selected_invoke ( bContext * C,
wmOperator * op,
const wmEvent *  )
static

◆ armature_dissolve_ebone_cb()

static bool armature_dissolve_ebone_cb ( const char * bone_name,
void * arm_p )
static

◆ armature_dissolve_selected_exec()

◆ armature_fill_bones_exec()

◆ armature_hide_exec()

◆ ARMATURE_OT_align()

◆ ARMATURE_OT_calculate_roll()

◆ ARMATURE_OT_delete()

◆ ARMATURE_OT_dissolve()

◆ ARMATURE_OT_fill()

◆ ARMATURE_OT_hide()

◆ ARMATURE_OT_reveal()

◆ ARMATURE_OT_roll_clear()

◆ ARMATURE_OT_split()

◆ ARMATURE_OT_switch_direction()

◆ armature_reveal_exec()

◆ armature_roll_clear_exec()

◆ armature_split_exec()

◆ armature_switch_direction_exec()

◆ bone_align_to_bone()

static void bone_align_to_bone ( ListBase * edbo,
EditBone * selbone,
EditBone * actbone )
static

◆ chains_find_tips()

static void chains_find_tips ( ListBase * edbo,
ListBase * list )
static

◆ ED_armature_context()

◆ ED_armature_ebone_roll_to_vector()

float ED_armature_ebone_roll_to_vector ( const EditBone * bone,
const float align_axis[3],
bool axis_only )

Adjust bone roll to align Z axis with vector align_axis is in local space and is normalized.

Definition at line 193 of file armature_edit.cc.

References angle_v3v3(), BLI_ASSERT_UNIT_V3, cross_v3_v3v3(), dot_v3v3(), fabsf, EditBone::head, M_PI_2, negate_v3(), nor, normalize_v3(), project_v3_v3v3_normalized(), sub_v3_v3v3(), EditBone::tail, and vec_roll_to_mat3_normalized().

Referenced by armature_calc_roll_exec(), and recalcData_edit_armature().

◆ ED_armature_edit_transform()

void ED_armature_edit_transform ( bArmature * arm,
const float mat[4][4],
bool do_props )

◆ ED_armature_origin_set()

void ED_armature_origin_set ( Main * bmain,
Object * ob,
const float cursor[3],
int centermode,
int around )

◆ ED_armature_transform()

void ED_armature_transform ( bArmature * arm,
const float mat[4][4],
const bool do_props )

◆ fill_add_joint()

◆ fix_connected_bone()

static void fix_connected_bone ( EditBone * ebone)
static

◆ fix_editbone_connected_children()

static void fix_editbone_connected_children ( ListBase * edbo,
EditBone * ebone )
static

Variable Documentation

◆ prop_calc_roll_types

const EnumPropertyItem prop_calc_roll_types[]
static
Initial value:
= {
RNA_ENUM_ITEM_HEADING(N_("Positive"), nullptr),
{CALC_ROLL_TAN_POS_X, "POS_X", 0, "Local +X Tangent", ""},
{CALC_ROLL_TAN_POS_Z, "POS_Z", 0, "Local +Z Tangent", ""},
{CALC_ROLL_POS_X, "GLOBAL_POS_X", 0, "Global +X Axis", ""},
{CALC_ROLL_POS_Y, "GLOBAL_POS_Y", 0, "Global +Y Axis", ""},
{CALC_ROLL_POS_Z, "GLOBAL_POS_Z", 0, "Global +Z Axis", ""},
RNA_ENUM_ITEM_HEADING(N_("Negative"), nullptr),
{CALC_ROLL_TAN_NEG_X, "NEG_X", 0, "Local -X Tangent", ""},
{CALC_ROLL_TAN_NEG_Z, "NEG_Z", 0, "Local -Z Tangent", ""},
{CALC_ROLL_NEG_X, "GLOBAL_NEG_X", 0, "Global -X Axis", ""},
{CALC_ROLL_NEG_Y, "GLOBAL_NEG_Y", 0, "Global -Y Axis", ""},
{CALC_ROLL_NEG_Z, "GLOBAL_NEG_Z", 0, "Global -Z Axis", ""},
RNA_ENUM_ITEM_HEADING(N_("Other"), nullptr),
{CALC_ROLL_ACTIVE, "ACTIVE", 0, "Active Bone", ""},
{CALC_ROLL_VIEW, "VIEW", 0, "View Axis", ""},
{CALC_ROLL_CURSOR, "CURSOR", 0, "Cursor", ""},
{0, nullptr, 0, nullptr, nullptr},
}
#define RNA_ENUM_ITEM_HEADING(name, description)
Definition RNA_types.hh:522
@ CALC_ROLL_POS_Z
@ CALC_ROLL_VIEW
@ CALC_ROLL_NEG_Y
@ CALC_ROLL_TAN_NEG_Z
@ CALC_ROLL_CURSOR
@ CALC_ROLL_POS_Y
@ CALC_ROLL_NEG_Z
@ CALC_ROLL_TAN_NEG_X
@ CALC_ROLL_TAN_POS_X
@ CALC_ROLL_POS_X
@ CALC_ROLL_TAN_POS_Z
@ CALC_ROLL_ACTIVE
@ CALC_ROLL_NEG_X
#define N_(msgid)

Definition at line 257 of file armature_edit.cc.

Referenced by ARMATURE_OT_calculate_roll().