Blender V4.3
BKE_modifier.hh File Reference

Go to the source code of this file.

Classes

struct  ModifierUpdateDepsgraphContext
 
struct  ModifierEvalContext
 
struct  ModifierTypeInfo
 
struct  CDMaskLink
 
struct  VirtualModifierData
 
class  blender::bke::ScopedModifierTimer
 

Namespaces

namespace  blender
 
namespace  blender::bke
 

Macros

#define MODIFIER_TYPE_PANEL_PREFIX   "MOD_PT_"
 

Typedefs

using IDWalkFunc = void (*)(void *user_data, Object *ob, ID **idpoin, int cb_flag)
 
using TexWalkFunc
 

Enumerations

enum class  ModifierTypeType {
  None , OnlyDeform , Constructive , Nonconstructive ,
  DeformOrConstruct , NonGeometrical
}
 
enum  ModifierTypeFlag {
  eModifierTypeFlag_AcceptsMesh = (1 << 0) , eModifierTypeFlag_AcceptsCVs = (1 << 1) , eModifierTypeFlag_SupportsMapping = (1 << 2) , eModifierTypeFlag_SupportsEditmode = (1 << 3) ,
  eModifierTypeFlag_EnableInEditmode = (1 << 4) , eModifierTypeFlag_RequiresOriginalData = (1 << 5) , eModifierTypeFlag_UsesPointCache = (1 << 6) , eModifierTypeFlag_Single = (1 << 7) ,
  eModifierTypeFlag_NoUserAdd = (1 << 8) , eModifierTypeFlag_AcceptsVertexCosOnly = (1 << 10) , eModifierTypeFlag_AcceptsBMesh = (1 << 11) , eModifierTypeFlag_AcceptsGreasePencil = (1 << 12)
}
 
enum  ModifierApplyFlag {
  MOD_APPLY_RENDER = 1 << 0 , MOD_APPLY_USECACHE = 1 << 1 , MOD_APPLY_ORCO = 1 << 2 , MOD_APPLY_IGNORE_SIMPLIFY = 1 << 3 ,
  MOD_APPLY_TO_ORIGINAL = 1 << 4
}
 

Functions

 ENUM_OPERATORS (ModifierApplyFlag, MOD_APPLY_TO_ORIGINAL)
 
void BKE_modifier_init ()
 
const ModifierTypeInfoBKE_modifier_get_info (ModifierType type)
 
void BKE_modifier_type_panel_id (ModifierType type, char *r_idname)
 
void BKE_modifier_panel_expand (ModifierData *md)
 
ModifierDataBKE_modifier_new (int type)
 
void BKE_modifier_free_ex (ModifierData *md, int flag)
 
void BKE_modifier_free (ModifierData *md)
 
void BKE_modifier_remove_from_list (Object *ob, ModifierData *md)
 
void BKE_modifier_unique_name (ListBase *modifiers, ModifierData *md)
 
ModifierDataBKE_modifier_copy_ex (const ModifierData *md, int flag)
 
void BKE_modifier_copydata_generic (const ModifierData *md, ModifierData *md_dst, int flag)
 
void BKE_modifier_copydata (const ModifierData *md, ModifierData *target)
 
void BKE_modifier_copydata_ex (const ModifierData *md, ModifierData *target, int flag)
 
bool BKE_modifier_depends_ontime (Scene *scene, ModifierData *md)
 
bool BKE_modifier_supports_mapping (ModifierData *md)
 
bool BKE_modifier_supports_cage (Scene *scene, ModifierData *md)
 
bool BKE_modifier_couldbe_cage (Scene *scene, ModifierData *md)
 
bool BKE_modifier_is_correctable_deformed (ModifierData *md)
 
bool BKE_modifier_is_same_topology (ModifierData *md)
 
bool BKE_modifier_is_non_geometrical (ModifierData *md)
 
bool BKE_modifier_is_enabled (const Scene *scene, ModifierData *md, int required_mode)
 
bool BKE_modifier_is_nonlocal_in_liboverride (const Object *ob, const ModifierData *md)
 
