Blender V5.0
paint_vertex_weight_ops.cc File Reference
#include "MEM_guardedalloc.h"
#include "BLI_bitmap.h"
#include "BLI_listbase.h"
#include "BLI_math_geom.h"
#include "BLI_math_vector.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.hh"
#include "RNA_define.hh"
#include "BKE_attribute.hh"
#include "BKE_brush.hh"
#include "BKE_colortools.hh"
#include "BKE_context.hh"
#include "BKE_deform.hh"
#include "BKE_mesh.hh"
#include "BKE_mesh_iterators.hh"
#include "BKE_modifier.hh"
#include "BKE_object.hh"
#include "BKE_object_deform.h"
#include "BKE_paint.hh"
#include "BKE_report.hh"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_query.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "ED_armature.hh"
#include "ED_mesh.hh"
#include "ED_screen.hh"
#include "ED_view3d.hh"
#include "UI_interface.hh"
#include "UI_interface_layout.hh"
#include "UI_resources.hh"
#include "paint_intern.hh"

Go to the source code of this file.

Classes

struct  WPaintPrev
struct  WPGradient_vertStore
struct  WPGradient_vertStoreBase
struct  WPGradient_userData

Functions

Store Previous Weights

Use to avoid feedback loop w/ mirrored edits.

static void wpaint_prev_init (WPaintPrev *wpp)
static void wpaint_prev_create (WPaintPrev *wpp, MDeformVert *dverts, int dcount)
static void wpaint_prev_destroy (WPaintPrev *wpp)
Weight from Bones Operator
static bool weight_from_bones_poll (bContext *C)
static wmOperatorStatus weight_from_bones_exec (bContext *C, wmOperator *op)
void PAINT_OT_weight_from_bones (wmOperatorType *ot)
Sample Weight Operator
static wmOperatorStatus weight_sample_invoke (bContext *C, wmOperator *op, const wmEvent *event)
void PAINT_OT_weight_sample (wmOperatorType *ot)
Weight Paint Sample Group Operator
static bool weight_paint_sample_mark_groups (const MDeformVert *dvert, blender::MutableSpan< bool > groups)
static wmOperatorStatus weight_sample_group_invoke (bContext *C, wmOperator *op, const wmEvent *event)
void PAINT_OT_weight_sample_group (wmOperatorType *ot)
Weight Set Operator
static bool weight_paint_set (Object *ob, float paintweight)
static wmOperatorStatus weight_paint_set_exec (bContext *C, wmOperator *op)
void PAINT_OT_weight_set (wmOperatorType *ot)
Interactive Weight Gradient Operator
 ENUM_OPERATORS (WPGradient_vertStore::Flag, WPGradient_vertStore::VGRAD_STORE_IS_MODIFIED)
