Blender V4.3
object_modifier.cc File Reference
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include "CLG_log.h"
#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_array_utils.hh"
#include "DNA_curve_types.h"
#include "DNA_defaults.h"
#include "DNA_dynamicpaint_types.h"
#include "DNA_fluid_types.h"
#include "DNA_key_types.h"
#include "DNA_lattice_types.h"
#include "DNA_material_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_force_types.h"
#include "DNA_pointcloud_types.h"
#include "DNA_scene_types.h"
#include "DNA_space_types.h"
#include "BLI_bitmap.h"
#include "BLI_listbase.h"
#include "BLI_path_utils.hh"
#include "BLI_string.h"
#include "BLI_string_utf8.h"
#include "BLI_string_utils.hh"
#include "BLI_utildefines.h"
#include "BKE_animsys.h"
#include "BKE_armature.hh"
#include "BKE_context.hh"
#include "BKE_curve.hh"
#include "BKE_curves.h"
#include "BKE_curves.hh"
#include "BKE_displist.h"
#include "BKE_editmesh.hh"
#include "BKE_effect.h"
#include "BKE_geometry_set.hh"
#include "BKE_global.hh"
#include "BKE_grease_pencil.hh"
#include "BKE_idprop.hh"
#include "BKE_key.hh"
#include "BKE_lattice.hh"
#include "BKE_layer.hh"
#include "BKE_lib_id.hh"
#include "BKE_main.hh"
#include "BKE_material.h"
#include "BKE_mball.hh"
#include "BKE_mesh.hh"
#include "BKE_mesh_mapping.hh"
#include "BKE_mesh_runtime.hh"
#include "BKE_modifier.hh"
#include "BKE_multires.hh"
#include "BKE_object.hh"
#include "BKE_object_deform.h"
#include "BKE_object_types.hh"
#include "BKE_ocean.h"
#include "BKE_paint.hh"
#include "BKE_particle.h"
#include "BKE_pointcloud.hh"
#include "BKE_report.hh"
#include "BKE_scene.hh"
#include "BKE_softbody.h"
#include "BKE_volume.hh"
#include "BLT_translation.hh"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_build.hh"
#include "DEG_depsgraph_query.hh"
#include "RNA_access.hh"
#include "RNA_define.hh"
#include "RNA_enum_types.hh"
#include "RNA_prototypes.hh"
#include "ED_armature.hh"
#include "ED_object.hh"
#include "ED_object_vgroup.hh"
#include "ED_screen.hh"
#include "ANIM_bone_collections.hh"
#include "GEO_merge_layers.hh"
#include "UI_interface.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "object_intern.hh"

Go to the source code of this file.

Classes

struct  blender::ed::object::OceanBakeJob
 

Namespaces

namespace  blender
 
namespace  blender::ed
 
namespace  blender::ed::object
 

Functions

Vector< PointerRNAblender::ed::object::modifier_get_edit_objects (const bContext &C, const wmOperator &op)
 
void blender::ed::object::modifier_register_use_selected_objects_prop (wmOperatorType *ot)
 
Public Api
static void blender::ed::object::object_force_modifier_update_for_bind (Depsgraph *depsgraph, Object *ob)
 
static void blender::ed::object::object_force_modifier_bind_simple_options (Depsgraph *depsgraph, Object *object, ModifierData *md)
 
ModifierDatablender::ed::object::modifier_add (ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type)
 
static bool blender::ed::object::object_has_modifier (const Object *ob, const ModifierData *exclude, ModifierType type)
 
bool blender::ed::object::iter_other (Main *bmain, Object *orig_ob, bool include_orig, bool(*callback)(Object *ob, void *callback_data), void *callback_data)
 
static bool blender::ed::object::object_has_modifier_cb (Object *ob, void *data)
 
bool blender::ed::object::multires_update_totlevels (Object *ob, void *totlevel_v)
 
static bool blender::ed::object::object_modifier_safe_to_delete (Main *bmain, Object *ob, ModifierData *exclude, ModifierType type)
 
static bool blender::ed::object::object_modifier_remove (Main *bmain, Scene *scene, Object *ob, ModifierData *md, bool *r_sort_depsgraph)
 
bool blender::ed::object::modifier_remove (ReportList *reports, Main *bmain, Scene *scene, Object *ob, ModifierData *md)
 
void blender::ed::object::modifiers_clear (Main *bmain, Scene *scene, Object *ob)
 
static bool blender::ed::object::object_modifier_check_move_before (ReportList *reports, eReportType error_type, ModifierData *md, ModifierData *md_prev)
 
