Blender  V3.3
Classes | Typedefs | Enumerations | Functions | Variables
BKE_object.h File Reference

General operations, lookup, etc. for blender objects. More...

#include "BLI_compiler_attrs.h"
#include "BLI_sys_types.h"
#include "DNA_object_enums.h"

Go to the source code of this file.

Classes

struct  ObjectTfmProtectedChannels
 

Typedefs

typedef enum eObjectVisibilityResult eObjectVisibilityResult
 
typedef struct ObjectTfmProtectedChannels ObjectTfmProtectedChannels
 
typedef enum eObRelationTypes eObRelationTypes
 
typedef enum eObjectSet eObjectSet
 

Enumerations

enum  eObjectVisibilityResult { OB_VISIBLE_SELF = 1 , OB_VISIBLE_PARTICLES = 2 , OB_VISIBLE_INSTANCES = 4 , OB_VISIBLE_ALL = (OB_VISIBLE_SELF | OB_VISIBLE_PARTICLES | OB_VISIBLE_INSTANCES) }
 
enum  eObRelationTypes {
  OB_REL_NONE = 0 , OB_REL_PARENT = (1 << 0) , OB_REL_PARENT_RECURSIVE = (1 << 1) , OB_REL_CHILDREN = (1 << 2) ,
  OB_REL_CHILDREN_RECURSIVE = (1 << 3) , OB_REL_MOD_ARMATURE = (1 << 4)
}
 
enum  eObjectSet { OB_SET_SELECTED , OB_SET_VISIBLE , OB_SET_ALL }
 

Functions

void BKE_object_workob_clear (struct Object *workob)
 
void BKE_object_workob_calc_parent (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct Object *workob)
 
void BKE_object_transform_copy (struct Object *ob_tar, const struct Object *ob_src)
 
void BKE_object_copy_softbody (struct Object *ob_dst, const struct Object *ob_src, int flag)
 
struct ParticleSystemBKE_object_copy_particlesystem (struct ParticleSystem *psys, int flag)
 
void BKE_object_copy_particlesystems (struct Object *ob_dst, const struct Object *ob_src, int flag)
 
void BKE_object_free_particlesystems (struct Object *ob)
 
void BKE_object_free_softbody (struct Object *ob)
 
void BKE_object_free_curve_cache (struct Object *ob)
 
void BKE_object_free_derived_caches (struct Object *ob)
 
void BKE_object_free_caches (struct Object *object)
 
void BKE_object_modifier_hook_reset (struct Object *ob, struct HookModifierData *hmd)
 
void BKE_object_modifier_gpencil_hook_reset (struct Object *ob, struct HookGpencilModifierData *hmd)
 
bool BKE_object_supports_modifiers (const struct Object *ob)
 
bool BKE_object_support_modifier_type_check (const struct Object *ob, int modifier_type)
 
void BKE_object_modifier_set_active (struct Object *ob, struct ModifierData *md)
 
struct ModifierDataBKE_object_active_modifier (const struct Object *ob)
 
bool BKE_object_copy_modifier (struct Main *bmain, struct Scene *scene, struct Object *ob_dst, const struct Object *ob_src, struct ModifierData *md)
 
bool BKE_object_copy_gpencil_modifier (struct Object *ob_dst, struct GpencilModifierData *gmd_src)
 
bool BKE_object_modifier_stack_copy (struct Object *ob_dst, const struct Object *ob_src, bool do_copy_all, int flag_subdata)
 
void BKE_object_link_modifiers (struct Object *ob_dst, const struct Object *ob_src)
 
void BKE_object_free_modifiers (struct Object *ob, int flag)
 
void BKE_object_free_shaderfx (struct Object *ob, int flag)
 
bool BKE_object_exists_check (struct Main *bmain, const struct Object *obtest)
 
bool BKE_object_is_in_editmode (const struct Object *ob)
 
bool BKE_object_is_in_editmode_vgroup (const struct Object *ob)
 
bool BKE_object_is_in_wpaint_select_vert (const struct Object *ob)
 
bool BKE_object_has_mode_data (const struct Object *ob, eObjectMode object_mode)
 
bool BKE_object_is_mode_compat (const struct Object *ob, eObjectMode object_mode)
 
bool BKE_object_data_is_in_editmode (const struct Object *ob, const struct ID *id)
 
char * BKE_object_data_editmode_flush_ptr_get (struct ID *id)
 
void BKE_object_update_select_id (struct Main *bmain)
 
int BKE_object_visibility (const struct Object *ob, int dag_eval_mode)
 
struct ObjectBKE_object_add_only_object (struct Main *bmain, int type, const char *name) ATTR_RETURNS_NONNULL
 
