Blender
V3.3
|
#include "MEM_guardedalloc.h"
#include "BLI_bitmap.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "DNA_brush_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "RNA_enum_types.h"
#include "BKE_brush.h"
#include "BKE_colortools.h"
#include "BKE_context.h"
#include "BKE_deform.h"
#include "BKE_mesh.h"
#include "BKE_mesh_iterators.h"
#include "BKE_mesh_runtime.h"
#include "BKE_modifier.h"
#include "BKE_object_deform.h"
#include "BKE_paint.h"
#include "BKE_report.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
#include "WM_api.h"
#include "WM_types.h"
#include "ED_armature.h"
#include "ED_mesh.h"
#include "ED_screen.h"
#include "ED_view3d.h"
#include "paint_intern.h"
Go to the source code of this file.
Classes | |
struct | WPaintPrev |
struct | WPGradient_vertStore |
struct | WPGradient_vertStoreBase |
struct | WPGradient_userData |
Interactive Weight Gradient Operator | |
typedef struct WPGradient_vertStore | WPGradient_vertStore |
typedef struct WPGradient_vertStoreBase | WPGradient_vertStoreBase |
typedef struct WPGradient_userData | WPGradient_userData |
static void | gradientVert_update (WPGradient_userData *grad_data, int index) |
static void | gradientVertUpdate__mapFunc (void *userData, int index, const float UNUSED(co[3]), const float UNUSED(no[3])) |
static void | gradientVertInit__mapFunc (void *userData, int index, const float co[3], const float UNUSED(no[3])) |
static int | paint_weight_gradient_modal (bContext *C, wmOperator *op, const wmEvent *event) |
static int | paint_weight_gradient_exec (bContext *C, wmOperator *op) |
static int | paint_weight_gradient_invoke (bContext *C, wmOperator *op, const wmEvent *event) |
void | PAINT_OT_weight_gradient (wmOperatorType *ot) |
typedef struct WPGradient_userData WPGradient_userData |
typedef struct WPGradient_vertStore WPGradient_vertStore |
typedef struct WPGradient_vertStoreBase WPGradient_vertStoreBase |
|
static |
Definition at line 594 of file paint_vertex_weight_ops.c.
References Brush::alpha, BKE_brush_curve_strength_clamped(), BKE_defvert_ensure_index(), BKE_defvert_find_index(), BKE_defvert_remove_group(), Brush::blend, BLI_assert, WPGradient_userData::brush, CLAMP, WPGradient_userData::def_nr, Mesh::dvert, ED_wpaint_blend_tool(), WPGradient_vertStoreBase::elem, WPGradient_vertStore::flag, len_v2v2(), line_point_factor_v2(), WPGradient_userData::me, WPGradient_vertStore::sco, WPGradient_userData::sco_end, WPGradient_userData::sco_line_div, WPGradient_userData::sco_start, WPGradient_userData::type, WPGradient_userData::use_vgroup_restrict, WPGradient_userData::vert_cache, MDeformWeight::weight, WPGradient_vertStore::weight_orig, WPGradient_userData::weightpaint, WPAINT_GRADIENT_TYPE_LINEAR, and WPAINT_GRADIENT_TYPE_RADIAL.
Referenced by gradientVertInit__mapFunc(), and gradientVertUpdate__mapFunc().
|
static |
Definition at line 666 of file paint_vertex_weight_ops.c.
References BKE_defvert_find_index(), BLI_BITMAP_ENABLE, BLI_BITMAP_TEST, copy_v2_fl(), WPGradient_userData::def_nr, Mesh::dvert, ED_view3d_project_float_object(), WPGradient_vertStoreBase::elem, WPGradient_vertStore::flag, MVert::flag, gradientVert_update(), WPGradient_userData::me, Mesh::mvert, WPGradient_userData::region, WPGradient_vertStore::sco, SELECT, WPGradient_userData::use_select, V3D_PROJ_RET_OK, V3D_PROJ_TEST_CLIP_BB, V3D_PROJ_TEST_CLIP_NEAR, WPGradient_userData::vert_cache, WPGradient_userData::vert_visit, MDeformWeight::weight, and WPGradient_vertStore::weight_orig.
Referenced by paint_weight_gradient_exec().
|
static |
Definition at line 651 of file paint_vertex_weight_ops.c.
References WPGradient_vertStoreBase::elem, gradientVert_update(), WPGradient_vertStore::sco, and WPGradient_userData::vert_cache.
Referenced by paint_weight_gradient_exec().
void PAINT_OT_weight_from_bones | ( | wmOperatorType * | ot | ) |
Definition at line 119 of file paint_vertex_weight_ops.c.
References ARM_GROUPS_AUTO, ARM_GROUPS_ENVELOPE, wmOperatorType::description, wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, NULL, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, wmOperatorType::prop, RNA_def_enum(), wmOperatorType::srna, weight_from_bones_exec(), weight_from_bones_poll(), and WM_menu_invoke().
Referenced by ED_operatortypes_paint().
void PAINT_OT_weight_gradient | ( | wmOperatorType * | ot | ) |
Definition at line 896 of file paint_vertex_weight_ops.c.
References wmOperatorType::cancel, wmOperatorType::description, wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::modal, wmOperatorType::name, NULL, OPTYPE_REGISTER, OPTYPE_UNDO, ot, paint_weight_gradient_exec(), paint_weight_gradient_invoke(), paint_weight_gradient_modal(), wmOperatorType::poll, PROP_SKIP_SAVE, RNA_def_enum(), RNA_def_property_flag(), wmOperatorType::srna, weight_paint_poll_ignore_tool(), WM_CURSOR_EDIT, WM_gesture_straightline_cancel(), WM_operator_properties_gesture_straightline(), WPAINT_GRADIENT_TYPE_LINEAR, and WPAINT_GRADIENT_TYPE_RADIAL.
Referenced by ED_operatortypes_paint().
void PAINT_OT_weight_sample | ( | wmOperatorType * | ot | ) |
Definition at line 267 of file paint_vertex_weight_ops.c.
References wmOperatorType::description, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, OPTYPE_UNDO, ot, wmOperatorType::poll, weight_paint_mode_poll(), and weight_sample_invoke().
Referenced by ED_operatortypes_paint().
void PAINT_OT_weight_sample_group | ( | wmOperatorType * | ot | ) |
Definition at line 397 of file paint_vertex_weight_ops.c.
References wmOperatorType::description, DummyRNA_NULL_items, wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, NULL, OPTYPE_UNDO, ot, wmOperatorType::poll, wmOperatorType::prop, PROP_ENUM_NO_TRANSLATE, RNA_def_enum(), RNA_def_enum_funcs(), RNA_def_property_flag(), wmOperatorType::srna, weight_paint_mode_poll(), weight_paint_sample_enum_itemf(), weight_sample_group_exec(), and WM_menu_invoke().
Referenced by ED_operatortypes_paint().
void PAINT_OT_weight_set | ( | wmOperatorType * | ot | ) |
Definition at line 536 of file paint_vertex_weight_ops.c.
References wmOperatorType::description, wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, mask_paint_poll(), wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, and weight_paint_set_exec().
Referenced by ED_operatortypes_paint().
|
static |
Definition at line 748 of file paint_vertex_weight_ops.c.
References ToolSettings::auto_normalize, BKE_brush_weight_get(), BKE_curvemapping_init(), BKE_defvert_normalize_lock_map(), BKE_defvert_normalize_lock_single(), BKE_mesh_flush_select_from_polys(), BKE_mesh_foreach_mapped_vert(), BKE_object_defgroup_active_index_get(), BKE_object_defgroup_lock_flags_get(), BKE_object_defgroup_validmap_get(), BKE_paint_brush(), BLI_BITMAP_NEW, BLI_listbase_count(), C, CD_MASK_ORIGINDEX, CTX_data_active_object(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_tool_settings(), CTX_wm_region(), Brush::curve, wmOperator::customdata, Scene::customdata_mask, data, Object::data, wmGenericUserData::data, DEG_get_evaluated_object(), DEG_get_evaluated_scene(), DEG_id_tag_update(), depsgraph, Mesh::dvert, ED_view3d_init_mats_rv3d(), ED_wpaint_ensure_data(), Mesh::editflag, CustomData_MeshMasks::emask, VPaint::flag, gradientVertInit__mapFunc(), gradientVertUpdate__mapFunc(), Object::id, ID_RECALC_GEOMETRY, len_v2v2(), ME_EDIT_PAINT_FACE_SEL, ME_EDIT_PAINT_VERT_SEL, MEM_freeN, MEM_mallocN, MESH_FOREACH_NOP, mesh_get_eval_final(), NC_OBJECT, ND_DRAW, NULL, OPERATOR_CANCELLED, OPERATOR_FINISHED, VPaint::paint, CustomData_MeshMasks::pmask, wmOperator::ptr, ARegion::regiondata, wmOperator::reports, RNA_enum_get(), RNA_int_get(), scene, Scene::toolsettings, Mesh::totvert, wmGenericUserData::use_free, wmGesture::user_data, Mesh::vertex_group_names, CustomData_MeshMasks::vmask, VP_FLAG_VGROUP_RESTRICT, WM_event_add_notifier(), ToolSettings::wpaint, and wpaint_prev_create().
Referenced by PAINT_OT_weight_gradient().
|
static |
Definition at line 874 of file paint_vertex_weight_ops.c.
References C, CTX_wm_region(), wmOperator::customdata, ED_wpaint_ensure_data(), wmGesture::is_active, KM_PRESS, LEFTMOUSE, NULL, OPERATOR_CANCELLED, OPERATOR_RUNNING_MODAL, ARegion::regiontype, wmOperator::reports, ret, RGN_TYPE_WINDOW, wmEvent::type, wmEvent::val, and WM_gesture_straightline_invoke().
Referenced by PAINT_OT_weight_gradient().
|
static |
Definition at line 710 of file paint_vertex_weight_ops.c.
References BKE_defvert_array_copy(), BKE_defvert_array_free_elems(), C, CTX_data_active_object(), wmOperator::customdata, Object::data, wmGenericUserData::data, DEG_id_tag_update(), Mesh::dvert, Object::id, ID_RECALC_GEOMETRY, KM_RELEASE, LEFTMOUSE, MEM_freeN, NC_OBJECT, ND_DRAW, NULL, OPERATOR_CANCELLED, OPERATOR_FINISHED, OPERATOR_RUNNING_MODAL, ret, Mesh::totvert, wmEvent::type, wmGesture::user_data, wmEvent::val, WM_event_add_notifier(), WM_gesture_straightline_cancel(), WM_gesture_straightline_modal(), WPaintPrev::wpaint_prev, wpaint_prev_destroy(), and WPGradient_vertStoreBase::wpp.
Referenced by PAINT_OT_weight_gradient().
|
static |
Definition at line 100 of file paint_vertex_weight_ops.c.
References BKE_modifiers_is_deformed_by_armature(), C, CTX_data_active_object(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_main(), CTX_data_scene(), Object::data, DEG_id_tag_update(), DEG_relations_tag_update(), depsgraph, ED_object_vgroup_calc_from_armature(), Mesh::id, ME_SYMMETRY_X, NC_GEOM, ND_DATA, OPERATOR_FINISHED, wmOperator::ptr, wmOperator::reports, RNA_enum_get(), scene, Mesh::symmetry, type, and WM_event_add_notifier().
Referenced by PAINT_OT_weight_from_bones().
Definition at line 93 of file paint_vertex_weight_ops.c.
References BKE_modifiers_is_deformed_by_armature(), C, CTX_data_active_object(), Object::mode, and OB_MODE_WEIGHT_PAINT.
Referenced by PAINT_OT_weight_from_bones().
|
static |
Definition at line 305 of file paint_vertex_weight_ops.c.
References BKE_mesh_from_object(), BLI_listbase_count(), C, CTX_data_depsgraph_pointer(), CTX_wm_window(), depsgraph, DummyRNA_NULL_items, Mesh::dvert, ED_MESH_PICK_DEFAULT_FACE_DIST, ED_MESH_PICK_DEFAULT_VERT_DIST, ED_mesh_pick_face(), ED_mesh_pick_vert(), ED_view3d_init_mats_rv3d(), ED_view3d_viewcontext_init(), Mesh::editflag, wmWindow::eventstate, ListBase::first, MPoly::loopstart, ME_EDIT_PAINT_VERT_SEL, MEM_callocN, MEM_freeN, Mesh::mloop, Mesh::mpoly, bDeformGroup::name, next, NULL, ViewContext::obact, ViewContext::region, RNA_enum_item_add(), RNA_enum_item_end(), ViewContext::rv3d, MPoly::totloop, MLoop::v, ViewContext::v3d, Mesh::vertex_group_names, view3d_operator_needs_opengl(), weight_paint_sample_enum_itemf__helper(), ARegion::winrct, rcti::xmin, wmEvent::xy, and rcti::ymin.
Referenced by PAINT_OT_weight_sample_group().
|
static |
Definition at line 289 of file paint_vertex_weight_ops.c.
References MDeformWeight::def_nr, MDeformVert::dw, and MDeformVert::totweight.
Referenced by weight_paint_sample_enum_itemf().
Definition at line 432 of file paint_vertex_weight_ops.c.
References BKE_defvert_ensure_index(), BKE_object_defgroup_active_index_get(), Object::data, DEG_id_tag_update(), Mesh::dvert, MDeformVert::dw, ED_wpaint_mirror_vgroup_ensure(), Mesh::editflag, MVert::flag, MPoly::flag, MDeformVert::flag, Mesh::id, MPoly::loopstart, ME_EDIT_MIRROR_TOPO, ME_EDIT_PAINT_SEL_MODE, ME_FACE_SEL, ME_SYMMETRY_X, ME_USING_MIRROR_X_VERTEX_GROUPS, mesh_get_x_mirror_vert(), Mesh::mloop, Mesh::mpoly, Mesh::mvert, NULL, SCE_SELECT_FACE, SCE_SELECT_VERTEX, SELECT, Mesh::symmetry, MPoly::totloop, Mesh::totpoly, Mesh::totvert, MLoop::v, MDeformWeight::weight, WPaintPrev::wpaint_prev, wpaint_prev_create(), and wpaint_prev_destroy().
Referenced by weight_paint_set_exec().
|
static |
Definition at line 517 of file paint_vertex_weight_ops.c.
References BKE_brush_weight_get(), BKE_paint_brush(), C, CTX_data_active_object(), CTX_data_scene(), CTX_data_tool_settings(), CTX_wm_region(), ED_region_tag_redraw(), ED_wpaint_ensure_data(), NULL, OPERATOR_CANCELLED, OPERATOR_FINISHED, VPaint::paint, wmOperator::reports, scene, weight_paint_set(), ToolSettings::wpaint, and WPAINT_ENSURE_MIRROR.
Referenced by PAINT_OT_weight_set().
|
static |
Definition at line 382 of file paint_vertex_weight_ops.c.
References BKE_object_defgroup_active_index_set(), BLI_assert, C, CTX_data_ensure_evaluated_depsgraph(), DEG_id_tag_update(), depsgraph, ED_view3d_viewcontext_init(), Object::id, ID_RECALC_GEOMETRY, NC_OBJECT, ND_DRAW, ViewContext::obact, OPERATOR_FINISHED, wmOperator::ptr, RNA_enum_get(), type, and WM_event_add_notifier().
Referenced by PAINT_OT_weight_sample_group().
|
static |
Sets wp->weight to the closest weight value to vertex.
Definition at line 162 of file paint_vertex_weight_ops.c.
References ToolSettings::auto_normalize, BKE_brush_weight_set(), BKE_defvert_find_weight(), BKE_defvert_lock_relative_weight(), BKE_defvert_multipaint_collective_weight(), BKE_mesh_from_object(), BKE_object_defgroup_check_lock_relative(), BKE_object_defgroup_check_lock_relative_multi(), BKE_object_defgroup_lock_flags_get(), BKE_object_defgroup_mirror_selection(), BKE_object_defgroup_selected_get(), BKE_object_defgroup_split_locked_validmap(), BKE_object_defgroup_validmap_get(), BKE_paint_brush(), BKE_report(), BLI_listbase_count(), C, CLAMP, CTX_data_ensure_evaluated_depsgraph(), depsgraph, Mesh::dvert, ED_MESH_PICK_DEFAULT_FACE_DIST, ED_MESH_PICK_DEFAULT_VERT_DIST, ED_mesh_pick_face(), ED_mesh_pick_face_vert(), ED_mesh_pick_vert(), ED_view3d_init_mats_rv3d(), ED_view3d_viewcontext_init(), Mesh::editflag, ME_EDIT_PAINT_VERT_SEL, ME_USING_MIRROR_X_VERTEX_GROUPS, MEM_freeN, MEM_SAFE_FREE, ToolSettings::multipaint, wmEvent::mval, NA_EDITED, NC_BRUSH, NULL, ViewContext::obact, OPERATOR_CANCELLED, OPERATOR_FINISHED, VPaint::paint, wmOperator::reports, RPT_WARNING, ViewContext::rv3d, ViewContext::scene, Scene::toolsettings, ViewContext::v3d, Mesh::vertex_group_active_index, Mesh::vertex_group_names, view3d_operator_needs_opengl(), WM_main_add_notifier(), ToolSettings::wpaint, and ToolSettings::wpaint_lock_relative.
Referenced by PAINT_OT_weight_sample().
|
static |
Definition at line 67 of file paint_vertex_weight_ops.c.
References BKE_defvert_array_copy(), MEM_mallocN, WPaintPrev::tot, WPaintPrev::wpaint_prev, and wpaint_prev_init().
Referenced by paint_weight_gradient_exec(), and weight_paint_set().
|
static |
Definition at line 78 of file paint_vertex_weight_ops.c.
References BKE_defvert_array_free(), NULL, WPaintPrev::tot, and WPaintPrev::wpaint_prev.
Referenced by paint_weight_gradient_modal(), and weight_paint_set().
|
static |
Definition at line 61 of file paint_vertex_weight_ops.c.
References NULL, WPaintPrev::tot, and WPaintPrev::wpaint_prev.
Referenced by wpaint_prev_create().