bool blender::ed::object::modifier_move_up (ReportList *reports, eReportType error_type, Object *ob, ModifierData *md)
 
static bool blender::ed::object::object_modifier_check_move_after (ReportList *reports, eReportType error_type, ModifierData *md, ModifierData *md_next)
 
bool blender::ed::object::modifier_move_down (ReportList *reports, eReportType error_type, Object *ob, ModifierData *md)
 
bool blender::ed::object::modifier_move_to_index (ReportList *reports, eReportType error_type, Object *ob, ModifierData *md, int index, bool allow_partial)
 
void blender::ed::object::modifier_link (bContext *C, Object *ob_dst, Object *ob_src)
 
bool blender::ed::object::modifier_copy_to_object (Main *bmain, const Scene *scene, const Object *ob_src, const ModifierData *md, Object *ob_dst, ReportList *reports)
 
bool blender::ed::object::convert_psys_to_mesh (ReportList *reports, Main *bmain, Depsgraph *depsgraph, Scene *scene, ViewLayer *view_layer, Object *ob, ModifierData *md)
 
static void blender::ed::object::add_shapekey_layers (Mesh &mesh_dest, const Mesh &mesh_src)
 
static Meshblender::ed::object::create_applied_mesh_for_modifier (Depsgraph *depsgraph, Scene *scene, Object *ob_eval, ModifierData *md_eval, const bool use_virtual_modifiers, const bool build_shapekey_layers, ReportList *reports)
 
static bool blender::ed::object::modifier_apply_shape (Main *bmain, ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md_eval)
 
static bool blender::ed::object::meta_data_matches (const std::optional< bke::AttributeMetaData > meta_data, const AttrDomainMask domains, const eCustomDataMask types)
 
static void blender::ed::object::remove_invalid_attribute_strings (Mesh &mesh)
 
static void blender::ed::object::apply_eval_grease_pencil_data (const GreasePencil &src_grease_pencil, const int eval_frame, const IndexMask &orig_layers, GreasePencil &orig_grease_pencil)
 
static bool blender::ed::object::apply_grease_pencil_for_modifier (Depsgraph *depsgraph, Object *ob, GreasePencil &grease_pencil_orig, ModifierData *md_eval)
 
static bool blender::ed::object::apply_grease_pencil_for_modifier_all_keyframes (Depsgraph *depsgraph, Scene *scene, Object *ob, GreasePencil &grease_pencil_orig, ModifierData *md)
 
static bool blender::ed::object::modifier_apply_obdata (ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md_eval, const bool do_all_keyframes)
 
bool blender::ed::object::modifier_apply (Main *bmain, ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md, int mode, bool keep_modifier, bool do_all_keyframes)
 
bool blender::ed::object::modifier_copy (ReportList *reports, Main *bmain, Scene *scene, Object *ob, ModifierData *md)
 