struct ObjectBKE_object_add (struct Main *bmain, struct ViewLayer *view_layer, int type, const char *name) ATTR_NONNULL(1
 
struct ObjectBKE_object_add_from (struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, int type, const char *name, struct Object *ob_src) ATTR_NONNULL(1
 
struct ObjectBKE_object_add_for_data (struct Main *bmain, struct ViewLayer *view_layer, int type, const char *name, struct ID *data, bool do_id_user) ATTR_RETURNS_NONNULL
 
voidBKE_object_obdata_add_from_type (struct Main *bmain, int type, const char *name) ATTR_NONNULL(1)
 
int BKE_object_obdata_to_type (const struct ID *id) ATTR_NONNULL(1)
 
bool BKE_object_is_libdata (const struct Object *ob)
 
bool BKE_object_obdata_is_libdata (const struct Object *ob)
 
struct ObjectBKE_object_duplicate (struct Main *bmain, struct Object *ob, uint dupflag, uint duplicate_options)
 
void BKE_object_obdata_size_init (struct Object *ob, float size)
 
void BKE_object_scale_to_mat3 (struct Object *ob, float r_mat[3][3])
 
void BKE_object_rot_to_mat3 (const struct Object *ob, float r_mat[3][3], bool use_drot)
 
void BKE_object_mat3_to_rot (struct Object *ob, float r_mat[3][3], bool use_compat)
 
void BKE_object_to_mat3 (struct Object *ob, float r_mat[3][3])
 
void BKE_object_to_mat4 (struct Object *ob, float r_mat[4][4])
 
void BKE_object_apply_mat4_ex (struct Object *ob, const float mat[4][4], struct Object *parent, const float parentinv[4][4], bool use_compat)
 
void BKE_object_apply_mat4 (struct Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
 
void BKE_object_apply_parent_inverse (struct Object *ob)
 
void BKE_object_matrix_local_get (struct Object *ob, float r_mat[4][4])
 
bool BKE_object_pose_context_check (const struct Object *ob)
 
struct ObjectBKE_object_pose_armature_get (struct Object *ob)
 
struct ObjectBKE_object_pose_armature_get_with_wpaint_check (struct Object *ob)
 
struct ObjectBKE_object_pose_armature_get_visible (struct Object *ob, struct ViewLayer *view_layer, struct View3D *v3d)
 
struct Object ** BKE_object_pose_array_get_ex (struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_objects_len, bool unique)
 
struct Object ** BKE_object_pose_array_get_unique (struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_objects_len)
 
struct Object ** BKE_object_pose_array_get (struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_objects_len)
 
struct Base ** BKE_object_pose_base_array_get_ex (struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_bases_len, bool unique)
 
struct Base ** BKE_object_pose_base_array_get_unique (struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_bases_len)
 
struct Base ** BKE_object_pose_base_array_get (struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_bases_len)
 
void BKE_object_get_parent_matrix (struct Object *ob, struct Object *par, float r_parentmat[4][4])
 
void BKE_object_where_is_calc (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
 
void BKE_object_where_is_calc_ex (struct Depsgraph *depsgraph, struct Scene *scene, struct RigidBodyWorld *rbw, struct Object *ob, float r_originmat[3][3])
 
void BKE_object_where_is_calc_time (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, float ctime)
 
void BKE_object_where_is_calc_mat4 (struct Object *ob, float r_obmat[4][4])
 
struct BoundBoxBKE_boundbox_alloc_unit (void)
 
void BKE_boundbox_init_from_minmax (struct BoundBox *bb, const float min[3], const float max[3])
 
void BKE_boundbox_calc_center_aabb (const struct BoundBox *bb, float r_cent[3])
 
void BKE_boundbox_calc_size_aabb (const struct BoundBox *bb, float r_size[3])
 
void BKE_boundbox_minmax (const struct BoundBox *bb, const float obmat[4][4], float r_min[3], float r_max[3])
 
const struct BoundBoxBKE_object_boundbox_get (struct Object *ob)
 
void BKE_object_dimensions_get (struct Object *ob, float r_vec[3])
 
void BKE_object_dimensions_set_ex (struct Object *ob, const float value[3], int axis_mask, const float ob_scale_orig[3], const float ob_obmat_orig[4][4])
 
void BKE_object_dimensions_set (struct Object *ob, const float value[3], int axis_mask)
 
void BKE_object_empty_draw_type_set (struct Object *ob, int value)
 
void BKE_object_boundbox_calc_from_mesh (struct Object *ob, const struct Mesh *me_eval)
 
bool BKE_object_boundbox_calc_from_evaluated_geometry (struct Object *ob)
 
void BKE_object_minmax (struct Object *ob, float r_min[3], float r_max[3], bool use_hidden)
 
bool BKE_object_minmax_dupli (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, float r_min[3], float r_max[3], bool use_hidden)
 
bool BKE_object_minmax_empty_drawtype (const struct Object *ob, float r_min[3], float r_max[3])
 
void BKE_object_foreach_display_point (struct Object *ob, const float obmat[4][4], void(*func_cb)(const float[3], void *), void *user_data)
 
void BKE_scene_foreach_display_point (struct Depsgraph *depsgraph, void(*func_cb)(const float[3], void *), void *user_data)
 
bool BKE_object_parent_loop_check (const struct Object *parent, const struct Object *ob)
 
voidBKE_object_tfm_backup (struct Object *ob)
 
void BKE_object_tfm_restore (struct Object *ob, void *obtfm_pt)
 
void BKE_object_tfm_protected_backup (const struct Object *ob, ObjectTfmProtectedChannels *obtfm)
 
void BKE_object_tfm_protected_restore (struct Object *ob, const ObjectTfmProtectedChannels *obtfm, short protectflag)
 
void BKE_object_tfm_copy (struct Object *object_dst, const struct Object *object_src)
 
void BKE_object_eval_reset (struct Object *ob_eval)
 
void BKE_object_eval_local_transform (struct Depsgraph *depsgraph, struct Object *ob)
 
void BKE_object_eval_parent (struct Depsgraph *depsgraph, struct Object *ob)
 
void BKE_object_eval_constraints (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
 
void BKE_object_eval_transform_final (struct Depsgraph *depsgraph, struct Object *ob)
 
void BKE_object_eval_uber_transform (struct Depsgraph *depsgraph, struct Object *object)
 
void BKE_object_eval_uber_data (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
 
void BKE_object_eval_assign_data (struct Object *object, struct ID *data, bool is_owned)
 
void BKE_object_sync_to_original (struct Depsgraph *depsgraph, struct Object *object)
 
void BKE_object_eval_ptcache_reset (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
 
void BKE_object_eval_transform_all (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
 
void BKE_object_data_select_update (struct Depsgraph *depsgraph, struct ID *object_data)
 
void BKE_object_select_update (struct Depsgraph *depsgraph, struct Object *object)
 
void BKE_object_eval_eval_base_flags (struct Depsgraph *depsgraph, struct Scene *scene, int view_layer_index, struct Object *object, int base_index, bool is_from_set)
 
void BKE_object_handle_data_update (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
 
void BKE_object_handle_update (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
 
void BKE_object_handle_update_ex (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct RigidBodyWorld *rbw)
 
void BKE_object_sculpt_data_create (struct Object *ob)
 
bool BKE_object_obdata_texspace_get (struct Object *ob, char **r_texflag, float **r_loc, float **r_size)
 
struct MeshBKE_object_get_evaluated_mesh_no_subsurf (const struct Object *object)
 
struct MeshBKE_object_get_evaluated_mesh (const struct Object *object)
 
struct MeshBKE_object_get_pre_modified_mesh (const struct Object *object)
 
struct MeshBKE_object_get_original_mesh (const struct Object *object)
 
struct MeshBKE_object_get_editmesh_eval_final (const struct Object *object)
 
struct MeshBKE_object_get_editmesh_eval_cage (const struct Object *object)
 
struct LatticeBKE_object_get_lattice (const struct Object *object)
 
struct LatticeBKE_object_get_evaluated_lattice (const struct Object *object)
 
int BKE_object_insert_ptcache (struct Object *ob)
 
void BKE_object_delete_ptcache (struct Object *ob, int index)
 
struct KeyBlockBKE_object_shapekey_insert (struct Main *bmain, struct Object *ob, const char *name, bool from_mix)
 
bool BKE_object_shapekey_remove (struct Main *bmain, struct Object *ob, struct KeyBlock *kb)
 
bool BKE_object_shapekey_free (struct Main *bmain, struct Object *ob)
 
bool BKE_object_flag_test_recursive (const struct Object *ob, short flag)
 
bool BKE_object_is_child_recursive (const struct Object *ob_parent, const struct Object *ob_child)
 
int BKE_object_is_modified (struct Scene *scene, struct Object *ob)
 
int BKE_object_is_deform_modified (struct Scene *scene, struct Object *ob)
 
bool BKE_object_moves_in_time (const struct Object *object, bool recurse_parent)
 
int BKE_object_scenes_users_get (struct Main *bmain, struct Object *ob)
 
struct MovieClipBKE_object_movieclip_get (struct Scene *scene, struct Object *ob, bool use_default)
 
void BKE_object_runtime_reset (struct Object *object)
 
void BKE_object_runtime_reset_on_copy (struct Object *object, int flag)
 
void BKE_object_runtime_free_data (struct Object *object)
 
void BKE_object_batch_cache_dirty_tag (struct Object *ob)
 
void BKE_object_data_batch_cache_dirty_tag (struct ID *object_data)
 
struct LinkNodeBKE_object_relational_superset (struct ViewLayer *view_layer, eObjectSet objectSet, eObRelationTypes includeFilter)
 
struct LinkNodeBKE_object_groups (struct Main *bmain, struct Scene *scene, struct Object *ob)
 
void BKE_object_groups_clear (struct Main *bmain, struct Scene *scene, struct Object *object)
 
struct KDTree_3d * BKE_object_as_kdtree (struct Object *ob, int *r_tot)
 
bool BKE_object_modifier_update_subframe (struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, bool update_mesh, int parent_recursion, float frame, int type)
 
bool BKE_object_empty_image_frame_is_visible_in_view3d (const struct Object *ob, const struct RegionView3D *rv3d)
 
bool BKE_object_empty_image_data_is_visible_in_view3d (const struct Object *ob, const struct RegionView3D *rv3d)
 
struct MeshBKE_object_to_mesh (struct Depsgraph *depsgraph, struct Object *object, bool preserve_all_data_layers)
 
void BKE_object_to_mesh_clear (struct Object *object)
 
struct CurveBKE_object_to_curve (struct Object *object, struct Depsgraph *depsgraph, bool apply_modifiers)
 
void BKE_object_to_curve_clear (struct Object *object)
 
void BKE_object_check_uuids_unique_and_report (const struct Object *object)
 
void BKE_object_modifiers_lib_link_common (void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)
 
struct SubsurfModifierDataBKE_object_get_last_subsurf_modifier (const struct Object *ob)
 
void BKE_object_replace_data_on_shallow_copy (struct Object *ob, struct ID *new_data)
 
struct PartEffBKE_object_do_version_give_parteff_245 (struct Object *ob)
 
bool BKE_object_supports_material_slots (struct Object *ob)
 

Variables

struct Object ATTR_RETURNS_NONNULL
 

Detailed Description

General operations, lookup, etc. for blender objects.

Definition in file BKE_object.h.

Typedef Documentation

◆ eObjectSet

typedef enum eObjectSet eObjectSet

◆ eObjectVisibilityResult

◆ eObRelationTypes

◆ ObjectTfmProtectedChannels

Enumeration Type Documentation

◆ eObjectSet

enum eObjectSet
Enumerator
OB_SET_SELECTED 
OB_SET_VISIBLE 
OB_SET_ALL 

Definition at line 613 of file BKE_object.h.

◆ eObjectVisibilityResult

Enumerator
OB_VISIBLE_SELF 
OB_VISIBLE_PARTICLES 
OB_VISIBLE_INSTANCES 
OB_VISIBLE_ALL 

Definition at line 149 of file BKE_object.h.

◆ eObRelationTypes

Enumerator
OB_REL_NONE 
OB_REL_PARENT 
OB_REL_PARENT_RECURSIVE 
OB_REL_CHILDREN 
OB_REL_CHILDREN_RECURSIVE 
OB_REL_MOD_ARMATURE 

Definition at line 603 of file BKE_object.h.

Function Documentation

◆ BKE_boundbox_alloc_unit()

struct BoundBox* BKE_boundbox_alloc_unit ( void  )

Definition at line 3638 of file object.cc.

References BKE_boundbox_init_from_minmax().

◆ BKE_boundbox_calc_center_aabb()

void BKE_boundbox_calc_center_aabb ( const struct BoundBox bb,
float  r_cent[3] 
)

◆ BKE_boundbox_calc_size_aabb()

void BKE_boundbox_calc_size_aabb ( const struct BoundBox bb,
float  r_size[3] 
)

◆ BKE_boundbox_init_from_minmax()

void BKE_boundbox_init_from_minmax ( struct BoundBox bb,
const float  min[3],
const float  max[3] 
)

◆ BKE_boundbox_minmax()

void BKE_boundbox_minmax ( const struct BoundBox bb,
const float  obmat[4][4],
float  r_min[3],
float  r_max[3] 
)

Referenced by BKE_pchan_minmax().

◆ BKE_object_active_modifier()

struct ModifierData* BKE_object_active_modifier ( const struct Object ob)

◆ BKE_object_add()

struct Object* BKE_object_add ( struct Main bmain,
struct ViewLayer view_layer,
int  type,
const char *  name 
)

◆ BKE_object_add_for_data()

struct Object* BKE_object_add_for_data ( struct Main bmain,
struct ViewLayer view_layer,
int  type,
const char *  name,
struct ID data,
bool  do_id_user 
)

Add a new object, but assign the given data-block as the ob->data for the newly created object.

Parameters
dataThe data-block to assign as ob->data for the new object. This is assumed to be of the correct type.
do_id_userIf true, id_us_plus() will be called on data when assigning it to the object.

Definition at line 2299 of file object.cc.

References BKE_collection_object_add(), BKE_layer_collection_get_active(), BKE_object_add_only_object(), BKE_view_layer_base_deselect_all(), BKE_view_layer_base_find(), BKE_view_layer_base_select_and_set_active(), LayerCollection::collection, data, Object::data, DEG_id_tag_update_ex(), Object::id, ID_RECALC_ANIMATION, ID_RECALC_GEOMETRY, ID_RECALC_TRANSFORM, id_us_plus(), and type.

Referenced by ED_object_add_type_with_obdata(), and gpencil_convert_old_files_exec().

◆ BKE_object_add_from()

struct Object* BKE_object_add_from ( struct Main bmain,
struct Scene scene,
struct ViewLayer view_layer,
int  type,
const char *  name,
struct Object ob_src 
)

Add a new object, using another one as a reference

Parameters
ob_srcobject to use to determine the collections of the new object.

◆ BKE_object_add_only_object()

struct Object* BKE_object_add_only_object ( struct Main bmain,
int  type,
const char *  name 
)

More general add: creates minimum required data, but without vertices etc.

Parameters
bmainThe main to add the object to. May be null for LIB_ID_CREATE_NO_MAIN behavior.

Definition at line 2241 of file object.cc.

References BKE_libblock_alloc(), get_obdata_defname(), Object::id, ID_OB, id_us_min(), LIB_ID_CREATE_NO_MAIN, object_init(), and type.

Referenced by bc_add_object(), BKE_object_add_for_data(), blender::io::obj::CurveFromGeometry::create_curve(), blender::io::obj::MeshFromGeometry::create_mesh(), blender::io::usd::USDCameraReader::create_object(), blender::io::usd::USDCurvesReader::create_object(), blender::io::usd::USDLightReader::create_object(), blender::io::usd::USDMeshReader::create_object(), blender::io::usd::USDNurbsReader::create_object(), blender::io::usd::USDVolumeReader::create_object(), blender::io::usd::USDXformReader::create_object(), duplicate_ids(), gpencil_layer_to_curve(), blender::io::stl::importer_main(), loose_data_instantiate_collection_process(), loose_data_instantiate_obdata_process(), Freestyle::BlenderStrokeRenderer::NewMesh(), object_add_common(), blender::io::alembic::AbcCameraReader::readObjectData(), blender::io::alembic::AbcCurveReader::readObjectData(), blender::io::alembic::AbcMeshReader::readObjectData(), blender::io::alembic::AbcSubDReader::readObjectData(), blender::io::alembic::AbcNurbsReader::readObjectData(), blender::io::alembic::AbcPointsReader::readObjectData(), blender::io::alembic::AbcEmptyReader::readObjectData(), and blender::bke::tests::MeshObjectTestData::setup().

◆ BKE_object_apply_mat4()

void BKE_object_apply_mat4 ( struct Object ob,
const float  mat[4][4],
bool  use_compat,
bool  use_parent 
)

◆ BKE_object_apply_mat4_ex()

void BKE_object_apply_mat4_ex ( struct Object ob,
const float  mat[4][4],
struct Object parent,
const float  parentinv[4][4],
bool  use_compat 
)

Applies the global transformation mat to the ob using a relative parent space if supplied.

Parameters
matthe global transformation mat that the object should be set object to.
parentthe parent space in which this object will be set relative to (should probably always be parent_eval).
use_compattrue to ensure that rotations are set using the min difference between the old and new orientation.

Definition at line 3532 of file object.cc.

References BKE_object_get_parent_matrix(), BKE_object_mat3_to_rot(), Object::dloc, Object::dscale, invert_m4_m4(), Object::loc, mat4_to_loc_rot_size(), mul_m4_m4m4(), rot, Object::scale, and sub_v3_v3().

Referenced by BKE_object_apply_mat4(), ED_mesh_join_objects_exec(), and ED_view3d_to_object().

◆ BKE_object_apply_parent_inverse()

void BKE_object_apply_parent_inverse ( struct Object ob)

Use parent's world location and rotation as the child's origin. The parent inverse will become identity when the parent has no shearing. Otherwise, it is non-identity and contains the object's local matrix data that cannot be decomposed into location, rotation and scale.

Assumes the object's world matrix has no shear. Assumes parent exists.

Definition at line 3583 of file object.cc.

References BKE_object_apply_mat4(), BKE_object_get_parent_matrix(), copy_m4_m4(), invert_m4(), invert_m4_m4(), mul_m4_m4_post(), mul_m4_m4m4(), Object::obmat, orthogonalize_m4_stable(), Object::parent, and Object::parentinv.

Referenced by object_parent_inverse_apply_exec(), and parent_noinv_set_exec().

◆ BKE_object_as_kdtree()

struct KDTree_3d* BKE_object_as_kdtree ( struct Object ob,
int *  r_tot 
)

Return a KDTree_3d from the deformed object (in world-space).

Note
Only mesh objects currently support deforming, others are TODO.
Parameters
ob
r_tot
Returns
The KD-tree or nullptr if it can't be created.

Definition at line 5260 of file object.cc.

References Freestyle::a, BKE_nurbList_verts_count_without_handles(), BKE_object_get_evaluated_mesh(), CD_ORIGINDEX, MVert::co, CustomData_get_layer(), Object::data, Lattice::def, ListBase::first, Object_Runtime::mesh_deform_eval, mul_v3_m4v3(), Mesh::mvert, Curve::nurb, OB_CURVES_LEGACY, OB_LATTICE, OB_MESH, OB_SURF, Object::obmat, ORIGINDEX_NONE, Lattice::pntsu, Lattice::pntsv, Lattice::pntsw, Object::runtime, Mesh::totvert, tree, Object::type, BezTriple::vec, and BPoint::vec.

Referenced by parent_set_vertex_parent().

◆ BKE_object_batch_cache_dirty_tag()

void BKE_object_batch_cache_dirty_tag ( struct Object ob)

◆ BKE_object_boundbox_calc_from_evaluated_geometry()

bool BKE_object_boundbox_calc_from_evaluated_geometry ( struct Object ob)

◆ BKE_object_boundbox_calc_from_mesh()

void BKE_object_boundbox_calc_from_mesh ( struct Object ob,
const struct Mesh me_eval 
)

◆ BKE_object_boundbox_get()

const struct BoundBox* BKE_object_boundbox_get ( struct Object ob)

◆ BKE_object_check_uuids_unique_and_report()

void BKE_object_check_uuids_unique_and_report ( const struct Object object)

◆ BKE_object_copy_gpencil_modifier()

bool BKE_object_copy_gpencil_modifier ( struct Object ob_dst,
struct GpencilModifierData gmd_src 
)

◆ BKE_object_copy_modifier()

bool BKE_object_copy_modifier ( struct Main bmain,
struct Scene scene,
struct Object ob_dst,
const struct Object ob_src,
struct ModifierData md 
)

Copy a single modifier.

Note
Do not use this function to copy a whole modifier stack (see note below too). Use BKE_object_modifier_stack_copy instead.
Complex modifiers relaying on other data (like e.g. dynamic paint or fluid using particle systems) are not always 100% 'correctly' copied here, since we have to use heuristics to decide which particle system to use or add in ob_dst, and it's placement in the stack, etc. If used more than once, this function should preferably be called in stack order.

Referenced by ED_object_modifier_copy_to_object(), and modifier_copy_to_selected_exec().

◆ BKE_object_copy_particlesystem()

struct ParticleSystem* BKE_object_copy_particlesystem ( struct ParticleSystem psys,
int  flag 
)

◆ BKE_object_copy_particlesystems()

void BKE_object_copy_particlesystems ( struct Object ob_dst,
const struct Object ob_src,
int  flag 
)

◆ BKE_object_copy_softbody()

void BKE_object_copy_softbody ( struct Object ob_dst,
const struct Object ob_src,
int  flag 
)

◆ BKE_object_data_batch_cache_dirty_tag()

void BKE_object_data_batch_cache_dirty_tag ( struct ID object_data)

◆ BKE_object_data_editmode_flush_ptr_get()

char* BKE_object_data_editmode_flush_ptr_get ( struct ID id)

◆ BKE_object_data_is_in_editmode()

bool BKE_object_data_is_in_editmode ( const struct Object ob,
const struct ID id 
)

◆ BKE_object_data_select_update()

void BKE_object_data_select_update ( struct Depsgraph depsgraph,
struct ID object_data 
)

◆ BKE_object_delete_ptcache()

void BKE_object_delete_ptcache ( struct Object ob,
int  index 
)

Definition at line 4567 of file object.cc.

References BLI_findlink(), BLI_freelinkN(), pc_findindex(), and Object::pc_ids.

Referenced by BKE_ptcache_toggle_disk_cache().

◆ BKE_object_dimensions_get()

void BKE_object_dimensions_get ( struct Object ob,
float  r_vec[3] 
)

◆ BKE_object_dimensions_set()

void BKE_object_dimensions_set ( struct Object ob,
const float  value[3],
int  axis_mask 
)

Definition at line 3834 of file object.cc.

References BKE_object_dimensions_set_ex().

◆ BKE_object_dimensions_set_ex()

void BKE_object_dimensions_set_ex ( struct Object ob,
const float  value[3],
int  axis_mask,
const float  ob_scale_orig[3],
const float  ob_obmat_orig[4][4] 
)

The original scale and object matrix can be passed in so any difference of the objects matrix and the final matrix can be accounted for, typically this caused by parenting, constraints or delta-scale.

Re-using these values from the object causes a feedback loop when multiple values are modified at once in some situations. see: T69536.

Definition at line 3802 of file object.cc.

References BKE_object_boundbox_get(), copysignf, CCL_NAMESPACE_BEGIN::isfinite(), len, len_v3(), Object::scale, and BoundBox::vec.

Referenced by BKE_object_dimensions_set(), and v3d_object_dimension_buts().

◆ BKE_object_do_version_give_parteff_245()

struct PartEff* BKE_object_do_version_give_parteff_245 ( struct Object ob)

Definition at line 1026 of file object.cc.

References EFF_PARTICLE, PartEff::next, and PartEff::type.

Referenced by blo_do_versions_pre250(), and object_blend_read_expand().

◆ BKE_object_duplicate()

struct Object* BKE_object_duplicate ( struct Main bmain,
struct Object ob,
uint  dupflag,
uint  duplicate_options 
)

Perform deep-copy of object and its 'children' data-blocks (obdata, materials, actions, etc.).

Parameters
dupflagControls which sub-data are also duplicated (see eDupli_ID_Flags in DNA_userdef_types.h).
Note
This function does not do any remapping to new IDs, caller must do it (BKE_libblock_relink_to_newid()).
Caller MUST free newid pointers itself (BKE_main_id_newptr_and_tag_clear()) and call updates of DEG too (#DAG_relations_tag_update()).

Definition at line 2661 of file object.cc.

References BKE_id_copy_for_duplicate(), BKE_libblock_relink_to_newid(), BKE_main_id_newptr_and_tag_clear(), BKE_object_material_array_p(), BKE_pose_tag_recalc(), BLI_assert, Object::data, DEG_id_tag_update(), DEG_id_tag_update_ex(), ELEM, FOREACH_MAIN_ID_BEGIN, FOREACH_MAIN_ID_END, Object::id, ID_IS_LINKED, ID_RECALC_EDITORS, ID_RECALC_GEOMETRY, LIB_ID_COPY_DEFAULT, LIB_ID_COPY_RIGID_BODY_NO_COLLECTION_HANDLING, LIB_ID_DUPLICATE_IS_ROOT_ID, LIB_ID_DUPLICATE_IS_SUBPROCESS, LIB_TAG_NEW, LISTBASE_FOREACH, Object::mat, ID::newid, OB_ARMATURE, OB_CAMERA, OB_CURVES, OB_CURVES_LEGACY, OB_FONT, OB_GPENCIL, OB_LAMP, OB_LATTICE, OB_LIGHTPROBE, OB_MBALL, OB_MESH, OB_POINTCLOUD, OB_SPEAKER, OB_SURF, OB_VOLUME, Object::particlesystem, Object::pose, ID::tag, Object::totcol, Object::type, USER_DUP_ARM, USER_DUP_CAMERA, USER_DUP_CURVE, USER_DUP_CURVES, USER_DUP_FONT, USER_DUP_GPENCIL, USER_DUP_LAMP, USER_DUP_LATTICE, USER_DUP_LIGHTPROBE, USER_DUP_LINKED_ID, USER_DUP_MAT, USER_DUP_MBALL, USER_DUP_MESH, USER_DUP_POINTCLOUD, USER_DUP_PSYS, USER_DUP_SPEAKER, USER_DUP_SURF, and USER_DUP_VOLUME.

Referenced by collection_duplicate_recursive(), and object_add_duplicate_internal().

◆ BKE_object_empty_draw_type_set()

void BKE_object_empty_draw_type_set ( struct Object ob,
int  value 
)

◆ BKE_object_empty_image_data_is_visible_in_view3d()

bool BKE_object_empty_image_data_is_visible_in_view3d ( const struct Object ob,
const struct RegionView3D rv3d 
)

◆ BKE_object_empty_image_frame_is_visible_in_view3d()

bool BKE_object_empty_image_frame_is_visible_in_view3d ( const struct Object ob,
const struct RegionView3D rv3d 
)

◆ BKE_object_eval_assign_data()

void BKE_object_eval_assign_data ( struct Object object,
struct ID data,
bool  is_owned 
)

◆ BKE_object_eval_constraints()

void BKE_object_eval_constraints ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob 
)

◆ BKE_object_eval_eval_base_flags()

void BKE_object_eval_eval_base_flags ( struct Depsgraph depsgraph,
struct Scene scene,
int  view_layer_index,
struct Object object,
int  base_index,
bool  is_from_set 
)

◆ BKE_object_eval_local_transform()

void BKE_object_eval_local_transform ( struct Depsgraph depsgraph,
struct Object ob 
)

◆ BKE_object_eval_parent()

void BKE_object_eval_parent ( struct Depsgraph depsgraph,
struct Object ob 
)

◆ BKE_object_eval_ptcache_reset()

void BKE_object_eval_ptcache_reset ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object object 
)

◆ BKE_object_eval_reset()

void BKE_object_eval_reset ( struct Object ob_eval)

Restore the object->data to a non-modifier evaluated state.

Some changes done directly in evaluated object require them to be reset before being re-evaluated. For example, we need to call this before BKE_mesh_new_from_object(), in case we removed/added modifiers in the evaluated object.

Definition at line 54 of file object_update.c.

References BKE_object_free_derived_caches().

Referenced by bake(), and object_force_modifier_update_for_bind().

◆ BKE_object_eval_transform_all()

void BKE_object_eval_transform_all ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object object 
)

◆ BKE_object_eval_transform_final()

void BKE_object_eval_transform_final ( struct Depsgraph depsgraph,
struct Object ob 
)

◆ BKE_object_eval_uber_data()

void BKE_object_eval_uber_data ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob 
)

◆ BKE_object_eval_uber_transform()

void BKE_object_eval_uber_transform ( struct Depsgraph depsgraph,
struct Object object 
)

◆ BKE_object_exists_check()

bool BKE_object_exists_check ( struct Main bmain,
const struct Object obtest 
)

Referenced by test_constraint().

◆ BKE_object_flag_test_recursive()

bool BKE_object_flag_test_recursive ( const struct Object ob,
short  flag 
)

◆ BKE_object_foreach_display_point()

void BKE_object_foreach_display_point ( struct Object ob,
const float  obmat[4][4],
void(*)(const float[3], void *)  func_cb,
void user_data 
)

◆ BKE_object_free_caches()

void BKE_object_free_caches ( struct Object object)

◆ BKE_object_free_curve_cache()

void BKE_object_free_curve_cache ( struct Object ob)

◆ BKE_object_free_derived_caches()

void BKE_object_free_derived_caches ( struct Object ob)

Free data derived from mesh, called when mesh changes or is freed.

Definition at line 1774 of file object.cc.

References Object_Runtime::bb, BKE_crazyspace_api_eval_clear(), BKE_geometry_set_free(), BKE_gpencil_eval_delete(), BKE_libblock_free_data(), BKE_libblock_free_datablock(), BKE_mesh_eval_delete(), BKE_object_free_curve_cache(), BKE_object_to_curve_clear(), BKE_object_to_mesh_clear(), Object::data, Object_Runtime::data_eval, Object_Runtime::data_orig, Object_Runtime::editmesh_bb_cage, Object_Runtime::editmesh_eval_cage, Object_Runtime::geometry_set_eval, Object_Runtime::gpd_eval, GS, ID_ME, Object_Runtime::is_data_eval_owned, MEM_freeN, MEM_SAFE_FREE, Object_Runtime::mesh_deform_eval, ID::name, object_update_from_subsurf_ccg(), and Object::runtime.

Referenced by BKE_curves_data_update(), BKE_displist_make_curveTypes(), BKE_lattice_modifiers_calc(), BKE_mesh_to_curve(), BKE_mesh_to_pointcloud(), BKE_object_eval_reset(), BKE_object_free_caches(), BKE_object_free_modifiers(), BKE_object_runtime_free_data(), BKE_pointcloud_data_update(), BKE_pointcloud_to_mesh(), BKE_sculptsession_bm_to_me_for_render(), BKE_volume_data_update(), clean_viewport_memory_base(), ED_mesh_join_objects_exec(), ED_object_modifier_apply(), ED_object_sculptmode_exit_ex(), ed_vwpaintmode_enter_generic(), ed_vwpaintmode_exit_generic(), gpencil_object_modifier_remove(), makeDerivedMesh(), object_convert_exec(), object_modifier_remove(), object_shaderfx_remove(), blender::deg::ObjectRuntimeBackup::restore_to_object(), and SCULPT_pbvh_clear().

◆ BKE_object_free_modifiers()

void BKE_object_free_modifiers ( struct Object ob,
int  flag 
)

◆ BKE_object_free_particlesystems()

void BKE_object_free_particlesystems ( struct Object ob)

◆ BKE_object_free_shaderfx()

void BKE_object_free_shaderfx ( struct Object ob,
int  flag 
)

Definition at line 1311 of file object.cc.

References BKE_shaderfx_free_ex(), BLI_pophead(), and Object::shader_fx.

Referenced by object_convert_exec(), and object_free_data().

◆ BKE_object_free_softbody()

void BKE_object_free_softbody ( struct Object ob)

Definition at line 1270 of file object.cc.

References sbFree().

Referenced by BKE_object_free_modifiers().

◆ BKE_object_get_editmesh_eval_cage()

struct Mesh* BKE_object_get_editmesh_eval_cage ( const struct Object object)

◆ BKE_object_get_editmesh_eval_final()

struct Mesh* BKE_object_get_editmesh_eval_final ( const struct Object object)

◆ BKE_object_get_evaluated_lattice()

struct Lattice* BKE_object_get_evaluated_lattice ( const struct Object object)

◆ BKE_object_get_evaluated_mesh()

struct Mesh* BKE_object_get_evaluated_mesh ( const struct Object object)

Get evaluated mesh for given object.

Referenced by BKE_effectors_create(), BKE_gpencil_convert_mesh(), BKE_modifier_get_evaluated_mesh_from_evaluated_object(), BKE_sculpt_update_object_after_eval(), BKE_sculpt_update_object_for_edit(), contarget_get_mesh_mat(), ED_draw_object_facemap(), blender::ed::sculpt_paint::AddOperationExecutor::execute(), blender::ed::sculpt_paint::DensityAddOperationExecutor::execute(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::execute(), blender::ed::sculpt_paint::SlideOperationExecutor::execute(), followtrack_project_to_depth_object_if_needed(), get_effector_data(), get_effector_tot(), blender::io::alembic::ABCCurveMeshWriter::get_export_mesh(), blender::io::alembic::ABCMetaballWriter::get_export_mesh(), blender::io::alembic::ABCMeshWriter::get_export_mesh(), blender::io::usd::USDMeshWriter::get_export_mesh(), blender::io::usd::USDMetaballWriter::get_export_mesh(), blender::io::obj::obj_importer_test::import_and_check(), knifeproject_poly_from_object(), lineart_gpencil_generate(), lineart_object_load_single_instance(), mesh_data_from_duplicator_object(), mesh_for_snap(), mesh_get_eval_final(), mesh_new_from_evaluated_curve_type_object(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_invoke(), nearest_world_object_fn(), blender::io::obj::OBJMesh::OBJMesh(), paintvert_flush_flags(), PE_create_shape_tree(), raycast_obj_fn(), blender::ed::sculpt_paint::sample_curves_3d_brush(), shrinkwrap_get_tarmat(), snap_obj_fn(), stats_object(), and blender::ed::sculpt_paint::use_add_density_mode().

◆ BKE_object_get_evaluated_mesh_no_subsurf()

struct Mesh* BKE_object_get_evaluated_mesh_no_subsurf ( const struct Object object)

◆ BKE_object_get_last_subsurf_modifier()

struct SubsurfModifierData* BKE_object_get_last_subsurf_modifier ( const struct Object ob)

Return the last subsurf modifier of an object, this does not check whether modifiers on top of it are disabled. Return NULL if no such modifier is found.

This does not check if the modifier is enabled as it is assumed that the caller verified that it is enabled for its evaluation mode.

◆ BKE_object_get_lattice()

struct Lattice* BKE_object_get_lattice ( const struct Object object)

◆ BKE_object_get_original_mesh()

struct Mesh* BKE_object_get_original_mesh ( const struct Object object)

◆ BKE_object_get_parent_matrix()

void BKE_object_get_parent_matrix ( struct Object ob,
struct Object par,
float  r_parentmat[4][4] 
)

◆ BKE_object_get_pre_modified_mesh()

struct Mesh* BKE_object_get_pre_modified_mesh ( const struct Object object)

Get mesh which is not affected by modifiers:

  • For original objects it will be same as object->data, and it is a mesh which is in the corresponding Main.
  • For copied-on-write objects it will give pointer to a copied-on-write mesh which corresponds to original object's mesh.

Referenced by MOD_deform_mesh_eval_get(), and blender::io::obj::OBJMesh::OBJMesh().

◆ BKE_object_groups()

struct LinkNode* BKE_object_groups ( struct Main bmain,
struct Scene scene,
struct Object ob 
)
Returns
All groups this object is a part of, caller must free.

Definition at line 5234 of file object.cc.

References BKE_collection_object_find(), BLI_linklist_prepend(), and scene.

Referenced by make_links_data_exec().

◆ BKE_object_groups_clear()

void BKE_object_groups_clear ( struct Main bmain,
struct Scene scene,
struct Object object 
)

◆ BKE_object_handle_data_update()

void BKE_object_handle_data_update ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob 
)

Definition at line 135 of file object_update.c.

References BKE_curves_data_update(), BKE_displist_make_curveTypes(), BKE_displist_make_mball(), BKE_gpencil_modifiers_calc(), BKE_gpencil_prepare_eval_data(), BKE_gpencil_update_layer_transforms(), BKE_lattice_modifiers_calc(), BKE_pointcloud_data_update(), BKE_pose_where_is(), BKE_volume_data_update(), BLI_remlink(), CD_MASK_BAREMESH, CD_MASK_FREESTYLE_EDGE, CD_MASK_FREESTYLE_FACE, CD_MASK_MDEFORMVERT, CD_MASK_MLOOPUV, CD_MASK_NORMAL, CD_MASK_ORCO, CD_MASK_PROP_ALL, CD_MASK_PROP_BYTE_COLOR, CD_MASK_PROP_COLOR, Scene::customdata_mask, CustomData_MeshMasks_update(), DAG_EVAL_RENDER, DEG_debug_print_eval(), DEG_get_mode(), depsgraph, ParticleSettings::draw_as, CustomData_MeshMasks::emask, ListBase::first, ParticleSystem::flag, CustomData_MeshMasks::fmask, Object::id, ParticleSettings::instance_collection, ParticleSettings::instance_object, CustomData_MeshMasks::lmask, makeDerivedMesh(), Object::mode, ID::name, ParticleSystem::next, OB_ARMATURE, OB_CURVES, OB_CURVES_LEGACY, OB_DUPLIPARTS, OB_FONT, OB_GPENCIL, OB_LATTICE, OB_MBALL, OB_MESH, OB_MODE_EDIT, OB_POINTCLOUD, OB_SURF, OB_VOLUME, ParticleSystem::part, PART_DRAW_GR, PART_DRAW_OB, PART_DRAW_REND, particle_system_update(), Object::particlesystem, CustomData_MeshMasks::pmask, psys_check_enabled(), PSYS_DELETE, psys_free(), ParticleSettings::ren_as, scene, Object::transflag, Object::type, and CustomData_MeshMasks::vmask.

Referenced by bake(), BKE_object_eval_uber_data(), and BKE_object_handle_update_ex().

◆ BKE_object_handle_update()

void BKE_object_handle_update ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob 
)
Warning
"scene" here may not be the scene object actually resides in. When dealing with background-sets, "scene" is actually the active scene. e.g. "scene" <– set 1 <– set 2 ("ob" lives here) <– set 3 <– ... <– set n rigid bodies depend on their world so use BKE_object_handle_update_ex() to also pass along the current rigid body world.

Definition at line 4316 of file object.cc.

References BKE_object_handle_update_ex(), depsgraph, and scene.

Referenced by BKE_object_modifier_update_subframe().

◆ BKE_object_handle_update_ex()

void BKE_object_handle_update_ex ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob,
struct RigidBodyWorld rbw 
)

The main object update call, for object matrix, constraints, keys and DispList (modifiers) requires flags to be set!

Ideally we shouldn't have to pass the rigid body world, but need bigger restructuring to avoid id.

Definition at line 4269 of file object.cc.

References BKE_object_handle_data_update(), BKE_object_where_is_calc_ex(), BKE_pose_channels_hash_ensure(), BKE_pose_rebuild(), BKE_pose_update_constraint_flags(), Object::data, depsgraph, bPose::flag, G, G_DEBUG_DEPSGRAPH_EVAL, Object::id, ID_RECALC_ALL, ID::name, OB_ARMATURE, Object::pose, POSE_CONSTRAINTS_NEED_UPDATE_FLAGS, POSE_RECALC, ID::recalc, scene, and Object::type.

Referenced by BKE_object_handle_update().

◆ BKE_object_has_mode_data()

bool BKE_object_has_mode_data ( const struct Object ob,
eObjectMode  object_mode 
)

◆ BKE_object_insert_ptcache()

int BKE_object_insert_ptcache ( struct Object ob)

◆ BKE_object_is_child_recursive()

bool BKE_object_is_child_recursive ( const struct Object ob_parent,
const struct Object ob_child 
)

◆ BKE_object_is_deform_modified()

int BKE_object_is_deform_modified ( struct Scene scene,
struct Object ob 
)

◆ BKE_object_is_in_editmode()

bool BKE_object_is_in_editmode ( const struct Object ob)

◆ BKE_object_is_in_editmode_vgroup()

bool BKE_object_is_in_editmode_vgroup ( const struct Object ob)

◆ BKE_object_is_in_wpaint_select_vert()

bool BKE_object_is_in_wpaint_select_vert ( const struct Object ob)

◆ BKE_object_is_libdata()

bool BKE_object_is_libdata ( const struct Object ob)

Returns true if the Object is from an external blend file (libdata).

Referenced by BKE_view_layer_selected_editable_objects_iterator_begin(), and BKE_view_layer_selected_editable_objects_iterator_next().

◆ BKE_object_is_mode_compat()

bool BKE_object_is_mode_compat ( const struct Object ob,
eObjectMode  object_mode 
)

◆ BKE_object_is_modified()

int BKE_object_is_modified ( struct Scene scene,
struct Object ob 
)

Most important if this is modified it should always return true, in certain cases false positives are hard to avoid (shape keys for example).

Returns
ModifierMode flag.

Definition at line 4854 of file object.cc.

References BKE_key_from_object(), BKE_modifier_is_enabled(), BKE_modifiers_get_virtual_modifierlist(), DEG_get_original_object(), eModifierMode_Realtime, eModifierMode_Render, ModifierData::next, and scene.

◆ BKE_object_link_modifiers()

void BKE_object_link_modifiers ( struct Object ob_dst,
const struct Object ob_src 
)

◆ BKE_object_mat3_to_rot()

void BKE_object_mat3_to_rot ( struct Object ob,
float  r_mat[3][3],
bool  use_compat 
)

◆ BKE_object_matrix_local_get()

void BKE_object_matrix_local_get ( struct Object ob,
float  r_mat[4][4] 
)

◆ BKE_object_minmax()

void BKE_object_minmax ( struct Object ob,
float  r_min[3],
float  r_max[3],
bool  use_hidden 
)

◆ BKE_object_minmax_dupli()

bool BKE_object_minmax_dupli ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob,
float  r_min[3],
float  r_max[3],
bool  use_hidden 
)

◆ BKE_object_minmax_empty_drawtype()

bool BKE_object_minmax_empty_drawtype ( const struct Object ob,
float  r_min[3],
float  r_max[3] 
)

Calculate visual bounds from an empty objects draw-type.

Note
This is not part of the calculation used by BKE_object_boundbox_get as these bounds represent the extents of visual guides (use for viewport culling for e.g.)

Definition at line 4011 of file object.cc.

References BLI_assert, CLAMP_MAX, CLAMP_MIN, copy_v3_v3(), Object::empty_drawsize, Object::empty_drawtype, Object::ima_ofs, max, min, OB_ARROWS, OB_CIRCLE, OB_CUBE, OB_EMPTY, OB_EMPTY_CONE, OB_EMPTY_IMAGE, OB_EMPTY_SPHERE, OB_PLAINAXES, OB_SINGLE_ARROW, and Object::type.

Referenced by BKE_pchan_minmax().

◆ BKE_object_modifier_gpencil_hook_reset()

void BKE_object_modifier_gpencil_hook_reset ( struct Object ob,
struct HookGpencilModifierData hmd 
)

◆ BKE_object_modifier_hook_reset()

void BKE_object_modifier_hook_reset ( struct Object ob,
struct HookModifierData hmd 
)

◆ BKE_object_modifier_set_active()

void BKE_object_modifier_set_active ( struct Object ob,
struct ModifierData md 
)

◆ BKE_object_modifier_stack_copy()

bool BKE_object_modifier_stack_copy ( struct Object ob_dst,
const struct Object ob_src,
bool  do_copy_all,
int  flag_subdata 
)

Copy the whole stack of modifiers from one object into another.

Warning
Does not clear modifier stack and related data (particle systems, soft-body, etc.) in ob_dst, if needed calling code must do it.
Parameters
do_copy_allIf true, even modifiers that should not support copying (like Hook one) will be duplicated.

◆ BKE_object_modifier_update_subframe()

bool BKE_object_modifier_update_subframe ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob,
bool  update_mesh,
int  parent_recursion,
float  frame,
int  type 
)

◆ BKE_object_modifiers_lib_link_common()

void BKE_object_modifiers_lib_link_common ( void userData,
struct Object ob,
struct ID **  idpoin,
int  cb_flag 
)

◆ BKE_object_moves_in_time()

bool BKE_object_moves_in_time ( const struct Object object,
bool  recurse_parent 
)

Check of objects moves in time.

Note
This function is currently optimized for usage in combination with modifier deformation checks (eModifierTypeType_OnlyDeform), so modifiers can quickly check if their target objects moves (causing deformation motion blur) or not.

This makes it possible to give some degree of false-positives here, but it's currently an acceptable tradeoff between complexity and check speed. In combination with checks of modifier stack and real life usage percentage of false-positives shouldn't be that high.

Note
This function does not consider physics systems.

Referenced by blender::io::alembic::ABCTransformWriter::check_is_animated(), blender::io::usd::USDTransformWriter::check_is_animated(), and EEVEE_motion_blur_cache_populate().

◆ BKE_object_movieclip_get()

struct MovieClip* BKE_object_movieclip_get ( struct Scene scene,
struct Object ob,
bool  use_default 
)

◆ BKE_object_obdata_add_from_type()

void* BKE_object_obdata_add_from_type ( struct Main bmain,
int  type,
const char *  name 
)

◆ BKE_object_obdata_is_libdata()

bool BKE_object_obdata_is_libdata ( const struct Object ob)

◆ BKE_object_obdata_size_init()

void BKE_object_obdata_size_init ( struct Object ob,
float  size 
)

◆ BKE_object_obdata_texspace_get()

bool BKE_object_obdata_texspace_get ( struct Object ob,
char **  r_texflag,
float **  r_loc,
float **  r_size 
)

◆ BKE_object_obdata_to_type()

int BKE_object_obdata_to_type ( const struct ID id)

◆ BKE_object_parent_loop_check()

bool BKE_object_parent_loop_check ( const struct Object parent,
const struct Object ob 
)

◆ BKE_object_pose_armature_get()

struct Object* BKE_object_pose_armature_get ( struct Object ob)

Definition at line 2511 of file object.cc.

References BKE_modifiers_is_deformed_by_armature(), and BKE_object_pose_context_check().

Referenced by apply_armature_pose2bones_exec(), armature_layers_get_data(), BKE_object_defgroup_selected_get(), BKE_object_pose_armature_get_visible(), BKE_object_pose_armature_get_with_wpaint_check(), BKE_object_pose_array_get_ex(), BKE_object_pose_base_array_get_ex(), draw_selected_name(), drw_context_state_init(), dt_layers_select_src_itemf(), ED_object_vgroup_selection_itemf_helper(), ED_operator_posemode(), ed_operator_posemode_exclusive_ex(), ED_operator_posemode_local(), ED_pose_object_from_context(), ED_transform_calc_gizmo_stats(), ED_vgroup_sync_from_pose(), ED_view3d_select_filter_from_mode(), get_poselib_object(), is_cursor_visible(), outliner_show_active_get_element(), outliner_viewcontext_init(), pose_calculate_paths_exec(), pose_calculate_paths_invoke(), pose_clear_paths_exec(), pose_constraint_add_exec(), pose_copy_exec(), pose_ik_add_invoke(), pose_paste_exec(), pose_select_grouped_exec(), pose_select_hierarchy_exec(), pose_select_parent_exec(), pose_select_same_group(), pose_select_same_keyingset(), pose_update_paths_exec(), pose_update_paths_range_exec(), poseAnim_object_get(), poselib_rename_exec(), screen_ctx_active_pose_bone(), screen_ctx_pose_object(), screen_ctx_selected_pose_bones(), screen_ctx_selected_pose_bones_from_active_object(), screen_ctx_visible_pose_bones(), toggle_xray_exec(), tree_element_posechannel_activate(), view3d_orbit_calc_center(), view3d_select_exec(), WIDGETGROUP_armature_spline_poll(), WIDGETGROUP_armature_spline_refresh(), and WIDGETGROUP_armature_spline_setup().

◆ BKE_object_pose_armature_get_visible()

struct Object* BKE_object_pose_armature_get_visible ( struct Object ob,
struct ViewLayer view_layer,
struct View3D v3d 
)

◆ BKE_object_pose_armature_get_with_wpaint_check()

struct Object* BKE_object_pose_armature_get_with_wpaint_check ( struct Object ob)

A version of BKE_object_pose_armature_get with an additional check. When ob isn't an armature: only return the referenced pose object when the active object is in weight paint mode.

Note
Some callers need to check that pose bones are selectable which isn't the case when the object using the armature isn't in weight-paint mode.

Definition at line 2531 of file object.cc.

References BKE_object_pose_armature_get(), Object::mode, OB_GPENCIL, OB_MESH, OB_MODE_WEIGHT_GPENCIL, OB_MODE_WEIGHT_PAINT, and Object::type.

Referenced by view3d_select_exec().

◆ BKE_object_pose_array_get()

struct Object** BKE_object_pose_array_get ( struct ViewLayer view_layer,
struct View3D v3d,
unsigned int *  r_objects_len 
)

◆ BKE_object_pose_array_get_ex()

struct Object** BKE_object_pose_array_get_ex ( struct ViewLayer view_layer,
struct View3D v3d,
unsigned int *  r_objects_len,
bool  unique 
)

Access pose array with special check to get pose object when in weight paint mode.

Definition at line 2567 of file object.cc.

References BKE_object_pose_armature_get(), BKE_view_layer_array_from_objects_in_mode_params(), MEM_mallocN, OB_MODE_POSE, OBACT, and ObjectsInModeParams::object_mode.

Referenced by BKE_object_pose_array_get(), and BKE_object_pose_array_get_unique().

◆ BKE_object_pose_array_get_unique()

struct Object** BKE_object_pose_array_get_unique ( struct ViewLayer view_layer,
struct View3D v3d,
unsigned int *  r_objects_len 
)

◆ BKE_object_pose_base_array_get()

struct Base** BKE_object_pose_base_array_get ( struct ViewLayer view_layer,
struct View3D v3d,
unsigned int *  r_bases_len 
)

Definition at line 2645 of file object.cc.

References BKE_object_pose_base_array_get_ex().

Referenced by ed_armature_pick_bone_impl().

◆ BKE_object_pose_base_array_get_ex()

struct Base** BKE_object_pose_base_array_get_ex ( struct ViewLayer view_layer,
struct View3D v3d,
unsigned int *  r_bases_len,
bool  unique 
)

◆ BKE_object_pose_base_array_get_unique()

struct Base** BKE_object_pose_base_array_get_unique ( struct ViewLayer view_layer,
struct View3D v3d,
unsigned int *  r_bases_len 
)

Definition at line 2641 of file object.cc.

References BKE_object_pose_base_array_get_ex().

Referenced by ED_pose_deselect_all_multi().

◆ BKE_object_pose_context_check()

bool BKE_object_pose_context_check ( const struct Object ob)

◆ BKE_object_relational_superset()

struct LinkNode* BKE_object_relational_superset ( struct ViewLayer view_layer,
eObjectSet  objectSet,
eObRelationTypes  includeFilter 
)

Iterates over all objects of the given scene layer. Depending on the eObjectSet flag: collect either OB_SET_ALL, OB_SET_VISIBLE or OB_SET_SELECTED objects. If OB_SET_VISIBLE or::OB_SET_SELECTED are collected, then also add related objects according to the given includeFilter.

Definition at line 5157 of file object.cc.

References BASE_EDITABLE, BASE_SELECTED_EDITABLE, BKE_object_is_child_recursive(), LIB_TAG_DOIT, LISTBASE_FOREACH, OB_REL_CHILDREN, OB_REL_CHILDREN_RECURSIVE, OB_REL_MOD_ARMATURE, OB_REL_PARENT, OB_REL_PARENT_RECURSIVE, OB_SET_ALL, OB_SET_SELECTED, OB_SET_VISIBLE, ViewLayer::object_bases, obrel_armature_find(), obrel_list_add(), obrel_list_test(), and Object::parent.

Referenced by collada_export().

◆ BKE_object_replace_data_on_shallow_copy()

void BKE_object_replace_data_on_shallow_copy ( struct Object ob,
struct ID new_data 
)

◆ BKE_object_rot_to_mat3()

void BKE_object_rot_to_mat3 ( const struct Object ob,
float  r_mat[3][3],
bool  use_drot 
)

◆ BKE_object_runtime_free_data()

void BKE_object_runtime_free_data ( struct Object object)

The function frees memory used by the runtime data, but not the runtime field itself.

All runtime data is cleared to ensure it's not used again, in keeping with other _free_data(..) functions.

Definition at line 5110 of file object.cc.

References BKE_object_free_derived_caches(), and BKE_object_runtime_reset().

Referenced by curve_to_mesh_eval_ensure().

◆ BKE_object_runtime_reset()

void BKE_object_runtime_reset ( struct Object object)

◆ BKE_object_runtime_reset_on_copy()

void BKE_object_runtime_reset_on_copy ( struct Object object,
int  flag 
)

Reset all pointers which we don't want to be shared when copying the object.

◆ BKE_object_scale_to_mat3()

void BKE_object_scale_to_mat3 ( struct Object ob,
float  r_mat[3][3] 
)

◆ BKE_object_scenes_users_get()

int BKE_object_scenes_users_get ( struct Main bmain,
struct Object ob 
)

Return the number of scenes using (instantiating) that object in their collections.

Definition at line 5031 of file object.cc.

References BKE_collection_has_object_recursive(), LISTBASE_FOREACH, Scene::master_collection, scene, and Main::scenes.

Referenced by single_object_users_collection().

◆ BKE_object_sculpt_data_create()

void BKE_object_sculpt_data_create ( struct Object ob)

◆ BKE_object_select_update()

void BKE_object_select_update ( struct Depsgraph depsgraph,
struct Object object 
)

◆ BKE_object_shapekey_free()

bool BKE_object_shapekey_free ( struct Main bmain,
struct Object ob 
)

Definition at line 4729 of file object.cc.

References BKE_id_free_us(), BKE_key_from_object_p(), and ELEM.

Referenced by BKE_object_shapekey_remove(), and shape_key_remove_exec().

◆ BKE_object_shapekey_insert()

struct KeyBlock* BKE_object_shapekey_insert ( struct Main bmain,
struct Object ob,
const char *  name,
bool  from_mix 
)

◆ BKE_object_shapekey_remove()

bool BKE_object_shapekey_remove ( struct Main bmain,
struct Object ob,
struct KeyBlock kb 
)

◆ BKE_object_support_modifier_type_check()

bool BKE_object_support_modifier_type_check ( const struct Object ob,
int  modifier_type 
)

◆ BKE_object_supports_material_slots()

bool BKE_object_supports_material_slots ( struct Object ob)

◆ BKE_object_supports_modifiers()

bool BKE_object_supports_modifiers ( const struct Object ob)
Returns
True if the object's type supports regular modifiers (not grease pencil modifiers).

Referenced by modifier_copy_to_selected_poll().

◆ BKE_object_sync_to_original()

void BKE_object_sync_to_original ( struct Depsgraph depsgraph,
struct Object object 
)

◆ BKE_object_tfm_backup()

void* BKE_object_tfm_backup ( struct Object ob)

◆ BKE_object_tfm_copy()

void BKE_object_tfm_copy ( struct Object object_dst,
const struct Object object_src 
)

Referenced by ObjectToTransData().

◆ BKE_object_tfm_protected_backup()

void BKE_object_tfm_protected_backup ( const struct Object ob,
ObjectTfmProtectedChannels obtfm 
)

◆ BKE_object_tfm_protected_restore()

void BKE_object_tfm_protected_restore ( struct Object ob,
const ObjectTfmProtectedChannels obtfm,
short  protectflag 
)

◆ BKE_object_tfm_restore()

void BKE_object_tfm_restore ( struct Object ob,
void obtfm_pt 
)

◆ BKE_object_to_curve()

struct Curve* BKE_object_to_curve ( struct Object object,
struct Depsgraph depsgraph,
bool  apply_modifiers 
)

This is an utility function for Python's object.to_curve(). The result is owned by the object.

The curve will be freed when object is re-evaluated or is destroyed. It is possible to force clear memory used by this curve by calling BKE_object_to_curve_clear().

If apply_modifiers is true and the object is a curve one, then spline deform modifiers are applied on the curve control points.

Definition at line 5538 of file object.cc.

References BKE_curve_new_from_object(), BKE_object_to_curve_clear(), curve, and depsgraph.

◆ BKE_object_to_curve_clear()

void BKE_object_to_curve_clear ( struct Object object)

◆ BKE_object_to_mat3()

void BKE_object_to_mat3 ( struct Object ob,
float  r_mat[3][3] 
)

◆ BKE_object_to_mat4()

void BKE_object_to_mat4 ( struct Object ob,
float  r_mat[4][4] 
)

◆ BKE_object_to_mesh()

struct Mesh* BKE_object_to_mesh ( struct Depsgraph depsgraph,
struct Object object,
bool  preserve_all_data_layers 
)

This is an utility function for Python's object.to_mesh() (the naming is not very clear though). The result is owned by the object.

The mesh will be freed when object is re-evaluated or is destroyed. It is possible to force to clear memory used by this mesh by calling BKE_object_to_mesh_clear().

If preserve_all_data_layers is truth then the modifier stack is re-evaluated to ensure it preserves all possible custom data layers.

NOTE: Dependency graph argument is required when preserve_all_data_layers is truth, and is ignored otherwise.

Definition at line 5520 of file object.cc.

References BKE_mesh_new_from_object(), BKE_object_to_mesh_clear(), depsgraph, and mesh.

Referenced by Freestyle::BlenderFileLoader::Load().

◆ BKE_object_to_mesh_clear()

void BKE_object_to_mesh_clear ( struct Object object)

◆ BKE_object_transform_copy()

void BKE_object_transform_copy ( struct Object ob_tar,
const struct Object ob_src 
)

◆ BKE_object_update_select_id()

void BKE_object_update_select_id ( struct Main bmain)

◆ BKE_object_visibility()

int BKE_object_visibility ( const struct Object ob,
int  dag_eval_mode 
)

◆ BKE_object_where_is_calc()

void BKE_object_where_is_calc ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob 
)

◆ BKE_object_where_is_calc_ex()

void BKE_object_where_is_calc_ex ( struct Depsgraph depsgraph,
struct Scene scene,
struct RigidBodyWorld rbw,
struct Object ob,
float  r_originmat[3][3] 
)

◆ BKE_object_where_is_calc_mat4()

void BKE_object_where_is_calc_mat4 ( struct Object ob,
float  r_obmat[4][4] 
)

Calculate object transformation matrix without recalculating dependencies and constraints – assume dependencies are already solved by depsgraph. No changes to object and its parent would be done. Used for bundles orientation in 3d space relative to parented blender camera.

Definition at line 3478 of file object.cc.

References BKE_object_to_mat4(), Object::parent, and solve_parenting().

Referenced by BKE_tracking_get_camera_object_matrix(), followtrack_distance_from_viewplane_get(), and object_solver_inverted_matrix().

◆ BKE_object_where_is_calc_time()

void BKE_object_where_is_calc_time ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob,
float  ctime 
)

◆ BKE_object_workob_calc_parent()

void BKE_object_workob_calc_parent ( struct Depsgraph depsgraph,
struct Scene scene,
struct Object ob,
struct Object workob 
)

For calculation of the inverse parent transform, only used for editor.

It assumes the object parent is already in the depsgraph. Otherwise, after changing ob->parent you need to call:

  • #DEG_relations_tag_update(bmain);
  • #BKE_scene_graph_update_tagged(depsgraph, bmain);

Definition at line 3501 of file object.cc.

References BKE_object_where_is_calc(), BKE_object_workob_clear(), BLI_strncpy(), Object::constinv, DEG_get_evaluated_object(), depsgraph, Object::obmat, Object::par1, Object::par2, Object::par3, Object::parent, Object::parentinv, Object::parsubstr, Object::partype, scene, Object::trackflag, unit_m4(), and Object::upflag.

Referenced by apply_objects_internal(), applyarmature_fix_boneparents(), ED_object_parent_set(), ignore_parent_tx(), SkinInfo::link_armature(), and vertex_parent_set_exec().

◆ BKE_object_workob_clear()

void BKE_object_workob_clear ( struct Object workob)

◆ BKE_scene_foreach_display_point()

void BKE_scene_foreach_display_point ( struct Depsgraph depsgraph,
void(*)(const float[3], void *)  func_cb,
void user_data 
)

Variable Documentation

◆ ATTR_RETURNS_NONNULL

struct Object ATTR_RETURNS_NONNULL

Definition at line 180 of file BKE_object.h.