static void gradientVert_update (WPGradient_userData *grad_data, int index)
static void gradientVertUpdate__mapFunc (void *user_data, int index, const float[3], const float[3])
static void gradientVertInit__mapFunc (void *user_data, int index, const float co[3], const float[3])
static wmOperatorStatus paint_weight_gradient_modal (bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus paint_weight_gradient_exec (bContext *C, wmOperator *op)
static wmOperatorStatus paint_weight_gradient_invoke (bContext *C, wmOperator *op, const wmEvent *event)
void PAINT_OT_weight_gradient (wmOperatorType *ot)

Function Documentation

◆ ENUM_OPERATORS()

◆ gradientVert_update()

◆ gradientVertInit__mapFunc()

◆ gradientVertUpdate__mapFunc()

void gradientVertUpdate__mapFunc ( void * user_data,
int index,
const float [3],
const float [3] )
static

◆ PAINT_OT_weight_from_bones()

◆ PAINT_OT_weight_gradient()

◆ PAINT_OT_weight_sample()

void PAINT_OT_weight_sample ( wmOperatorType * ot)

◆ PAINT_OT_weight_sample_group()

void PAINT_OT_weight_sample_group ( wmOperatorType * ot)

◆ PAINT_OT_weight_set()

void PAINT_OT_weight_set ( wmOperatorType * ot)

◆ paint_weight_gradient_exec()

wmOperatorStatus paint_weight_gradient_exec ( bContext * C,
wmOperator * op )
static

Definition at line 746 of file paint_vertex_weight_ops.cc.

References Geometry::attributes, ToolSettings::auto_normalize, BKE_brush_weight_get(), BKE_curvemapping_init(), BKE_defvert_normalize_lock_map(), BKE_mesh_foreach_mapped_vert(), BKE_object_defgroup_active_index_get(), BKE_object_defgroup_lock_flags_get(), BKE_object_defgroup_validmap_get(), BKE_object_get_evaluated_mesh(), BKE_paint_brush(), BLI_BITMAP_NEW, BLI_listbase_count(), C, CTX_data_active_object(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_data_tool_settings(), CTX_wm_region(), Brush::curve_distance_falloff, wmOperator::customdata, data, Object::data, wmGenericUserData::data, DEG_get_evaluated(), DEG_id_tag_update(), depsgraph, ED_view3d_init_mats_rv3d(), ED_wpaint_ensure_data(), Mesh::editflag, VPaint::flag, float, gradientVertInit__mapFunc(), gradientVertUpdate__mapFunc(), i, Object::id, ID_RECALC_GEOMETRY, len_v2v2(), blender::bke::AttributeAccessor::lookup(), blender::bke::AttributeAccessor::lookup_or_default(), ME_EDIT_PAINT_FACE_SEL, ME_EDIT_PAINT_VERT_SEL, MEM_freeN(), MEM_malloc_arrayN(), MEM_mallocN(), MEM_SAFE_FREE, MESH_FOREACH_NOP, blender::bke::mesh_select_face_flush(), NC_OBJECT, ND_DRAW, OPERATOR_CANCELLED, OPERATOR_FINISHED, VPaint::paint, blender::bke::Point, wmOperator::ptr, ARegion::regiondata, wmOperator::reports, RNA_enum_get(), RNA_int_get(), Scene::toolsettings, wmGenericUserData::use_free, wmGesture::user_data, Mesh::vertex_group_names, Mesh::verts_num, WPGradient_vertStore::VGRAD_STORE_IS_MODIFIED, VP_FLAG_VGROUP_RESTRICT, WM_event_add_notifier(), ToolSettings::wpaint, and wpaint_prev_create().

Referenced by PAINT_OT_weight_gradient().

◆ paint_weight_gradient_invoke()

◆ paint_weight_gradient_modal()

◆ weight_from_bones_exec()

◆ weight_from_bones_poll()

bool weight_from_bones_poll ( bContext * C)
static

◆ weight_paint_sample_mark_groups()

bool weight_paint_sample_mark_groups ( const MDeformVert * dvert,
blender::MutableSpan< bool > groups )
static

Samples cursor location, and gives menu with vertex groups to activate. This function fills in used vertex-groups.

Definition at line 300 of file paint_vertex_weight_ops.cc.

References MDeformWeight::def_nr, MDeformVert::dw, i, blender::MutableSpan< T >::size(), MDeformVert::totweight, and UNLIKELY.

Referenced by weight_sample_group_invoke().

◆ weight_paint_set()

◆ weight_paint_set_exec()

◆ weight_sample_group_invoke()

◆ weight_sample_invoke()

wmOperatorStatus weight_sample_invoke ( bContext * C,
wmOperator * op,
const wmEvent * event )
static

Sets wp->weight to the closest weight value to vertex.

Note
we can't sample front-buffer, weight colors are interpolated too unpredictable.

Definition at line 169 of file paint_vertex_weight_ops.cc.

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, 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, 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_gpu(), WM_main_add_notifier(), ToolSettings::wpaint, and ToolSettings::wpaint_lock_relative.

Referenced by PAINT_OT_weight_sample().

◆ wpaint_prev_create()

void wpaint_prev_create ( WPaintPrev * wpp,
MDeformVert * dverts,
int dcount )
static

◆ wpaint_prev_destroy()

void wpaint_prev_destroy ( WPaintPrev * wpp)
static

◆ wpaint_prev_init()

void wpaint_prev_init ( WPaintPrev * wpp)
static

Definition at line 68 of file paint_vertex_weight_ops.cc.

References WPaintPrev::tot, and WPaintPrev::wpaint_prev.

Referenced by wpaint_prev_create().