void BKE_modifier_set_error (const Object *ob, ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
 
void void BKE_modifier_set_warning (const Object *ob, ModifierData *md, const char *format,...) ATTR_PRINTF_FORMAT(3
 
void void void BKE_modifiers_foreach_ID_link (Object *ob, IDWalkFunc walk, void *user_data)
 
void BKE_modifiers_foreach_tex_link (Object *ob, TexWalkFunc walk, void *user_data)
 
ModifierDataBKE_modifiers_findby_type (const Object *ob, ModifierType type)
 
ModifierDataBKE_modifiers_findby_name (const Object *ob, const char *name)
 
ModifierDataBKE_modifiers_findby_persistent_uid (const Object *ob, int persistent_uid)
 
void BKE_modifiers_clear_errors (Object *ob)
 
void BKE_modifiers_persistent_uid_init (const Object &object, ModifierData &md)
 
bool BKE_modifiers_persistent_uids_are_valid (const Object &object)
 
int BKE_modifiers_get_cage_index (const Scene *scene, Object *ob, int *r_lastPossibleCageIndex, bool is_virtual)
 
ObjectBKE_modifiers_is_deformed_by_armature (Object *ob)
 
ObjectBKE_modifiers_is_deformed_by_meshdeform (Object *ob)
 
ObjectBKE_modifiers_is_deformed_by_lattice (Object *ob)
 
ObjectBKE_modifiers_is_deformed_by_curve (Object *ob)
 
bool BKE_modifiers_uses_multires (Object *ob)
 
bool BKE_modifiers_uses_armature (Object *ob, bArmature *arm)
 
bool BKE_modifiers_is_correctable_deformed (const Scene *scene, Object *ob)
 
void BKE_modifier_free_temporary_data (ModifierData *md)
 
CDMaskLinkBKE_modifier_calc_data_masks (const Scene *scene, ModifierData *md, CustomData_MeshMasks *final_datamask, int required_mode)
 
ModifierDataBKE_modifiers_get_virtual_modifierlist (const Object *ob, VirtualModifierData *data)
 
void BKE_modifiers_test_object (Object *ob)
 
void BKE_modifier_mdef_compact_influences (ModifierData *md)
 
void BKE_modifier_path_init (char *path, int path_maxncpy, const char *name)
 
const char * BKE_modifier_path_relbase (Main *bmain, Object *ob)
 
const char * BKE_modifier_path_relbase_from_global (Object *ob)
 
ModifierDataBKE_modifier_get_original (const Object *object, ModifierData *md)
 
ModifierDataBKE_modifier_get_evaluated (Depsgraph *depsgraph, Object *object, ModifierData *md)
 
MeshBKE_modifier_modify_mesh (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
 
void BKE_modifier_deform_verts (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh, blender::MutableSpan< blender::float3 > positions)
 
void BKE_modifier_deform_vertsEM (ModifierData *md, const ModifierEvalContext *ctx, const BMEditMesh *em, Mesh *mesh, blender::MutableSpan< blender::float3 > positions)
 
MeshBKE_modifier_get_evaluated_mesh_from_evaluated_object (Object *ob_eval)
 
void BKE_modifier_blend_write (BlendWriter *writer, const ID *id_owner, ListBase *modbase)
 
void BKE_modifier_blend_read_data (BlendDataReader *reader, ListBase *lb, Object *ob)
 

Macro Definition Documentation

◆ MODIFIER_TYPE_PANEL_PREFIX

#define MODIFIER_TYPE_PANEL_PREFIX   "MOD_PT_"

Definition at line 400 of file BKE_modifier.hh.

Referenced by BKE_modifier_type_panel_id().

Typedef Documentation

◆ IDWalkFunc

using IDWalkFunc = void (*)(void *user_data, Object *ob, ID **idpoin, int cb_flag)

Definition at line 131 of file BKE_modifier.hh.

◆ TexWalkFunc

using TexWalkFunc
Initial value:
void (*)(void *user_data,
Object *ob,
const PointerRNA *ptr,
PropertyRNA *texture_prop)
PointerRNA * ptr
Definition wm_files.cc:4126

Definition at line 132 of file BKE_modifier.hh.

Enumeration Type Documentation

◆ ModifierApplyFlag

Enumerator
MOD_APPLY_RENDER 

Render time.

MOD_APPLY_USECACHE 

Result of evaluation will be cached, so modifier might want to cache data for quick updates (used by subdivision-surface)

MOD_APPLY_ORCO 

Modifier evaluated for undeformed texture coordinates

MOD_APPLY_IGNORE_SIMPLIFY 

Ignore scene simplification flag and use subdivisions level set in multires modifier.

MOD_APPLY_TO_ORIGINAL 

The effect of this modifier will be applied to the original geometry The modifier itself will be removed from the modifier stack. This flag can be checked to ignore rendering display data to the mesh. See OBJECT_OT_modifier_apply operator.

Definition at line 138 of file BKE_modifier.hh.

◆ ModifierTypeFlag

Enumerator
eModifierTypeFlag_AcceptsMesh 
eModifierTypeFlag_AcceptsCVs 
eModifierTypeFlag_SupportsMapping 

Modifiers that enable this flag can have the modifiers "On Cage" option toggled, see: eModifierMode_OnCage, where the output of the modifier can be selected directly. In some cases the cage geometry use read to tool code as well (loop-cut & knife are examples).

When set, geometry from the resulting mesh can be mapped back to the original indices via CD_ORIGINDEX.

While many modifiers using this flag preserve the order of geometry arrays, this isn't always the case, this flag doesn't imply ModifierTypeType::OnlyDeform. Geometry from the original mesh may be removed from the resulting mesh or new geometry may be added (where the CD_ORIGINDEX value will be ORIGINDEX_NONE).

Modifiers that create entirely new geometry from the input should not enable this flag because none of the geometry will be selectable when "On Cage" is enabled.

eModifierTypeFlag_SupportsEditmode 
eModifierTypeFlag_EnableInEditmode 

For modifiers that support editmode this determines if the modifier should be enabled by default in editmode. This should only be used by modifiers that are relatively speedy and also generally used in editmode, otherwise let the user enable it by hand.

eModifierTypeFlag_RequiresOriginalData 

For modifiers that require original data and so cannot be placed after any non-deforming modifier.

eModifierTypeFlag_UsesPointCache 

For modifiers that support point-cache, so we can check to see if it has files we need to deal with.

eModifierTypeFlag_Single 

For physics modifiers, max one per type

eModifierTypeFlag_NoUserAdd 

Some modifier can't be added manually by user

eModifierTypeFlag_AcceptsVertexCosOnly 
eModifierTypeFlag_AcceptsBMesh 

Accepts BMesh input (without conversion).

eModifierTypeFlag_AcceptsGreasePencil 

Accepts GreasePencil data input.

Definition at line 72 of file BKE_modifier.hh.

◆ ModifierTypeType

enum class ModifierTypeType
strong
Enumerator
None 
OnlyDeform 

Modifier only does deformation, implies that modifier type should have a valid deform_verts function. OnlyDeform style modifiers implicitly accept either mesh or CV input but should still declare flags appropriately.

Constructive 

Modifier adds geometry.

Nonconstructive 
DeformOrConstruct 

Both deform_verts & applyModifier are valid calls used for particles modifier that doesn't actually modify the object unless it's a mesh and can be exploded -> curve can also emit particles

NonGeometrical 

Like Nonconstructive, but does not affect the geometry of the object, rather some of its CustomData layers. E.g. UVProject and WeightVG modifiers.

Definition at line 41 of file BKE_modifier.hh.

Function Documentation

◆ BKE_modifier_blend_read_data()

void BKE_modifier_blend_read_data ( BlendDataReader * reader,
ListBase * lb,
Object * ob )

Definition at line 1242 of file blenkernel/intern/modifier.cc.

References BKE_effector_add_weights(), BKE_modifier_get_info(), BKE_ptcache_blend_read_data(), ModifierTypeInfo::blend_read, BLI_listbase_clear(), BLI_rw_mutex_alloc(), BLO_read_data_reports(), BLO_read_get_new_data_address_no_us(), BLO_read_struct, BLO_read_struct_list, BLO_reportf_wrap(), DynamicPaintModifierData::brush, DynamicPaintModifierData::canvas, ClothModifierData::clothObject, FluidDomainSettings::coba, ClothModifierData::coll_parms, FluidModifierData::domain, FluidModifierData::effector, ClothSimSettings::effector_weights, FluidDomainSettings::effector_weights, eModifierType_Cloth, eModifierType_DynamicPaint, eModifierType_Fluid, eModifierType_Fluidsim, eModifierType_None, ListBase::first, PointCache::flag, DynamicPaintCanvasSettings::flags, FluidDomainSettings::flags, FluidEffectorSettings::flags, FluidFlowSettings::flags, FluidModifierData::flow, FluidDomainSettings::fluid, FLUID_DOMAIN_FILE_LOAD, FluidDomainSettings::fluid_mutex, FluidDomainSettings::fmd, FluidEffectorSettings::fmd, FluidFlowSettings::fmd, ClothModifierData::hairdata, Object::id, ID_IS_LINKED, LISTBASE_FOREACH, FluidEffectorSettings::mesh, FluidFlowSettings::mesh, MOD_FLUID_TYPE_DOMAIN, MOD_FLUID_TYPE_EFFEC, MOD_FLUID_TYPE_FLOW, modifier_replace_with_fluid(), ID::name, FluidEffectorSettings::numverts, FluidFlowSettings::numverts, DynamicPaintBrushSettings::paint_ramp, DynamicPaintBrushSettings::pmd, DynamicPaintCanvasSettings::pmd, ClothModifierData::point_cache, FluidDomainSettings::point_cache, ClothSimSettings::presets, printf, DynamicPaintBrushSettings::psys, FluidFlowSettings::psys, PTCACHE_FAKE_SMOKE, ClothModifierData::ptcaches, FluidDomainSettings::ptcaches, ClothSimSettings::reset, RPT_, RPT_WARNING, ClothModifierData::sim_parms, ClothModifierData::solver_result, DynamicPaintCanvasSettings::surfaces, FluidDomainSettings::tex_coba, FluidDomainSettings::tex_color, FluidDomainSettings::tex_density, FluidDomainSettings::tex_field, FluidDomainSettings::tex_flame, FluidDomainSettings::tex_flame_coba, FluidDomainSettings::tex_shadow, FluidDomainSettings::tex_velocity_x, FluidDomainSettings::tex_velocity_y, FluidDomainSettings::tex_velocity_z, FluidDomainSettings::tex_wt, FluidModifierData::type, DynamicPaintBrushSettings::vel_ramp, FluidEffectorSettings::verts_old, and FluidFlowSettings::verts_old.

Referenced by object_blend_read_data().

◆ BKE_modifier_blend_write()

◆ BKE_modifier_calc_data_masks()

CDMaskLink * BKE_modifier_calc_data_masks ( const Scene * scene,
ModifierData * md,
CustomData_MeshMasks * final_datamask,
int required_mode )

Calculates and returns a linked list of CustomData_MeshMasks and modified final datamask, indicating the data required by each modifier in the stack pointed to by md for correct evaluation, assuming the data indicated by final_datamask is required at the end of the stack.

Definition at line 543 of file blenkernel/intern/modifier.cc.

References BKE_modifier_get_info(), BKE_modifier_is_enabled(), BLI_linklist_reverse(), CustomData_MeshMasks_update(), CDMaskLink::mask, CDMaskLink::next, ModifierData::next, OnlyDeform, ModifierTypeInfo::required_data_mask, ModifierData::type, ModifierTypeInfo::type, and CustomData_MeshMasks::vmask.

Referenced by BKE_crazyspace_get_first_deform_matrices_editbmesh(), blender::bke::editbmesh_calc_modifiers(), and blender::bke::mesh_calc_modifiers().

◆ BKE_modifier_copy_ex()

◆ BKE_modifier_copydata()

void BKE_modifier_copydata ( const ModifierData * md,
ModifierData * target )

◆ BKE_modifier_copydata_ex()

◆ BKE_modifier_copydata_generic()

◆ BKE_modifier_couldbe_cage()

◆ BKE_modifier_deform_verts()

◆ BKE_modifier_deform_vertsEM()

◆ BKE_modifier_depends_ontime()

◆ BKE_modifier_free()

◆ BKE_modifier_free_ex()

◆ BKE_modifier_free_temporary_data()

void BKE_modifier_free_temporary_data ( ModifierData * md)

◆ BKE_modifier_get_evaluated()

◆ BKE_modifier_get_evaluated_mesh_from_evaluated_object()

◆ BKE_modifier_get_info()

const ModifierTypeInfo * BKE_modifier_get_info ( ModifierType type)

Definition at line 113 of file blenkernel/intern/modifier.cc.

References modifier_types, and NUM_MODIFIER_TYPES.

Referenced by blender::ed::object::add_hook_object(), blender::ed::object::apply_grease_pencil_for_modifier(), blender::ed::object::apply_grease_pencil_for_modifier_all_keyframes(), BKE_crazyspace_build_sculpt(), BKE_crazyspace_get_first_deform_matrices_editbmesh(), BKE_curve_calc_modifiers_pre(), BKE_lattice_modifiers_calc(), BKE_modifier_blend_read_data(), BKE_modifier_blend_write(), BKE_modifier_calc_data_masks(), BKE_modifier_copydata_ex(), BKE_modifier_copydata_generic(), BKE_modifier_couldbe_cage(), BKE_modifier_deform_verts(), BKE_modifier_deform_vertsEM(), BKE_modifier_depends_ontime(), BKE_modifier_free_ex(), BKE_modifier_is_correctable_deformed(), BKE_modifier_is_enabled(), BKE_modifier_is_non_geometrical(), BKE_modifier_is_same_topology(), BKE_modifier_modify_mesh(), BKE_modifier_supports_cage(), BKE_modifier_supports_mapping(), BKE_modifier_type_panel_id(), BKE_modifier_unique_name(), BKE_modifiers_foreach_ID_link(), BKE_modifiers_foreach_tex_link(), BKE_modifiers_get_cage_index(), BKE_multires_create_deformed_base_mesh_vert_coords(), BKE_multires_create_mesh(), BKE_object_copy_modifier(), BKE_object_is_deform_modified(), BKE_object_support_modifier_type_check(), BKE_particlesystem_id_loop(), BKE_sculpt_get_first_deform_matrices(), blo_do_versions_pre250(), blender::deg::DepsgraphRelationBuilder::build_object_modifiers(), buttons_texture_modifier_foreach(), blender::ed::sculpt_paint::dyntopo::check_attribute_warning(), crazyspace_modifier_supports_deform(), crazyspace_modifier_supports_deform_matrices(), blender::ed::object::create_applied_mesh_for_modifier(), curve_calc_modifiers_post(), curve_get_tessellate_point(), curves_evaluate_modifiers(), ED_spacetype_buttons(), blender::bke::editbmesh_calc_modifiers(), blender::bke::editbmesh_modifier_is_enabled(), grease_pencil_evaluate_modifiers(), blender::bke::greasepencil::convert::legacy_object_modifier_common(), blender::bke::mesh_calc_modifiers(), blender::ed::object::modifier_add(), blender::ed::object::modifier_add_itemf(), modifier_allocate_and_init(), blender::ed::object::modifier_apply_exec_ex(), blender::ed::object::modifier_apply_obdata(), blender::ed::object::modifier_apply_shape(), blender::ed::object::modifier_copy_to_object(), blender::bke::modifier_modify_mesh_and_geometry_set(), modifier_panel_header(), object_foreach_cache(), blender::ed::object::object_modifier_check_move_after(), blender::ed::object::object_modifier_check_move_before(), pointcloud_evaluate_modifiers(), blender::deg::ObjectRuntimeBackup::restore_modifier_runtime_data(), sculpt_modifiers_active(), blender::ed::outliner::tree_element_get_icon(), uiTemplateModifiers(), and volume_evaluate_modifiers().

◆ BKE_modifier_get_original()

◆ BKE_modifier_init()

◆ BKE_modifier_is_correctable_deformed()

◆ BKE_modifier_is_enabled()

bool BKE_modifier_is_enabled ( const Scene * scene,
ModifierData * md,
int required_mode )

Check whether is enabled.

Parameters
sceneCurrent scene, may be NULL, in which case is_disabled callback of the modifier is never called.

Definition at line 513 of file blenkernel/intern/modifier.cc.

References BKE_modifier_get_info(), eModifierMode_DisableTemporary, eModifierMode_Editmode, eModifierMode_Render, eModifierTypeFlag_SupportsEditmode, ModifierTypeInfo::flags, ModifierTypeInfo::is_disabled, ModifierData::mode, and ModifierData::type.

Referenced by blender::ed::object::bake_simulation::bake_single_node_gather_bake_request(), BKE_crazyspace_build_sculpt(), BKE_curve_calc_modifiers_pre(), BKE_modifier_calc_data_masks(), BKE_modifiers_is_correctable_deformed(), BKE_multires_create_deformed_base_mesh_vert_coords(), BKE_object_is_deform_modified(), BKE_object_is_modified(), BKE_sculpt_get_first_deform_matrices(), blender::ed::sculpt_paint::dyntopo::check_attribute_warning(), blender::ed::object::bake_simulation::collect_simulations_to_bake(), blender::ed::object::correctivesmooth_bind_exec(), blender::ed::object::create_applied_mesh_for_modifier(), curve_calc_modifiers_post(), curve_get_tessellate_point(), curves_evaluate_modifiers(), do_curve_implicit_mesh_conversion(), blender::draw::drw_volume_object_mesh_init(), drw_volume_object_mesh_init(), blender::bke::editbmesh_modifier_is_enabled(), find_multires_modifier_before(), blender::io::usd::get_enabled_modifier(), get_multires_modifier(), blender::io::SubdivModifierDisabler::get_subdiv_modifier(), grease_pencil_evaluate_modifiers(), is_disabled(), lineart_mod_is_disabled(), blender::bke::mesh_calc_modifiers(), modifier_get_last_enabled_for_mode(), multires_flush_sculpt_updates(), blender::ed::object::multiresbake_check(), blender::workbench::Instance::object_sync(), OVERLAY_extra_cache_populate(), pointcloud_evaluate_modifiers(), sculpt_modifiers_active(), sculpt_multires_modifier_get(), and volume_evaluate_modifiers().

◆ BKE_modifier_is_non_geometrical()

bool BKE_modifier_is_non_geometrical ( ModifierData * md)

◆ BKE_modifier_is_nonlocal_in_liboverride()

bool BKE_modifier_is_nonlocal_in_liboverride ( const Object * ob,
const ModifierData * md )

Check whether given modifier is not local (i.e. from linked data) when the object is a library override.

Parameters
mdMay be NULL, in which case we consider it as a non-local modifier case.

Definition at line 537 of file blenkernel/intern/modifier.cc.

References eModifierFlag_OverrideLibrary_Local, ModifierData::flag, and ID_IS_OVERRIDE_LIBRARY.

Referenced by blender::ed::object::edit_modifier_poll_generic().

◆ BKE_modifier_is_same_topology()

◆ BKE_modifier_mdef_compact_influences()

◆ BKE_modifier_modify_mesh()

◆ BKE_modifier_new()

◆ BKE_modifier_panel_expand()

void BKE_modifier_panel_expand ( ModifierData * md)

◆ BKE_modifier_path_init()

void BKE_modifier_path_init ( char * path,
int path_maxncpy,
const char * name )

Initializes path with either the blend file or temporary directory.

Definition at line 862 of file blenkernel/intern/modifier.cc.

References BKE_main_blendfile_path_from_global(), BKE_tempdir_session, and BLI_path_join.

Referenced by BKE_fluid_modifier_create_type_data(), dynamicPaint_createNewSurface(), fluid_validatepaths(), and init_data().

◆ BKE_modifier_path_relbase()

const char * BKE_modifier_path_relbase ( Main * bmain,
Object * ob )

◆ BKE_modifier_path_relbase_from_global()

const char * BKE_modifier_path_relbase_from_global ( Object * ob)

Definition at line 857 of file blenkernel/intern/modifier.cc.

References BKE_modifier_path_relbase(), and G_MAIN.

Referenced by fluid_bake_startjob().

◆ BKE_modifier_remove_from_list()

◆ BKE_modifier_set_error()

◆ BKE_modifier_set_warning()

void void BKE_modifier_set_warning ( const Object * ob,
ModifierData * md,
const char * format,
... )

◆ BKE_modifier_supports_cage()

◆ BKE_modifier_supports_mapping()

◆ BKE_modifier_type_panel_id()

void BKE_modifier_type_panel_id ( ModifierType type,
char * r_idname )

Get the idname of the modifier type's panel, which was defined in the panel_register callback.

Definition at line 123 of file blenkernel/intern/modifier.cc.

References BKE_modifier_get_info(), BLI_string_join, ModifierTypeInfo::idname, PanelType::idname, and MODIFIER_TYPE_PANEL_PREFIX.

Referenced by modifier_panel_id(), and modifier_panel_register().

◆ BKE_modifier_unique_name()

◆ BKE_modifiers_clear_errors()

◆ BKE_modifiers_findby_name()

◆ BKE_modifiers_findby_persistent_uid()

ModifierData * BKE_modifiers_findby_persistent_uid ( const Object * ob,
int persistent_uid )

◆ BKE_modifiers_findby_type()

ModifierData * BKE_modifiers_findby_type ( const Object * ob,
ModifierType type )

Definition at line 245 of file blenkernel/intern/modifier.cc.

References LISTBASE_FOREACH, and Object::modifiers.

Referenced by add_collision_object(), add_verts_to_dgroups(), blender::ed::object::bake(), BKE_collider_cache_create(), BKE_object_copy_modifier(), BKE_object_modifier_update_subframe(), blo_do_versions_250(), blo_do_versions_pre250(), boid_find_ground(), buttons_context(), ccd_mesh_make(), ccd_mesh_update(), blender::ed::object::check_force_modifiers(), blender::ed::sculpt_paint::cloth::cloth_brush_collider_cache_create(), cloth_bvh_collision(), cloth_bvh_objcollisions_resolve(), DEG_add_collision_relations(), blender::draw::drw_volume_object_mesh_init(), drw_volume_object_mesh_init(), dynamicpaint_bake_exec(), dynamicPaint_doStep(), ED_object_particle_edit_mode_supported(), fluid_free_exec(), fluid_initjob(), fluid_pause_exec(), blender::bke::get_orco_coords(), blender::io::usd::import_mesh_skel_bindings(), blender::io::hydra::VolumeModifierData::init(), blender::io::hydra::VolumeModifierData::is_volume_modifier(), blender::ed::object::modifier_add(), blender::ed::object::modifier_copy_to_object(), object_foreach_id(), object_remove_particle_system(), blender::draw::overlay::Fluids::object_sync(), blender::workbench::Instance::object_sync(), output_toggle_exec(), OVERLAY_extra_cache_populate(), particles_fluid_step(), precalculate_effector(), blender::io::usd::USDStageReader::process_armature_modifiers(), blender::io::usd::USDPointInstancerReader::set_collection(), surface_getBrushFlags(), surface_slot_add_exec(), surface_slot_remove_exec(), and type_toggle_exec().

◆ BKE_modifiers_foreach_ID_link()

◆ BKE_modifiers_foreach_tex_link()

void BKE_modifiers_foreach_tex_link ( Object * ob,
TexWalkFunc walk,
void * user_data )

◆ BKE_modifiers_get_cage_index()

int BKE_modifiers_get_cage_index ( const Scene * scene,
Object * ob,
int * r_lastPossibleCageIndex,
bool is_virtual )

◆ BKE_modifiers_get_virtual_modifierlist()

ModifierData * BKE_modifiers_get_virtual_modifierlist ( const Object * ob,
VirtualModifierData * data )

This is to include things that are not modifiers in the evaluation of the modifier stack, for example parenting to an armature.

Definition at line 604 of file blenkernel/intern/modifier.cc.

References VirtualModifierData::amd, BKE_key_from_object(), VirtualModifierData::cmd, Object::data, CurveModifierData::defaxis, ArmatureModifierData::deformflag, ELEM, eModifierMode_Editmode, eModifierMode_OnCage, ListBase::first, VirtualModifierData::lmd, ModifierData::mode, ArmatureModifierData::modifier, CurveModifierData::modifier, LatticeModifierData::modifier, ShapeKeyModifierData::modifier, Object::modifiers, ModifierData::next, OB_ARMATURE, OB_CURVES_LEGACY, OB_LATTICE, OB_MESH, OB_SHAPE_EDIT_MODE, ArmatureModifierData::object, CurveModifierData::object, LatticeModifierData::object, Object::parent, PARSKEL, Object::partype, Object::shapeflag, VirtualModifierData::smd, Object::trackflag, Object::type, and virtualModifierCommonData.

Referenced by BKE_crazyspace_build_sculpt(), BKE_crazyspace_get_first_deform_matrices_editbmesh(), BKE_curve_calc_modifiers_pre(), BKE_lattice_modifiers_calc(), BKE_modifiers_get_cage_index(), BKE_modifiers_is_correctable_deformed(), BKE_modifiers_is_deformed_by_armature(), BKE_modifiers_is_deformed_by_curve(), BKE_modifiers_is_deformed_by_lattice(), BKE_modifiers_is_deformed_by_meshdeform(), BKE_modifiers_uses_armature(), BKE_modifiers_uses_multires(), BKE_multires_create_deformed_base_mesh_vert_coords(), BKE_object_defgroup_validmap_get(), BKE_object_is_deform_modified(), BKE_object_is_modified(), BKE_sculpt_get_first_deform_matrices(), blender::ed::sculpt_paint::dyntopo::check_attribute_warning(), blender::ed::object::create_applied_mesh_for_modifier(), curve_calc_modifiers_post(), curve_get_tessellate_point(), curves_evaluate_modifiers(), ED_armature_pose_select_in_wpaint_mode(), blender::bke::editbmesh_calc_modifiers(), blender::ed::greasepencil::get_bone_deformed_vertex_group_names(), grease_pencil_evaluate_modifiers(), blender::bke::mesh_calc_modifiers(), multires_flush_sculpt_updates(), pointcloud_evaluate_modifiers(), blender::ed::object::posemode_set_for_weight_paint(), sculpt_modifiers_active(), sculpt_multires_modifier_get(), view3d_opengl_select_ex(), and volume_evaluate_modifiers().

◆ BKE_modifiers_is_correctable_deformed()

◆ BKE_modifiers_is_deformed_by_armature()

◆ BKE_modifiers_is_deformed_by_curve()

Object * BKE_modifiers_is_deformed_by_curve ( Object * ob)

Takes an object and returns its first selected curve, else just its curve. This should work for multiple curves per object.

Definition at line 726 of file blenkernel/intern/modifier.cc.

References Object::base_flag, BASE_SELECTED, BKE_modifiers_get_virtual_modifierlist(), eModifierType_Curve, ModifierData::next, CurveModifierData::object, and ModifierData::type.

Referenced by blender::ed::object::parent_set().

◆ BKE_modifiers_is_deformed_by_lattice()

Object * BKE_modifiers_is_deformed_by_lattice ( Object * ob)

Takes an object and returns its first selected lattice, else just its lattice. This should work for multiple lattices per object.

Definition at line 703 of file blenkernel/intern/modifier.cc.

References Object::base_flag, BASE_SELECTED, BKE_modifiers_get_virtual_modifierlist(), eModifierType_Lattice, ModifierData::next, LatticeModifierData::object, and ModifierData::type.

Referenced by loopcut_init(), and blender::ed::object::parent_set().

◆ BKE_modifiers_is_deformed_by_meshdeform()

◆ BKE_modifiers_persistent_uid_init()

◆ BKE_modifiers_persistent_uids_are_valid()

bool BKE_modifiers_persistent_uids_are_valid ( const Object & object)

Returns true when all the modifier identifiers are positive and unique. This should generally be true and should only be used by asserts.

Definition at line 1004 of file blenkernel/intern/modifier.cc.

References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), LISTBASE_FOREACH, and blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::size().

Referenced by object_copy_data().

◆ BKE_modifiers_test_object()

void BKE_modifiers_test_object ( Object * ob)

◆ BKE_modifiers_uses_armature()

◆ BKE_modifiers_uses_multires()

◆ ENUM_OPERATORS()

ENUM_OPERATORS ( ModifierApplyFlag ,
MOD_APPLY_TO_ORIGINAL  )