|
Blender
V2.93
|
#include <stdlib.h>#include <string.h>#include "DNA_anim_types.h"#include "DNA_armature_types.h"#include "DNA_collection_types.h"#include "DNA_gpencil_types.h"#include "DNA_lattice_types.h"#include "DNA_mesh_types.h"#include "DNA_meta_types.h"#include "DNA_object_types.h"#include "DNA_scene_types.h"#include "BLI_listbase.h"#include "BLI_math.h"#include "BLI_utildefines.h"#include "BKE_armature.h"#include "BKE_curve.h"#include "BKE_editmesh.h"#include "BKE_gpencil_geom.h"#include "BKE_key.h"#include "BKE_lattice.h"#include "BKE_mball.h"#include "BKE_mesh.h"#include "BKE_scene.h"#include "bmesh.h"#include "DEG_depsgraph.h"#include "DEG_depsgraph_query.h"#include "WM_types.h"#include "ED_armature.h"#include "ED_mesh.h"#include "ED_object.h"#include "MEM_guardedalloc.h"Go to the source code of this file.
Classes | |
| struct | ElemData_Armature |
| struct | ElemData_MetaBall |
| struct | XFormObjectData |
| struct | XFormObjectData_Mesh |
| struct | XFormObjectData_Lattice |
| struct | XFormObjectData_Curve |
| struct | XFormObjectData_Armature |
| struct | XFormObjectData_MetaBall |
| struct | XFormObjectData_GPencil |
Macros | |
| #define | COPY_PTR(member) memcpy(elem->member, bone->member, sizeof(bone->member)) |
| #define | COPY_VAL(member) memcpy(&elem->member, &bone->member, sizeof(bone->member)) |
| #define | COPY_PTR(member) memcpy(bone->member, elem->member, sizeof(bone->member)) |
| #define | COPY_VAL(member) memcpy(&bone->member, &elem->member, sizeof(bone->member)) |
| #define | COPY_PTR(member) memcpy(elem->member, ebone->member, sizeof(ebone->member)) |
| #define | COPY_VAL(member) memcpy(&elem->member, &ebone->member, sizeof(ebone->member)) |
| #define | COPY_PTR(member) memcpy(ebone->member, elem->member, sizeof(ebone->member)) |
| #define | COPY_VAL(member) memcpy(&ebone->member, &elem->member, sizeof(ebone->member)) |
Functions | |
Internal Transform Get/Apply | |
Some object data types don't have utility functions to access their transformation data. Define these locally. | |
| static struct ElemData_Armature * | armature_coords_and_quats_get_recurse (const ListBase *bone_base, struct ElemData_Armature *elem_array) |
| static void | armature_coords_and_quats_get (const bArmature *arm, struct ElemData_Armature *elem_array) |
| static const struct ElemData_Armature * | armature_coords_and_quats_apply_with_mat4_recurse (ListBase *bone_base, const struct ElemData_Armature *elem_array, const float mat[4][4]) |
| static void | armature_coords_and_quats_apply_with_mat4 (bArmature *arm, const struct ElemData_Armature *elem_array, const float mat[4][4]) |
| static void | armature_coords_and_quats_apply (bArmature *arm, const struct ElemData_Armature *elem_array) |
| static void | edit_armature_coords_and_quats_get (const bArmature *arm, struct ElemData_Armature *elem_array) |
| static void | edit_armature_coords_and_quats_apply_with_mat4 (bArmature *arm, const struct ElemData_Armature *elem_array, const float mat[4][4]) |
| static void | edit_armature_coords_and_quats_apply (bArmature *arm, const struct ElemData_Armature *elem_array) |
| static void | metaball_coords_and_quats_get (const MetaBall *mb, struct ElemData_MetaBall *elem_array) |
| static void | metaball_coords_and_quats_apply_with_mat4 (MetaBall *mb, const struct ElemData_MetaBall *elem_array, const float mat[4][4]) |
| static void | metaball_coords_and_quats_apply (MetaBall *mb, const struct ElemData_MetaBall *elem_array) |
Public Object Data Storage API | |
Used for interactively transforming object data. Store object data transformation in an opaque struct. | |
| struct XFormObjectData * | ED_object_data_xform_create_ex (ID *id, bool is_edit_mode) |
| struct XFormObjectData * | ED_object_data_xform_create (ID *id) |
| struct XFormObjectData * | ED_object_data_xform_create_from_edit_mode (ID *id) |
| void | ED_object_data_xform_destroy (struct XFormObjectData *xod_base) |
| void | ED_object_data_xform_by_mat4 (struct XFormObjectData *xod_base, const float mat[4][4]) |
| void | ED_object_data_xform_restore (struct XFormObjectData *xod_base) |
| void | ED_object_data_xform_tag_update (struct XFormObjectData *xod_base) |
Use to transform object origins only.
This is a small API to store & apply transformations to object data, where a transformation matrix can be continually applied ontop of the original values so we don't lose precision over time.
Definition in file object_data_transform.c.
| #define COPY_PTR | ( | member | ) | memcpy(elem->member, bone->member, sizeof(bone->member)) |
| #define COPY_PTR | ( | member | ) | memcpy(bone->member, elem->member, sizeof(bone->member)) |
| #define COPY_PTR | ( | member | ) | memcpy(elem->member, ebone->member, sizeof(ebone->member)) |
| #define COPY_PTR | ( | member | ) | memcpy(ebone->member, elem->member, sizeof(ebone->member)) |
| #define COPY_VAL | ( | member | ) | memcpy(&elem->member, &bone->member, sizeof(bone->member)) |
| #define COPY_VAL | ( | member | ) | memcpy(&bone->member, &elem->member, sizeof(bone->member)) |
| #define COPY_VAL | ( | member | ) | memcpy(&elem->member, &ebone->member, sizeof(ebone->member)) |
| #define COPY_VAL | ( | member | ) | memcpy(&ebone->member, &elem->member, sizeof(ebone->member)) |
|
static |
Definition at line 162 of file object_data_transform.c.
References armature_coords_and_quats_apply_with_mat4(), and unit_m4().
Referenced by ED_object_data_xform_restore().
|
static |
Definition at line 154 of file object_data_transform.c.
References armature_coords_and_quats_apply_with_mat4_recurse(), BKE_armature_transform(), and bArmature::bonebase.
Referenced by armature_coords_and_quats_apply(), and ED_object_data_xform_by_mat4().
|
static |
Definition at line 127 of file object_data_transform.c.
References ElemData_Armature::arm_head, ElemData_Armature::arm_roll, ElemData_Armature::arm_tail, COPY_PTR, COPY_VAL, ElemData_Armature::dist, ElemData_Armature::head, LISTBASE_FOREACH, ElemData_Armature::rad_head, ElemData_Armature::rad_tail, ElemData_Armature::roll, ElemData_Armature::tail, ElemData_Armature::xwidth, and ElemData_Armature::zwidth.
Referenced by armature_coords_and_quats_apply_with_mat4().
|
static |
Definition at line 121 of file object_data_transform.c.
References armature_coords_and_quats_get_recurse(), and bArmature::bonebase.
Referenced by ED_object_data_xform_create_ex().
|
static |
Definition at line 94 of file object_data_transform.c.
References ElemData_Armature::arm_head, ElemData_Armature::arm_roll, ElemData_Armature::arm_tail, COPY_PTR, COPY_VAL, ElemData_Armature::dist, ElemData_Armature::head, LISTBASE_FOREACH, ElemData_Armature::rad_head, ElemData_Armature::rad_tail, ElemData_Armature::roll, ElemData_Armature::tail, ElemData_Armature::xwidth, and ElemData_Armature::zwidth.
Referenced by armature_coords_and_quats_get().
| void ED_object_data_xform_by_mat4 | ( | struct XFormObjectData * | xod_base, |
| const float | mat[4][4] | ||
| ) |
Definition at line 538 of file object_data_transform.c.
References armature_coords_and_quats_apply_with_mat4(), BKE_curve_nurbs_vert_coords_apply_with_mat4(), BKE_gpencil_point_coords_apply_with_mat4(), BKE_keyblock_curve_data_set_with_mat4(), BKE_keyblock_data_set_with_mat4(), BKE_lattice_vert_coords_apply_with_mat4(), BKE_mesh_vert_coords_apply_with_mat4(), BLI_assert, BMEditMesh::bm, bm, BM_mesh_vert_coords_apply_with_mat4(), CU_IS_2D, edit_armature_coords_and_quats_apply_with_mat4(), Mesh::edit_mesh, Lattice::editlatt, Curve::editnurb, GS, XFormObjectData::id, ID_AR, ID_CU, ID_GD, ID_LT, ID_MB, ID_ME, XFormObjectData::is_edit_mode, Curve::key, Mesh::key, EditLatt::latt, metaball_coords_and_quats_apply_with_mat4(), ID::name, NULL, Curve::nurb, and EditNurb::nurbs.
Referenced by ED_object_data_xform_container_update_all().
| struct XFormObjectData* ED_object_data_xform_create | ( | ID * | id | ) |
Definition at line 497 of file object_data_transform.c.
References ED_object_data_xform_create_ex().
Referenced by ED_object_data_xform_container_item_ensure().
| struct XFormObjectData* ED_object_data_xform_create_ex | ( | ID * | id, |
| bool | is_edit_mode | ||
| ) |
Definition at line 320 of file object_data_transform.c.
References armature_coords_and_quats_get(), XFormObjectData_Mesh::base, XFormObjectData_Lattice::base, XFormObjectData_Curve::base, XFormObjectData_GPencil::base, XFormObjectData_MetaBall::base, XFormObjectData_Armature::base, BKE_armature_bonelist_count(), BKE_curve_nurbs_vert_coords_get(), BKE_curve_type_get(), BKE_gpencil_point_coords_get(), BKE_gpencil_stroke_point_count(), BKE_keyblock_data_get_from_shape(), BKE_keyblock_element_calc_size_from_shape(), BKE_lattice_vert_coords_get(), BKE_mesh_vert_coords_get(), BKE_nurbList_verts_count(), BLI_listbase_count(), BMEditMesh::bm, bm, BM_mesh_vert_coords_get(), bArmature::bonebase, bArmature::edbo, edit_armature_coords_and_quats_get(), Mesh::edit_mesh, Lattice::editlatt, Curve::editnurb, XFormObjectData_Armature::elem_array, XFormObjectData_MetaBall::elem_array, XFormObjectData_GPencil::elem_array, XFormObjectData_Mesh::elem_array, XFormObjectData_Lattice::elem_array, XFormObjectData_Curve::elem_array, MetaBall::elems, GS, id, XFormObjectData::id, ID_AR, ID_CU, ID_GD, ID_LT, ID_MB, ID_ME, XFormObjectData::is_edit_mode, Curve::key, Lattice::key, Mesh::key, XFormObjectData_Mesh::key_data, XFormObjectData_Lattice::key_data, XFormObjectData_Curve::key_data, EditLatt::latt, MEM_mallocN, metaball_coords_and_quats_get(), ID::name, NULL, Curve::nurb, EditNurb::nurbs, OB_FONT, Lattice::pntsu, Lattice::pntsv, Lattice::pntsw, BMesh::totvert, and Mesh::totvert.
Referenced by ED_object_data_xform_create(), and ED_object_data_xform_create_from_edit_mode().
| struct XFormObjectData* ED_object_data_xform_create_from_edit_mode | ( | ID * | id | ) |
Definition at line 502 of file object_data_transform.c.
References ED_object_data_xform_create_ex().
Referenced by op_generic_value_invoke().
| void ED_object_data_xform_destroy | ( | struct XFormObjectData * | xod_base | ) |
Definition at line 507 of file object_data_transform.c.
References GS, XFormObjectData::id, ID_CU, ID_LT, ID_ME, XFormObjectData_Mesh::key_data, XFormObjectData_Lattice::key_data, XFormObjectData_Curve::key_data, MEM_freeN, ID::name, and NULL.
Referenced by op_generic_value_exit(), and trans_obdata_in_obmode_free_elem().
| void ED_object_data_xform_restore | ( | struct XFormObjectData * | xod_base | ) |
Definition at line 643 of file object_data_transform.c.
References armature_coords_and_quats_apply(), BKE_curve_nurbs_vert_coords_apply(), BKE_gpencil_point_coords_apply(), BKE_keyblock_data_set(), BKE_lattice_vert_coords_apply(), BKE_mesh_vert_coords_apply(), BMEditMesh::bm, bm, BM_mesh_vert_coords_apply(), CU_IS_2D, edit_armature_coords_and_quats_apply(), Mesh::edit_mesh, Lattice::editlatt, Curve::editnurb, GS, XFormObjectData::id, ID_AR, ID_CU, ID_GD, ID_LT, ID_MB, ID_ME, XFormObjectData::is_edit_mode, Curve::key, Mesh::key, EditLatt::latt, metaball_coords_and_quats_apply(), ID::name, NULL, Curve::nurb, and EditNurb::nurbs.
Referenced by op_generic_value_restore().
| void ED_object_data_xform_tag_update | ( | struct XFormObjectData * | xod_base | ) |
Definition at line 742 of file object_data_transform.c.
References DEG_id_tag_update(), EDBM_mesh_normals_update(), EDBM_update_generic(), Mesh::edit_mesh, GS, XFormObjectData::id, bArmature::id, Curve::id, bGPdata::id, Lattice::id, Mesh::id, MetaBall::id, ID_AR, ID_CU, ID_GD, ID_LT, ID_MB, ID_ME, ID_RECALC_COPY_ON_WRITE, ID_RECALC_GEOMETRY, if(), XFormObjectData::is_edit_mode, and ID::name.
Referenced by op_generic_value_restore().
|
static |
Definition at line 217 of file object_data_transform.c.
References edit_armature_coords_and_quats_apply_with_mat4(), and unit_m4().
Referenced by ED_object_data_xform_restore().
|
static |
Definition at line 194 of file object_data_transform.c.
References COPY_PTR, COPY_VAL, ElemData_Armature::dist, ED_armature_edit_transform(), bArmature::edbo, ListBase::first, ElemData_Armature::head, ElemData_Armature::rad_head, ElemData_Armature::rad_tail, ElemData_Armature::roll, ElemData_Armature::tail, ElemData_Armature::xwidth, and ElemData_Armature::zwidth.
Referenced by ED_object_data_xform_by_mat4(), and edit_armature_coords_and_quats_apply().
|
static |
Definition at line 172 of file object_data_transform.c.
References COPY_PTR, COPY_VAL, ElemData_Armature::dist, bArmature::edbo, ListBase::first, ElemData_Armature::head, ElemData_Armature::rad_head, ElemData_Armature::rad_tail, ElemData_Armature::roll, ElemData_Armature::tail, ElemData_Armature::xwidth, and ElemData_Armature::zwidth.
Referenced by ED_object_data_xform_create_ex().
|
static |
Definition at line 260 of file object_data_transform.c.
References metaball_coords_and_quats_apply_with_mat4(), and unit_m4().
Referenced by ED_object_data_xform_restore().
|
static |
Definition at line 246 of file object_data_transform.c.
References BKE_mball_transform(), ElemData_MetaBall::co, copy_qt_qt(), copy_v3_v3(), MetaBall::elems, ElemData_MetaBall::exp, ListBase::first, ElemData_MetaBall::quat, and ElemData_MetaBall::rad.
Referenced by ED_object_data_xform_by_mat4(), and metaball_coords_and_quats_apply().
|
static |
Definition at line 235 of file object_data_transform.c.
References ElemData_MetaBall::co, copy_qt_qt(), copy_v3_v3(), MetaBall::elems, ElemData_MetaBall::exp, ListBase::first, ElemData_MetaBall::quat, and ElemData_MetaBall::rad.
Referenced by ED_object_data_xform_create_ex().