Blender
V3.3
|
#include <float.h>
#include <math.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "DNA_armature_types.h"
#include "DNA_cloth_types.h"
#include "DNA_dynamicpaint_types.h"
#include "DNA_fluid_types.h"
#include "DNA_gpencil_modifier_types.h"
#include "DNA_mesh_types.h"
#include "DNA_object_fluidsim_types.h"
#include "DNA_object_force_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "BLI_linklist.h"
#include "BLI_listbase.h"
#include "BLI_path_util.h"
#include "BLI_session_uuid.h"
#include "BLI_string.h"
#include "BLI_string_utils.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "BKE_DerivedMesh.h"
#include "BKE_appdir.h"
#include "BKE_editmesh.h"
#include "BKE_editmesh_cache.h"
#include "BKE_effect.h"
#include "BKE_fluid.h"
#include "BKE_global.h"
#include "BKE_gpencil_modifier.h"
#include "BKE_idtype.h"
#include "BKE_key.h"
#include "BKE_lib_id.h"
#include "BKE_lib_query.h"
#include "BKE_mesh.h"
#include "BKE_mesh_wrapper.h"
#include "BKE_multires.h"
#include "BKE_object.h"
#include "BKE_pointcache.h"
#include "BKE_main.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
#include "MOD_modifiertypes.h"
#include "BLO_read_write.h"
#include "CLG_log.h"
Go to the source code of this file.
Macros | |
#define | DNA_DEPRECATED_ALLOW |
Variables | |
static CLG_LogRef | LOG = {"bke.modifier"} |
static ModifierTypeInfo * | modifier_types [NUM_MODIFIER_TYPES] = {NULL} |
static VirtualModifierData | virtualModifierCommonData |
Modifier stack implementation. BKE_modifier.h contains the function prototypes for this file.
Definition in file blenkernel/intern/modifier.c.
#define DNA_DEPRECATED_ALLOW |
Definition at line 11 of file blenkernel/intern/modifier.c.
void BKE_modifier_blend_read_data | ( | BlendDataReader * | reader, |
ListBase * | lb, | ||
Object * | ob | ||
) |
Definition at line 1317 of file blenkernel/intern/modifier.c.
References BKE_effector_add_weights(), BKE_modifier_get_info(), BKE_modifier_session_uuid_generate(), BKE_ptcache_blend_read_data(), BKE_ptcache_free(), ModifierTypeInfo::blendRead, BLI_listbase_clear(), BLI_rw_mutex_alloc(), BLO_read_data_address, BLO_read_data_reports(), BLO_read_get_new_data_address(), BLO_read_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, ModifierData::error, ListBase::first, PointCache::flag, DynamicPaintCanvasSettings::flags, FluidModifierData::flow, FluidDomainSettings::fluid, FluidDomainSettings::fluid_mutex, FluidDomainSettings::fmd, FluidFlowSettings::fmd, FluidEffectorSettings::fmd, ClothModifierData::hairdata, Object::id, LISTBASE_FOREACH, FluidFlowSettings::mesh, FluidEffectorSettings::mesh, MOD_DPAINT_BAKING, MOD_FLUID_TYPE_DOMAIN, MOD_FLUID_TYPE_EFFEC, MOD_FLUID_TYPE_FLOW, modifier_replace_with_fluid(), ModifierData::name, ID::name, NULL, FluidFlowSettings::numverts, FluidEffectorSettings::numverts, DynamicPaintBrushSettings::paint_ramp, DynamicPaintCanvasSettings::pmd, DynamicPaintBrushSettings::pmd, FluidDomainSettings::point_cache, ClothModifierData::point_cache, ClothSimSettings::presets, DynamicPaintBrushSettings::psys, FluidFlowSettings::psys, PTCACHE_FAKE_SMOKE, FluidDomainSettings::ptcaches, ClothModifierData::ptcaches, ClothSimSettings::reset, RPT_WARNING, ModifierData::runtime, ClothModifierData::sim_parms, ClothModifierData::solver_result, surface, 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, TIP_, ModifierData::type, FluidModifierData::type, DynamicPaintBrushSettings::vel_ramp, FluidFlowSettings::verts_old, and FluidEffectorSettings::verts_old.
Referenced by object_blend_read_data().
void BKE_modifier_blend_read_lib | ( | BlendLibReader * | reader, |
Object * | ob | ||
) |
Definition at line 1506 of file blenkernel/intern/modifier.c.
References BKE_modifiers_foreach_ID_link(), BKE_object_modifiers_lib_link_common(), eModifierFlag_OverrideLibrary_Local, ID_IS_LINKED, LISTBASE_FOREACH, mod(), and Object::modifiers.
Referenced by object_blend_read_lib().
void BKE_modifier_blend_write | ( | BlendWriter * | writer, |
const ID * | id_owner, | ||
ListBase * | modbase | ||
) |
Definition at line 1097 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), BKE_ptcache_add(), BKE_ptcache_blend_write(), BKE_ptcache_free_list(), ModifierTypeInfo::blendWrite, BLO_write_struct, BLO_write_struct_by_name(), DynamicPaintModifierData::brush, DynamicPaintModifierData::canvas, FluidDomainSettings::coba, ClothModifierData::coll_parms, DATA, FluidModifierData::domain, FluidModifierData::effector, ClothSimSettings::effector_weights, FluidDomainSettings::effector_weights, eModifierType_Cloth, eModifierType_Collision, eModifierType_DynamicPaint, eModifierType_Fluid, eModifierType_Fluidsim, PointCache::flag, FluidModifierData::flow, FluidsimModifierData::fss, LISTBASE_FOREACH, MOD_FLUID_TYPE_DOMAIN, MOD_FLUID_TYPE_EFFEC, MOD_FLUID_TYPE_FLOW, NULL, DynamicPaintBrushSettings::paint_ramp, FluidDomainSettings::point_cache, PTCACHE_DISK_CACHE, PTCACHE_FAKE_SMOKE, FluidDomainSettings::ptcaches, ClothModifierData::ptcaches, ClothModifierData::sim_parms, PointCache::step, ModifierTypeInfo::structName, surface, DynamicPaintCanvasSettings::surfaces, ModifierData::type, FluidModifierData::type, DynamicPaintBrushSettings::vel_ramp, writestruct, CollisionModifierData::x, and CollisionModifierData::xnew.
CDMaskLink* BKE_modifier_calc_data_masks | ( | const struct Scene * | scene, |
Object * | ob, | ||
ModifierData * | md, | ||
CustomData_MeshMasks * | final_datamask, | ||
int | required_mode, | ||
ModifierData * | previewmd, | ||
const CustomData_MeshMasks * | previewmask | ||
) |
Definition at line 604 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), BKE_modifier_is_enabled(), BLI_linklist_reverse(), CD_MASK_ORCO, CustomData_MeshMasks_update(), eModifierTypeType_OnlyDeform, CDMaskLink::mask, MEM_callocN, CDMaskLink::next, ModifierData::next, NULL, blender::meshintersect::prev(), ModifierTypeInfo::requiredDataMask, scene, ModifierTypeInfo::type, ModifierData::type, and CustomData_MeshMasks::vmask.
Definition at line 1074 of file blenkernel/intern/modifier.c.
References BLI_gset_free(), BLI_gset_insert(), BLI_gset_lookup(), BLI_gset_new(), BLI_session_uuid_ghash_compare(), BLI_session_uuid_ghash_hash(), BLI_session_uuid_is_generated(), Object::id, LISTBASE_FOREACH, Object::modifiers, ModifierData::name, ID::name, NULL, and ModifierData::session_uuid.
ModifierData* BKE_modifier_copy_ex | ( | const ModifierData * | md, |
int | flag | ||
) |
Definition at line 325 of file blenkernel/intern/modifier.c.
References BKE_modifier_copydata_ex(), BLI_strncpy(), modifier_allocate_and_init(), ModifierData::name, and ModifierData::type.
void BKE_modifier_copydata | ( | const ModifierData * | md, |
ModifierData * | target | ||
) |
Definition at line 398 of file blenkernel/intern/modifier.c.
References BKE_modifier_copydata_ex().
void BKE_modifier_copydata_ex | ( | const ModifierData * | md, |
ModifierData * | target, | ||
const int | flag | ||
) |
Definition at line 368 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), BKE_modifier_session_uuid_generate(), ModifierTypeInfo::copyData, ModifierData::flag, ModifierTypeInfo::foreachIDLink, LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, ModifierData::mode, modifier_copy_data_id_us_cb(), NULL, ModifierData::session_uuid, ModifierData::type, and ModifierData::ui_expand_flag.
Referenced by BKE_modifier_copy_ex(), and BKE_modifier_copydata().
void BKE_modifier_copydata_generic | ( | const ModifierData * | md_src, |
ModifierData * | md_dst, | ||
const int | UNUSEDflag | ||
) |
Definition at line 335 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), BLI_assert, ModifierTypeInfo::freeData, NULL, ModifierData::runtime, ModifierTypeInfo::structSize, and ModifierData::type.
bool BKE_modifier_couldbe_cage | ( | struct Scene * | scene, |
ModifierData * | md | ||
) |
Definition at line 411 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), BKE_modifier_supports_mapping(), eModifierMode_Editmode, eModifierMode_Realtime, ModifierTypeInfo::isDisabled, ModifierData::mode, scene, and ModifierData::type.
Referenced by modifier_panel_header().
void BKE_modifier_deform_verts | ( | ModifierData * | md, |
const ModifierEvalContext * | ctx, | ||
Mesh * | me, | ||
float(*) | vertexCos[3], | ||
int | numVerts | ||
) |
Definition at line 1009 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), ModifierTypeInfo::deformVerts, ModifierTypeInfo::dependsOnNormals, modwrap_dependsOnNormals(), and ModifierData::type.
void BKE_modifier_deform_vertsEM | ( | ModifierData * | md, |
const ModifierEvalContext * | ctx, | ||
struct BMEditMesh * | em, | ||
Mesh * | me, | ||
float(*) | vertexCos[3], | ||
int | numVerts | ||
) |
Definition at line 1022 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), ModifierTypeInfo::deformVertsEM, ModifierTypeInfo::dependsOnNormals, modwrap_dependsOnNormals(), and ModifierData::type.
bool BKE_modifier_depends_ontime | ( | Scene * | scene, |
ModifierData * | md | ||
) |
Definition at line 236 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), ModifierTypeInfo::dependsOnTime, scene, and ModifierData::type.
Referenced by blender::deg::DepsgraphRelationBuilder::build_object_data_geometry().
void BKE_modifier_free | ( | ModifierData * | md | ) |
Definition at line 198 of file blenkernel/intern/modifier.c.
References BKE_modifier_free_ex().
Referenced by bake(), BKE_modifier_init(), BKE_particle_system_blend_read_lib(), ED_object_modifier_apply(), free_hair(), object_hook_remove_exec(), object_modifier_remove(), object_remove_parent_deform_modifiers(), object_remove_particle_system(), psys_free(), and remove_particle_systems_from_object().
void BKE_modifier_free_ex | ( | ModifierData * | md, |
const int | flag | ||
) |
Definition at line 178 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), ModifierData::error, ModifierTypeInfo::foreachIDLink, ModifierTypeInfo::freeData, LIB_ID_CREATE_NO_USER_REFCOUNT, MEM_freeN, modifier_free_data_id_us_cb(), NULL, and ModifierData::type.
Referenced by BKE_modifier_free(), and BKE_object_free_modifiers().
void BKE_modifier_free_temporary_data | ( | ModifierData * | md | ) |
Definition at line 908 of file blenkernel/intern/modifier.c.
References eModifierType_Armature, MEM_SAFE_FREE, ModifierData::type, and ArmatureModifierData::vert_coords_prev.
Referenced by mesh_calc_modifiers().
struct ModifierData* BKE_modifier_get_evaluated | ( | Depsgraph * | depsgraph, |
Object * | object, | ||
ModifierData * | md | ||
) |
Definition at line 1063 of file blenkernel/intern/modifier.c.
References BKE_modifiers_findby_session_uuid(), DEG_get_evaluated_object(), depsgraph, and ModifierData::session_uuid.
Referenced by correctivesmooth_bind_exec(), laplaciandeform_bind_exec(), meshdeform_bind_exec(), object_force_modifier_bind_simple_options(), remove_tagged_keys(), and surfacedeform_bind_exec().
Get evaluated mesh for other evaluated object, which is used as an operand for the modifier, e.g. second operand for boolean modifier. Note that modifiers in stack always get fully evaluated COW ID pointers, never original ones. Makes things simpler.
Definition at line 1038 of file blenkernel/intern/modifier.c.
References BKE_editmesh_from_object(), BKE_object_get_editmesh_eval_final(), BKE_object_get_evaluated_mesh(), Object::mode, NULL, OB_MESH, OB_MODE_EDIT, and Object::type.
Referenced by blender::bke::add_final_mesh_as_geometry_component(), arrayModifier_doArray(), bakeModifier(), BKE_gpencil_cache_data_init(), BKE_object_data_transfer_ex(), mesh_to_volume(), meshdeformModifier_do(), modifyMesh(), blender::nodes::node_geo_deform_curves_on_surface_cc::node_geo_exec(), shrinkwrap_calc_normal_projection(), shrinkwrapModifier_deform(), blender::ed::spreadsheet::spreadsheet_get_display_geometry_set(), and surfacedeformModifier_do().
const ModifierTypeInfo* BKE_modifier_get_info | ( | ModifierType | type | ) |
Definition at line 109 of file blenkernel/intern/modifier.c.
References modifier_types, NULL, NUM_MODIFIER_TYPES, and type.
Referenced by add_hook_object(), BKE_crazyspace_build_sculpt(), BKE_crazyspace_get_first_deform_matrices_editbmesh(), BKE_curve_calc_modifiers_pre(), BKE_lattice_modifiers_calc(), BKE_mesh_create_derived_for_modifier(), 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_preview(), 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_data_geometry(), crazyspace_modifier_supports_deform(), crazyspace_modifier_supports_deform_matrices(), curve_calc_modifiers_post(), curve_get_tessellate_point(), curves_evaluate_modifiers(), ED_object_modifier_add(), ED_object_modifier_move_down(), ED_object_modifier_move_up(), ED_spacetype_buttons(), editbmesh_calc_modifiers(), editbmesh_modifier_is_enabled(), mesh_calc_modifiers(), modifier_add_itemf(), modifier_allocate_and_init(), modifier_apply_exec_ex(), modifier_apply_obdata(), modifier_apply_shape(), modifier_copy_to_selected_exec(), modifier_modify_mesh_and_geometry_set(), modifier_panel_header(), pointcloud_evaluate_modifiers(), blender::deg::ObjectRuntimeBackup::restore_modifier_runtime_data(), sculpt_modifiers_active(), tree_element_get_icon(), uiTemplateModifiers(), and volume_evaluate_modifiers().
ModifierData* BKE_modifier_get_last_preview | ( | const struct Scene * | scene, |
ModifierData * | md, | ||
int | required_mode | ||
) |
Definition at line 672 of file blenkernel/intern/modifier.c.
References BKE_modifier_is_enabled(), BKE_modifier_is_preview(), eModifierMode_Editmode, eModifierMode_Realtime, ModifierData::next, NULL, and scene.
Referenced by mesh_calc_modifiers().
ModifierData* BKE_modifier_get_original | ( | const Object * | object, |
ModifierData * | md | ||
) |
Definition at line 1057 of file blenkernel/intern/modifier.c.
References BKE_modifiers_findby_session_uuid(), DEG_get_original_object(), and ModifierData::session_uuid.
Referenced by BKE_modifier_set_error(), and BKE_modifier_set_warning().
Definition at line 79 of file blenkernel/intern/modifier.c.
References VirtualModifierData::amd, BKE_modifier_free(), BKE_modifier_new(), VirtualModifierData::cmd, eModifierMode_Virtual, eModifierType_Armature, eModifierType_Curve, eModifierType_Lattice, eModifierType_ShapeKey, VirtualModifierData::lmd, ModifierData::mode, LatticeModifierData::modifier, CurveModifierData::modifier, ArmatureModifierData::modifier, ShapeKeyModifierData::modifier, modifier_type_init(), modifier_types, VirtualModifierData::smd, and virtualModifierCommonData.
Referenced by main(), and BlendfileLoadingBaseTest::SetUpTestCase().
bool BKE_modifier_is_correctable_deformed | ( | ModifierData * | md | ) |
Definition at line 882 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), ModifierTypeInfo::deformMatricesEM, NULL, and ModifierData::type.
Referenced by BKE_crazyspace_get_first_deform_matrices_editbmesh(), and BKE_modifiers_is_correctable_deformed().
bool BKE_modifier_is_enabled | ( | const struct Scene * | scene, |
struct ModifierData * | md, | ||
int | required_mode | ||
) |
Check whether is enabled.
scene | Current scene, may be NULL, in which case isDisabled callback of the modifier is never called. |
Definition at line 576 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), eModifierMode_DisableTemporary, eModifierMode_Editmode, eModifierMode_Render, eModifierTypeFlag_SupportsEditmode, ModifierTypeInfo::flags, ModifierTypeInfo::isDisabled, ModifierData::mode, NULL, scene, and ModifierData::type.
Referenced by BKE_crazyspace_build_sculpt(), BKE_curve_calc_modifiers_pre(), BKE_mesh_create_derived_for_modifier(), BKE_modifier_calc_data_masks(), BKE_modifier_get_last_preview(), 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(), BKE_sculpt_multires_active(), correctivesmooth_bind_exec(), curve_calc_modifiers_post(), curve_get_tessellate_point(), curves_evaluate_modifiers(), do_curve_implicit_mesh_conversion(), drw_volume_object_mesh_init(), editbmesh_modifier_is_enabled(), find_multires_modifier_before(), get_multires_modifier(), blender::io::alembic::SubdivModifierDisabler::get_subdiv_modifier(), isDisabled(), mesh_calc_modifiers(), modifier_get_last_enabled_for_mode(), multiresbake_check(), OVERLAY_extra_cache_populate(), pointcloud_evaluate_modifiers(), sculpt_modifiers_active(), volume_evaluate_modifiers(), and workbench_cache_populate().
bool BKE_modifier_is_non_geometrical | ( | ModifierData * | md | ) |
Definition at line 426 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), eModifierTypeType_NonGeometrical, ModifierTypeInfo::type, and ModifierData::type.
Referenced by modifier_ops_extra_draw().
bool BKE_modifier_is_nonlocal_in_liboverride | ( | const Object * | ob, |
const ModifierData * | md | ||
) |
Definition at line 598 of file blenkernel/intern/modifier.c.
References eModifierFlag_OverrideLibrary_Local, ModifierData::flag, ID_IS_OVERRIDE_LIBRARY, and NULL.
bool BKE_modifier_is_preview | ( | ModifierData * | md | ) |
Definition at line 251 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), eModifierMode_Realtime, eModifierTypeFlag_UsesPreview, eModifierTypeType_Constructive, ModifierTypeInfo::flags, ModifierData::mode, ModifierTypeInfo::type, and ModifierData::type.
Referenced by BKE_modifier_get_last_preview().
bool BKE_modifier_is_same_topology | ( | ModifierData * | md | ) |
Definition at line 420 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), ELEM, eModifierTypeType_NonGeometrical, eModifierTypeType_OnlyDeform, ModifierTypeInfo::type, and ModifierData::type.
Referenced by ED_object_modifier_apply(), modifier_apply_poll(), modifier_apply_shape(), and modifier_ops_extra_draw().
struct Mesh* BKE_modifier_modify_mesh | ( | ModifierData * | md, |
const ModifierEvalContext * | ctx, | ||
struct Mesh * | me | ||
) |
Definition at line 991 of file blenkernel/intern/modifier.c.
References BKE_mesh_wrapper_ensure_mdata(), BKE_modifier_get_info(), ModifierTypeInfo::dependsOnNormals, eModifierTypeFlag_AcceptsBMesh, ModifierTypeInfo::flags, ME_WRAPPER_TYPE_BMESH, ModifierTypeInfo::modifyMesh, modwrap_dependsOnNormals(), Mesh::runtime, ModifierData::type, and Mesh_Runtime::wrapper_type.
ModifierData* BKE_modifier_new | ( | int | type | ) |
Definition at line 158 of file blenkernel/intern/modifier.c.
References BKE_modifier_session_uuid_generate(), modifier_allocate_and_init(), and type.
Referenced by blender::io::usd::USDGeomReader::add_cache_modifier(), add_hook_object(), blender::io::usd::USDGeomReader::add_subdiv_modifier(), blender::io::alembic::AbcObjectReader::addCacheModifier(), BKE_modifier_init(), BKE_object_copy_modifier(), BKE_object_copy_particlesystem(), blo_do_versions_250(), blo_do_versions_pre250(), copy_particle_systems_to_object(), do_hair_dynamics(), do_versions_after_linking_300(), ED_object_modifier_add(), ED_object_modifier_copy(), modifier_replace_with_fluid(), object_add_or_copy_particle_system(), object_blend_read_data(), and skin_armature_create_exec().
void BKE_modifier_panel_expand | ( | ModifierData * | md | ) |
Definition at line 127 of file blenkernel/intern/modifier.c.
References ModifierData::ui_expand_flag, and UI_PANEL_DATA_EXPAND_ROOT.
Referenced by outliner_set_properties_tab().
void BKE_modifier_path_init | ( | char * | path, |
int | path_maxlen, | ||
const char * | name | ||
) |
Initializes path
with either the blend file or temporary directory.
Definition at line 956 of file blenkernel/intern/modifier.c.
References BKE_main_blendfile_path_from_global(), BKE_tempdir_session, and BLI_join_dirfile().
Referenced by BKE_fluid_modifier_create_type_data(), dynamicPaint_createNewSurface(), fluid_validatepaths(), and initData().
Definition at line 937 of file blenkernel/intern/modifier.c.
References BKE_tempdir_session, Main::filepath, Object::id, ID_BLEND_PATH, and ID_IS_LINKED.
Referenced by BKE_modifier_path_relbase_from_global(), fluid_validatepaths(), and ocean_bake_exec().
const char* BKE_modifier_path_relbase_from_global | ( | Object * | ob | ) |
Definition at line 951 of file blenkernel/intern/modifier.c.
References BKE_modifier_path_relbase(), and G_MAIN.
Referenced by fluid_bake_startjob().
void BKE_modifier_remove_from_list | ( | struct Object * | ob, |
struct ModifierData * | md | ||
) |
Use instead of BLI_remlink
when the object's active modifier should change.
Definition at line 203 of file blenkernel/intern/modifier.c.
References BKE_object_modifier_set_active(), BLI_assert, BLI_findindex(), BLI_remlink(), eModifierFlag_Active, ModifierData::flag, Object::modifiers, ModifierData::next, NULL, and ModifierData::prev.
Referenced by BKE_particle_system_blend_read_lib(), ED_object_modifier_apply(), object_hook_remove_exec(), object_modifier_remove(), object_remove_parent_deform_modifiers(), and object_remove_particle_system().
void BKE_modifier_session_uuid_generate | ( | ModifierData * | md | ) |
Definition at line 220 of file blenkernel/intern/modifier.c.
References BLI_session_uuid_generate(), and ModifierData::session_uuid.
Referenced by BKE_modifier_blend_read_data(), BKE_modifier_copydata_ex(), and BKE_modifier_new().
void BKE_modifier_set_error | ( | const Object * | ob, |
ModifierData * | md, | ||
const char * | _format, | ||
... | |||
) |
Definition at line 432 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_original(), BLI_assert, BLI_strdup(), buffer, CLOG_ERROR, eModifierMode_Virtual, ModifierData::error, Object::id, LOG, MEM_freeN, ModifierData::mode, ModifierData::name, ID::name, NULL, and TIP_.
void BKE_modifier_set_warning | ( | const struct Object * | ob, |
struct ModifierData * | md, | ||
const char * | _format, | ||
... | |||
) |
Definition at line 459 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_original(), BLI_assert, BLI_strdup(), buffer, eModifierMode_Virtual, ModifierData::error, MEM_freeN, ModifierData::mode, NULL, TIP_, and UNUSED_VARS_NDEBUG.
bool BKE_modifier_supports_cage | ( | struct Scene * | scene, |
ModifierData * | md | ||
) |
Definition at line 403 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), BKE_modifier_supports_mapping(), eModifierTypeFlag_SupportsEditmode, ModifierTypeInfo::flags, ModifierTypeInfo::isDisabled, scene, and ModifierData::type.
Referenced by modifier_panel_header().
bool BKE_modifier_supports_mapping | ( | ModifierData * | md | ) |
Definition at line 243 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), eModifierTypeFlag_SupportsMapping, eModifierTypeType_OnlyDeform, ModifierTypeInfo::flags, ModifierTypeInfo::type, and ModifierData::type.
Referenced by BKE_modifier_couldbe_cage(), BKE_modifier_supports_cage(), BKE_modifiers_get_cage_index(), and mesh_calc_modifiers().
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 panelRegister callback.
Definition at line 119 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), MODIFIER_TYPE_PANEL_PREFIX, ModifierTypeInfo::name, and type.
Referenced by modifier_panel_id(), and modifier_panel_register().
bool BKE_modifier_unique_name | ( | ListBase * | modifiers, |
ModifierData * | md | ||
) |
Definition at line 225 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), BLI_uniquename(), DATA_, ModifierTypeInfo::name, ModifierData::name, and ModifierData::type.
Referenced by add_hook_object(), BKE_object_copy_modifier(), blo_do_versions_270(), blo_do_versions_pre250(), copy_particle_systems_to_object(), do_versions_after_linking_300(), ED_object_modifier_add(), ED_object_modifier_copy(), object_add_or_copy_particle_system(), and object_blend_read_data().
Definition at line 293 of file blenkernel/intern/modifier.c.
References LISTBASE_FOREACH, MEM_freeN, Object::modifiers, and NULL.
Referenced by BKE_crazyspace_get_first_deform_matrices_editbmesh(), BKE_curve_calc_modifiers_pre(), curves_evaluate_modifiers(), editbmesh_calc_modifiers(), mesh_calc_modifiers(), pointcloud_evaluate_modifiers(), and volume_evaluate_modifiers().
ModifierData* BKE_modifiers_findby_name | ( | const Object * | ob, |
const char * | name | ||
) |
Definition at line 278 of file blenkernel/intern/modifier.c.
References BLI_findstring(), and Object::modifiers.
ModifierData* BKE_modifiers_findby_session_uuid | ( | const Object * | ob, |
const SessionUUID * | session_uuid | ||
) |
Definition at line 283 of file blenkernel/intern/modifier.c.
References BLI_session_uuid_is_equal(), LISTBASE_FOREACH, Object::modifiers, and NULL.
Referenced by BKE_modifier_get_evaluated(), and BKE_modifier_get_original().
ModifierData* BKE_modifiers_findby_type | ( | const Object * | ob, |
ModifierType | type | ||
) |
Definition at line 268 of file blenkernel/intern/modifier.c.
References LISTBASE_FOREACH, Object::modifiers, NULL, and type.
Referenced by BKE_modifiers_is_cloth_enabled(), BKE_modifiers_is_modifier_enabled(), BKE_modifiers_is_particle_enabled(), and BKE_modifiers_is_softbody_enabled().
void BKE_modifiers_foreach_ID_link | ( | Object * | ob, |
IDWalkFunc | walk, | ||
void * | userData | ||
) |
Definition at line 303 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), ModifierTypeInfo::foreachIDLink, LISTBASE_FOREACH, and Object::modifiers.
Referenced by animdata_filter_ds_modifiers(), BKE_modifier_blend_read_lib(), blender::deg::DepsgraphNodeBuilder::build_object(), blender::deg::DepsgraphRelationBuilder::build_object(), object_blend_read_expand(), and object_foreach_id().
void BKE_modifiers_foreach_tex_link | ( | Object * | ob, |
TexWalkFunc | walk, | ||
void * | userData | ||
) |
Definition at line 314 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), ModifierTypeInfo::foreachTexLink, LISTBASE_FOREACH, and Object::modifiers.
Referenced by buttons_texture_users_from_context().
int BKE_modifiers_get_cage_index | ( | const Scene * | scene, |
Object * | ob, | ||
int * | r_lastPossibleCageIndex, | ||
bool | is_virtual | ||
) |
Definition at line 493 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), BKE_modifier_supports_mapping(), BKE_modifiers_get_virtual_modifierlist(), eModifierMode_DisableTemporary, eModifierMode_Editmode, eModifierMode_OnCage, eModifierMode_Realtime, eModifierTypeFlag_SupportsEditmode, ListBase::first, ModifierTypeInfo::flags, ModifierTypeInfo::isDisabled, ModifierData::mode, Object::modifiers, ModifierData::next, scene, and ModifierData::type.
ModifierData* BKE_modifiers_get_virtual_modifierlist | ( | const Object * | ob, |
VirtualModifierData * | virtualModifierData | ||
) |
Definition at line 691 of file blenkernel/intern/modifier.c.
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, LatticeModifierData::modifier, CurveModifierData::modifier, ArmatureModifierData::modifier, ShapeKeyModifierData::modifier, Object::modifiers, ModifierData::next, OB_ARMATURE, OB_CURVES_LEGACY, OB_LATTICE, OB_MESH, OB_SHAPE_EDIT_MODE, LatticeModifierData::object, CurveModifierData::object, ArmatureModifierData::object, Object::parent, PARSKEL, Object::partype, Object::shapeflag, VirtualModifierData::smd, Object::trackflag, Object::type, and virtualModifierCommonData.
Referenced by 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(), and BKE_modifiers_uses_multires().
Definition at line 555 of file blenkernel/intern/modifier.c.
References BKE_modifiers_findby_type(), eModifierMode_Realtime, eModifierMode_Render, eModifierType_Cloth, and ModifierData::mode.
Definition at line 888 of file blenkernel/intern/modifier.c.
References BKE_modifier_is_correctable_deformed(), BKE_modifier_is_enabled(), BKE_modifiers_get_virtual_modifierlist(), eModifierMode_Editmode, eModifierMode_Realtime, Object::mode, ModifierData::next, OB_MODE_EDIT, and scene.
Referenced by transform_convert_mesh_crazyspace_detect().
Takes an object and returns its first selected armature, else just its armature. This should work for multiple armatures per object.
Definition at line 734 of file blenkernel/intern/modifier.c.
References Object::base_flag, BASE_SELECTED, BKE_gpencil_modifiers_get_virtual_modifierlist(), BKE_modifiers_get_virtual_modifierlist(), eGpencilModifierType_Armature, eModifierType_Armature, GpencilModifierData::next, ModifierData::next, NULL, OB_GPENCIL, ArmatureGpencilModifierData::object, ArmatureModifierData::object, GpencilModifierData::type, ModifierData::type, and Object::type.
Referenced by BKE_object_pose_armature_get(), brush_draw_apply(), DRW_draw_select_loop(), ED_object_parent_set(), ED_object_vgroup_selection_itemf_helper(), ED_wpaint_ensure_data(), loopcut_init(), POSE_is_driven_by_active_armature(), transform_object_deform_pose_armature_get(), vgroup_sort_bone_hierarchy(), weight_from_bones_exec(), and weight_from_bones_poll().
Takes an object and returns its first selected curve, else just its curve. This should work for multiple curves per object.
Definition at line 825 of file blenkernel/intern/modifier.c.
References Object::base_flag, BASE_SELECTED, BKE_modifiers_get_virtual_modifierlist(), eModifierType_Curve, ModifierData::next, NULL, CurveModifierData::object, and ModifierData::type.
Referenced by ED_object_parent_set().
Takes an object and returns its first selected lattice, else just its lattice. This should work for multiple lattices per object.
Definition at line 802 of file blenkernel/intern/modifier.c.
References Object::base_flag, BASE_SELECTED, BKE_modifiers_get_virtual_modifierlist(), eModifierType_Lattice, ModifierData::next, NULL, LatticeModifierData::object, and ModifierData::type.
Referenced by ED_object_parent_set(), and loopcut_init().
Definition at line 779 of file blenkernel/intern/modifier.c.
References Object::base_flag, BASE_SELECTED, BKE_modifiers_get_virtual_modifierlist(), eModifierType_MeshDeform, ModifierData::next, NULL, MeshDeformModifierData::object, and ModifierData::type.
Referenced by POSE_is_driven_by_active_armature().
Definition at line 562 of file blenkernel/intern/modifier.c.
References BKE_modifiers_findby_type(), eModifierMode_Realtime, eModifierMode_Render, and ModifierData::mode.
Definition at line 569 of file blenkernel/intern/modifier.c.
References BKE_modifiers_findby_type(), eModifierMode_Realtime, eModifierMode_Render, eModifierType_ParticleSystem, and ModifierData::mode.
Definition at line 548 of file blenkernel/intern/modifier.c.
References BKE_modifiers_findby_type(), eModifierMode_Realtime, eModifierMode_Render, eModifierType_Softbody, and ModifierData::mode.
Ensure modifier correctness when changing ob->data
.
Definition at line 917 of file blenkernel/intern/modifier.c.
References eModifierType_Multires, ListBase::first, Object::modifiers, multiresModifier_set_levels_from_disps(), ModifierData::next, OB_MESH, ModifierData::type, and Object::type.
Referenced by BKE_mesh_assign_object(), and libblock_remap_data_postprocess_obdata_relink().
Definition at line 865 of file blenkernel/intern/modifier.c.
References BKE_modifiers_get_virtual_modifierlist(), Object::data, eModifierType_Armature, ModifierData::next, ArmatureModifierData::object, and ModifierData::type.
Referenced by ED_armature_bone_rename().
Definition at line 848 of file blenkernel/intern/modifier.c.
References BKE_modifiers_get_virtual_modifierlist(), eModifierType_Multires, ModifierData::next, NULL, MultiresModifierData::totlvl, and ModifierData::type.
Referenced by object_remesh_poll().
|
static |
Definition at line 134 of file blenkernel/intern/modifier.c.
References BKE_modifier_get_info(), BLI_strncpy(), DATA_, eModifierFlag_OverrideLibrary_Local, eModifierMode_Editmode, eModifierMode_Realtime, eModifierMode_Render, eModifierTypeFlag_EnableInEditmode, ModifierData::flag, ModifierTypeInfo::flags, ModifierTypeInfo::initData, MEM_callocN, ModifierData::mode, ModifierTypeInfo::name, ModifierData::name, ModifierTypeInfo::structName, ModifierTypeInfo::structSize, type, ModifierData::type, and ModifierData::ui_expand_flag.
Referenced by BKE_modifier_copy_ex(), and BKE_modifier_new().
|
static |
Definition at line 357 of file blenkernel/intern/modifier.c.
References id_us_plus(), IDWALK_CB_USER, and NULL.
Referenced by BKE_modifier_copydata_ex().
|
static |
Definition at line 1211 of file blenkernel/intern/modifier.c.
References BKE_fluid_modifier_create_type_data(), BKE_fluid_modifier_free(), type, and FluidModifierData::type.
Referenced by modifier_replace_with_fluid().
|
static |
Definition at line 167 of file blenkernel/intern/modifier.c.
References id_us_min(), IDWALK_CB_USER, and NULL.
Referenced by BKE_modifier_free_ex().
|
static |
Definition at line 1223 of file blenkernel/intern/modifier.c.
References BKE_fluid_domain_type_set(), BKE_fluid_effector_type_set(), BKE_fluid_flow_behavior_set(), BKE_fluid_flow_type_set(), BKE_modifier_new(), BLO_read_get_new_data_address(), FluidModifierData::domain, FluidModifierData::effector, eModifierType_Fluid, eModifierType_Fluidsim, ListBase::first, FluidModifierData::flow, FLUID_DOMAIN_TYPE_GAS, FLUID_DOMAIN_TYPE_LIQUID, FLUID_EFFECTOR_TYPE_COLLISION, FLUID_EFFECTOR_TYPE_GUIDE, FLUID_FLOW_BEHAVIOR_INFLOW, FLUID_FLOW_BEHAVIOR_OUTFLOW, FLUID_FLOW_TYPE_LIQUID, FLUID_FLOW_TYPE_SMOKE, FluidsimModifierData::fss, ListBase::last, MEM_freeN, MOD_FLUID_TYPE_DOMAIN, MOD_FLUID_TYPE_EFFEC, MOD_FLUID_TYPE_FLOW, modifier_ensure_type(), ModifierData::next, NULL, OB_FLUIDSIM_CONTROL, OB_FLUIDSIM_DOMAIN, OB_FLUIDSIM_ENABLE, OB_FLUIDSIM_FLUID, OB_FLUIDSIM_INFLOW, OB_FLUIDSIM_OBSTACLE, OB_FLUIDSIM_OUTFLOW, OB_FLUIDSIM_PARTICLE, ModifierData::prev, FluidFlowSettings::surface_distance, ModifierData::type, FluidModifierData::type, SmokeModifierData::type, and FluidsimSettings::type.
Referenced by BKE_modifier_blend_read_data().
Call when ModifierTypeInfo.dependsOnNormals callback requests normals.
Definition at line 965 of file blenkernel/intern/modifier.c.
References BKE_editmesh_cache_ensure_vert_normals(), BMEditMesh::bm, BM_mesh_normals_update(), Mesh_Runtime::edit_data, Mesh::edit_mesh, ME_WRAPPER_TYPE_BMESH, ME_WRAPPER_TYPE_MDATA, ME_WRAPPER_TYPE_SUBD, Mesh::runtime, EditMeshData::vertexCos, and Mesh_Runtime::wrapper_type.
Referenced by BKE_modifier_deform_verts(), BKE_modifier_deform_vertsEM(), and BKE_modifier_modify_mesh().
|
static |
Definition at line 75 of file blenkernel/intern/modifier.c.
Referenced by BKE_modifier_set_error().
|
static |
Definition at line 76 of file blenkernel/intern/modifier.c.
Referenced by BKE_modifier_get_info(), and BKE_modifier_init().
|
static |
Definition at line 77 of file blenkernel/intern/modifier.c.
Referenced by BKE_gpencil_modifier_init(), BKE_gpencil_modifiers_get_virtual_modifierlist(), BKE_modifier_init(), and BKE_modifiers_get_virtual_modifierlist().