Add Modifier Operator
static int blender::ed::object::modifier_add_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_add_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
static const EnumPropertyItemblender::ed::object::modifier_add_itemf (bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
 
void blender::ed::object::OBJECT_OT_modifier_add (wmOperatorType *ot)
 
Generic Poll Function and Properties

Using modifier names and data context.

bool blender::ed::object::edit_modifier_poll_generic (bContext *C, StructRNA *rna_type, int obtype_flag, bool is_editmode_allowed, bool is_liboverride_allowed)
 
static bool blender::ed::object::edit_modifier_poll (bContext *C)
 
static bool blender::ed::object::edit_modifier_liboverride_allowed_poll (bContext *C)
 
void blender::ed::object::edit_modifier_properties (wmOperatorType *ot)
 
static void blender::ed::object::edit_modifier_report_property (wmOperatorType *ot)
 
Generic Invoke Functions

Using modifier names and data context.

bool blender::ed::object::edit_modifier_invoke_properties (bContext *C, wmOperator *op)
 
static bool blender::ed::object::edit_modifier_invoke_properties_with_hover (bContext *C, wmOperator *op, const wmEvent *event, int *r_retval)
 
ModifierDatablender::ed::object::edit_modifier_property_get (wmOperator *op, Object *ob, int type)
 
Remove Modifier Operator
static int blender::ed::object::modifier_remove_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_remove_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void blender::ed::object::OBJECT_OT_modifier_remove (wmOperatorType *ot)
 
static int blender::ed::object::modifiers_clear_exec (bContext *C, wmOperator *)
 
static bool blender::ed::object::modifiers_clear_poll (bContext *C)
 
void blender::ed::object::OBJECT_OT_modifiers_clear (wmOperatorType *ot)
 
Move Up Modifier Operator
static int blender::ed::object::modifier_move_up_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_move_up_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void blender::ed::object::OBJECT_OT_modifier_move_up (wmOperatorType *ot)
 
Move Down Modifier Operator
static int blender::ed::object::modifier_move_down_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_move_down_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void blender::ed::object::OBJECT_OT_modifier_move_down (wmOperatorType *ot)
 
Move to Index Modifier Operator
static int blender::ed::object::modifier_move_to_index_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_move_to_index_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void blender::ed::object::OBJECT_OT_modifier_move_to_index (wmOperatorType *ot)
 
Apply Modifier Operator
static bool blender::ed::object::modifier_apply_poll (bContext *C)
 
static int blender::ed::object::modifier_apply_exec_ex (bContext *C, wmOperator *op, int apply_as, bool keep_modifier)
 
static int blender::ed::object::modifier_apply_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_apply_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void blender::ed::object::OBJECT_OT_modifier_apply (wmOperatorType *ot)
 
Apply Modifier As Shape-Key Operator
static bool blender::ed::object::modifier_apply_as_shapekey_poll (bContext *C)
 
static int blender::ed::object::modifier_apply_as_shapekey_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_apply_as_shapekey_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
static std::string blender::ed::object::modifier_apply_as_shapekey_get_description (bContext *, wmOperatorType *, PointerRNA *ptr)
 
void blender::ed::object::OBJECT_OT_modifier_apply_as_shapekey (wmOperatorType *ot)
 
Convert Particle System Modifier to Mesh Operator
static int blender::ed::object::modifier_convert_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_convert_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_modifier_convert (wmOperatorType *ot)
 
Copy Modifier Operator
static int blender::ed::object::modifier_copy_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_copy_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void blender::ed::object::OBJECT_OT_modifier_copy (wmOperatorType *ot)
 
Set Active Modifier Operator
static int blender::ed::object::modifier_set_active_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_set_active_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
void blender::ed::object::OBJECT_OT_modifier_set_active (wmOperatorType *ot)
 
Copy Modifier To Selected Operator
static int blender::ed::object::modifier_copy_to_selected_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::modifier_copy_to_selected_invoke (bContext *C, wmOperator *op, const wmEvent *event)
 
static bool blender::ed::object::modifier_copy_to_selected_poll (bContext *C)
 
void blender::ed::object::OBJECT_OT_modifier_copy_to_selected (wmOperatorType *ot)
 
static int blender::ed::object::object_modifiers_copy_exec (bContext *C, wmOperator *op)
 
static bool blender::ed::object::modifiers_copy_to_selected_poll (bContext *C)
 
void blender::ed::object::OBJECT_OT_modifiers_copy_to_selected (wmOperatorType *ot)
 
Delta Mesh Bind Operator
static bool blender::ed::object::correctivesmooth_poll (bContext *C)
 
static int blender::ed::object::correctivesmooth_bind_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::correctivesmooth_bind_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_correctivesmooth_bind (wmOperatorType *ot)
 
Mesh Deform Bind Operator
static bool blender::ed::object::meshdeform_poll (bContext *C)
 
static int blender::ed::object::meshdeform_bind_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::meshdeform_bind_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_meshdeform_bind (wmOperatorType *ot)
 
Explode Refresh Operator
static bool blender::ed::object::explode_poll (bContext *C)
 
static int blender::ed::object::explode_refresh_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::explode_refresh_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_explode_refresh (wmOperatorType *ot)
 
Ocean Bake Operator
static bool blender::ed::object::ocean_bake_poll (bContext *C)
 
static void blender::ed::object::oceanbake_free (void *customdata)
 
static int blender::ed::object::oceanbake_breakjob (void *)
 
static void blender::ed::object::oceanbake_update (void *customdata, float progress, int *cancel)
 
static void blender::ed::object::oceanbake_startjob (void *customdata, wmJobWorkerStatus *worker_status)
 
static void blender::ed::object::oceanbake_endjob (void *customdata)
 
static int blender::ed::object::ocean_bake_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::ocean_bake_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_ocean_bake (wmOperatorType *ot)
 
Laplacian-Deform Bind Operator
static bool blender::ed::object::laplaciandeform_poll (bContext *C)
 
static int blender::ed::object::laplaciandeform_bind_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::laplaciandeform_bind_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_laplaciandeform_bind (wmOperatorType *ot)
 
Surface Deform Bind Operator
static bool blender::ed::object::surfacedeform_bind_poll (bContext *C)
 
static int blender::ed::object::surfacedeform_bind_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::surfacedeform_bind_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_surfacedeform_bind (wmOperatorType *ot)
 
Toggle Value or Attribute Operator
Note
This operator basically only exists to provide a better tooltip for the toggle button, since it is stored as an IDProperty. It also stops the button from being highlighted when "use_attribute" is on, which isn't expected.
static int blender::ed::object::geometry_nodes_input_attribute_toggle_exec (bContext *C, wmOperator *op)
 
void blender::ed::object::OBJECT_OT_geometry_nodes_input_attribute_toggle (wmOperatorType *ot)
 
Copy and Assign Geometry Node Group operator
static int blender::ed::object::geometry_node_tree_copy_assign_exec (bContext *C, wmOperator *)
 
void blender::ed::object::OBJECT_OT_geometry_node_tree_copy_assign (wmOperatorType *ot)
 

Variables

static CLG_LogRef blender::ed::object::LOG = {"ed.object"}
 

Skin Modifier

enum  blender::ed::object::SkinLooseAction { blender::ed::object::SKIN_LOOSE_MARK , blender::ed::object::SKIN_LOOSE_CLEAR }
 
static void blender::ed::object::modifier_skin_customdata_delete (Object *ob)
 
static bool blender::ed::object::skin_poll (bContext *C)
 
static bool blender::ed::object::skin_edit_poll (bContext *C)
 
static void blender::ed::object::skin_root_clear (BMVert *bm_vert, GSet *visited, const int cd_vert_skin_offset)
 
static int blender::ed::object::skin_root_mark_exec (bContext *C, wmOperator *)
 
void blender::ed::object::OBJECT_OT_skin_root_mark (wmOperatorType *ot)
 
static int blender::ed::object::skin_loose_mark_clear_exec (bContext *C, wmOperator *op)
 
void blender::ed::object::OBJECT_OT_skin_loose_mark_clear (wmOperatorType *ot)
 
static int blender::ed::object::skin_radii_equalize_exec (bContext *C, wmOperator *)
 
void blender::ed::object::OBJECT_OT_skin_radii_equalize (wmOperatorType *ot)
 
static void blender::ed::object::skin_armature_bone_create (Object *skin_ob, const Span< float3 > positions, const int2 *edges, bArmature *arm, BLI_bitmap *edges_visited, const GroupedSpan< int > emap, EditBone *parent_bone, int parent_v)
 
static Objectblender::ed::object::modifier_skin_armature_create (Depsgraph *depsgraph, Main *bmain, Object *skin_ob)
 
static int blender::ed::object::skin_armature_create_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::skin_armature_create_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_skin_armature_create (wmOperatorType *ot)
 

Dash Modifier

enum class  blender::ed::object::DashSegmentMoveDirection { blender::ed::object::Up = -1 , blender::ed::object::Down = 1 }
 
static bool blender::ed::object::dash_modifier_segment_poll (bContext *C)
 
static int blender::ed::object::dash_modifier_segment_add_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::dash_modifier_segment_add_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_grease_pencil_dash_modifier_segment_add (wmOperatorType *ot)
 
static void blender::ed::object::dash_modifier_segment_free (GreasePencilDashModifierSegment *)
 
static int blender::ed::object::dash_modifier_segment_remove_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::dash_modifier_segment_remove_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_grease_pencil_dash_modifier_segment_remove (wmOperatorType *ot)
 
static int blender::ed::object::dash_modifier_segment_move_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::dash_modifier_segment_move_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_grease_pencil_dash_modifier_segment_move (wmOperatorType *ot)
 

Time Modifier

enum class  blender::ed::object::TimeSegmentMoveDirection { blender::ed::object::Up = -1 , blender::ed::object::Down = 1 }
 
static bool blender::ed::object::time_modifier_segment_poll (bContext *C)
 
static int blender::ed::object::time_modifier_segment_add_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::time_modifier_segment_add_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_grease_pencil_time_modifier_segment_add (wmOperatorType *ot)
 
static void blender::ed::object::time_modifier_segment_free (GreasePencilTimeModifierSegment *)
 
static int blender::ed::object::time_modifier_segment_remove_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::time_modifier_segment_remove_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_grease_pencil_time_modifier_segment_remove (wmOperatorType *ot)
 
static int blender::ed::object::time_modifier_segment_move_exec (bContext *C, wmOperator *op)
 
static int blender::ed::object::time_modifier_segment_move_invoke (bContext *C, wmOperator *op, const wmEvent *)
 
void blender::ed::object::OBJECT_OT_grease_pencil_time_modifier_segment_move (wmOperatorType *ot)