|
Blender V5.0
|
#include "BLI_utildefines.h"#include "BLI_ghash.h"#include "BLI_listbase.h"#include "BLI_math_matrix.h"#include "BLI_math_vector.h"#include "BLI_rand.h"#include "BLI_task.h"#include "BLT_translation.hh"#include "DNA_color_types.h"#include "DNA_defaults.h"#include "DNA_mesh_types.h"#include "DNA_meshdata_types.h"#include "DNA_modifier_types.h"#include "DNA_object_types.h"#include "DNA_screen_types.h"#include "DNA_texture_types.h"#include "BKE_bvhutils.hh"#include "BKE_colortools.hh"#include "BKE_customdata.hh"#include "BKE_deform.hh"#include "BKE_lib_query.hh"#include "BKE_mesh.hh"#include "BKE_mesh_wrapper.hh"#include "BKE_modifier.hh"#include "BKE_texture.h"#include "UI_interface.hh"#include "UI_interface_layout.hh"#include "UI_resources.hh"#include "BLO_read_write.hh"#include "RNA_access.hh"#include "RNA_prototypes.hh"#include "DEG_depsgraph_build.hh"#include "DEG_depsgraph_query.hh"#include "MEM_guardedalloc.h"#include "MOD_ui_common.hh"#include "MOD_util.hh"#include "MOD_weightvg_util.hh"Go to the source code of this file.
Classes | |
| struct | Vert2GeomData |
| struct | Vert2GeomDataChunk |
Macros | |
| #define | OUT_OF_MEMORY() |
Functions | |
| static void | vert2geom_task_cb_ex (void *__restrict userdata, const int iter, const TaskParallelTLS *__restrict tls) |
| static void | get_vert2geom_distance (int verts_num, const blender::Span< blender::float3 > positions, const int *indices, float *dist_v, float *dist_e, float *dist_f, Mesh *target, const SpaceTransform *loc2trgt) |
| static void | get_vert2ob_distance (int verts_num, const blender::Span< blender::float3 > positions, const int *indices, float *dist, Object *ob, Object *obr) |
| static float | get_ob2ob_distance (const Object *ob, const Object *obr) |
| static void | do_map (Object *ob, float *weights, const int nidx, const float min_d, const float max_d, short mode, const bool do_invert_mapping, CurveMapping *cmap) |
| static void | init_data (ModifierData *md) |
| static void | free_data (ModifierData *md) |
| static void | copy_data (const ModifierData *md, ModifierData *target, const int flag) |
| static void | required_data_mask (ModifierData *md, CustomData_MeshMasks *r_cddata_masks) |
| static bool | depends_on_time (Scene *, ModifierData *md) |
| static void | foreach_ID_link (ModifierData *md, Object *ob, IDWalkFunc walk, void *user_data) |
| static void | foreach_tex_link (ModifierData *md, Object *ob, TexWalkFunc walk, void *user_data) |
| static void | update_depsgraph (ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) |
| static bool | is_disabled (const Scene *, ModifierData *md, bool) |
| static Mesh * | modify_mesh (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh) |
| static void | panel_draw (const bContext *, Panel *panel) |
| static void | falloff_panel_draw (const bContext *, Panel *panel) |
| static void | influence_panel_draw (const bContext *C, Panel *panel) |
| static void | panel_register (ARegionType *region_type) |
| static void | blend_write (BlendWriter *writer, const ID *, const ModifierData *md) |
| static void | blend_read (BlendDataReader *reader, ModifierData *md) |
Variables | |
| ModifierTypeInfo | modifierType_WeightVGProximity |
| #define OUT_OF_MEMORY | ( | ) |
Definition at line 69 of file MOD_weightvgproximity.cc.
Referenced by get_vert2geom_distance().
|
static |
Definition at line 709 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_blend_read(), BLO_read_struct, and WeightVGProximityModifierData::cmap_curve.
|
static |
Definition at line 698 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_blend_write(), BLO_write_struct, and WeightVGProximityModifierData::cmap_curve.
|
static |
Definition at line 320 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_copy(), BKE_modifier_copydata_generic(), WeightVGProximityModifierData::cmap_curve, and flag.
|
static |
Definition at line 343 of file MOD_weightvgproximity.cc.
References BKE_texture_dependsOnTime(), and WeightVGProximityModifierData::mask_texture.
|
static |
Maps distances to weights, with an optional "smoothing" mapping.
Definition at line 241 of file MOD_weightvgproximity.cc.
References BLI_ghashutil_strhash, BLI_rng_free(), BLI_rng_new_srandom(), i, Object::id, MOD_WVG_MAPPING_NONE, MOD_WVG_MAPPING_RANDOM, ID::name, and weightvg_do_map().
Referenced by modify_mesh().
Definition at line 657 of file MOD_weightvgproximity.cc.
References IFACE_, Panel::layout, MOD_WVG_MAPPING_CURVE, modifier_error_message_draw(), modifier_panel_get_property_pointers(), uiLayout::prop(), ptr, RNA_enum_get(), uiLayout::row(), UI_ITEM_NONE, uiTemplateCurveMapping(), and uiLayout::use_property_split_set().
|
static |
Definition at line 353 of file MOD_weightvgproximity.cc.
References IDWALK_CB_NOP, IDWALK_CB_USER, WeightVGProximityModifierData::mask_tex_map_obj, WeightVGProximityModifierData::mask_texture, and WeightVGProximityModifierData::proximity_ob_target.
|
static |
Definition at line 362 of file MOD_weightvgproximity.cc.
References Object::id, ptr, RNA_pointer_create_discrete(), and RNA_struct_find_property().
|
static |
Definition at line 314 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_free(), and WeightVGProximityModifierData::cmap_curve.
Returns the real distance between an object and another reference object. Note that it works in final world space (i.e. with constraints etc. applied).
Definition at line 233 of file MOD_weightvgproximity.cc.
References len_v3v3().
Referenced by modify_mesh().
|
static |
Find nearest vertex and/or edge and/or face, for each vertex (adapted from shrinkwrap.cc).
Definition at line 147 of file MOD_weightvgproximity.cc.
References BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), data, indices, OUT_OF_MEMORY, blender::bke::BVHTreeFromMesh::tree, TaskParallelSettings::use_threading, TaskParallelSettings::userdata_chunk, TaskParallelSettings::userdata_chunk_size, and vert2geom_task_cb_ex().
Referenced by modify_mesh().
|
static |
Returns the real distance between a vertex and another reference object. Note that it works in final world space (i.e. with constraints etc. applied).
Definition at line 210 of file MOD_weightvgproximity.cc.
References i, indices, len_v3v3(), and mul_v3_m4v3().
Referenced by modify_mesh().
Definition at line 678 of file MOD_weightvgproximity.cc.
References C, Panel::layout, modifier_panel_get_property_pointers(), ptr, and weightvg_ui_common().
|
static |
Definition at line 302 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_add(), BKE_curvemapping_init(), BLI_assert, WeightVGProximityModifierData::cmap_curve, DNA_struct_default_get, MEMCMP_STRUCT_AFTER_IS_ZERO, and MEMCPY_STRUCT_AFTER.
|
static |
Definition at line 404 of file MOD_weightvgproximity.cc.
References WeightVGProximityModifierData::defgrp_name, and WeightVGProximityModifierData::proximity_ob_target.
|
static |
Definition at line 415 of file MOD_weightvgproximity.cc.
References BKE_defvert_find_index(), BKE_id_defgroup_name_index(), BKE_mesh_wrapper_ensure_mdata(), BKE_modifier_get_evaluated_mesh_from_evaluated_object(), BLI_assert, BLI_listbase_is_empty(), BLI_SPACE_TRANSFORM_SETUP, WeightVGProximityModifierData::cmap_curve, WeightVGProximityModifierData::defgrp_name, DEG_get_evaluated_scene(), ModifierEvalContext::depsgraph, do_map(), WeightVGProximityModifierData::falloff_type, FLT_MAX, get_ob2ob_distance(), get_vert2geom_distance(), get_vert2ob_distance(), i, Mesh::id, indices, WeightVGProximityModifierData::mask_constant, WeightVGProximityModifierData::mask_defgrp_name, WeightVGProximityModifierData::mask_tex_map_bone, WeightVGProximityModifierData::mask_tex_map_obj, WeightVGProximityModifierData::mask_tex_mapping, WeightVGProximityModifierData::mask_tex_use_channel, WeightVGProximityModifierData::mask_tex_uvlayer_name, WeightVGProximityModifierData::mask_texture, WeightVGProximityModifierData::max_dist, MEM_freeN(), MEM_malloc_arrayN(), MEM_SAFE_FREE, WeightVGProximityModifierData::min_dist, min_ff(), MOD_WVG_PROXIMITY_GEOM_EDGES, MOD_WVG_PROXIMITY_GEOM_FACES, MOD_WVG_PROXIMITY_GEOM_VERTS, MOD_WVG_PROXIMITY_GEOMETRY, MOD_WVG_PROXIMITY_INVERT_FALLOFF, MOD_WVG_PROXIMITY_INVERT_VGROUP_MASK, MOD_WVG_PROXIMITY_OBJECT, MOD_WVG_PROXIMITY_WEIGHTS_NORMALIZE, ModifierData::mode, WeightVGProximityModifierData::modifier, ModifierEvalContext::object, WeightVGProximityModifierData::proximity_flags, WeightVGProximityModifierData::proximity_mode, WeightVGProximityModifierData::proximity_ob_target, Mesh::runtime, TIMEIT_END, TIMEIT_START, Mesh::vertex_group_names, Mesh::verts_num, MDeformWeight::weight, weightvg_do_mask(), and weightvg_update_vg().
Definition at line 628 of file MOD_weightvgproximity.cc.
References col, uiLayout::column(), IFACE_, Panel::layout, MOD_WVG_PROXIMITY_GEOMETRY, modifier_panel_get_property_pointers(), uiLayout::prop(), uiLayout::prop_search(), ptr, RNA_enum_get(), uiLayout::separator(), UI_ITEM_NONE, UI_ITEM_R_EXPAND, and uiLayout::use_property_split_set().
|
static |
Definition at line 688 of file MOD_weightvgproximity.cc.
References eModifierType_WeightVGProximity, falloff_panel_draw(), influence_panel_draw(), modifier_panel_register(), modifier_subpanel_register(), and panel_draw().
|
static |
Definition at line 330 of file MOD_weightvgproximity.cc.
References CD_MASK_MDEFORMVERT, CD_MASK_MTFACE, CustomData_MeshMasks::fmask, WeightVGProximityModifierData::mask_tex_mapping, MOD_DISP_MAP_UV, and CustomData_MeshMasks::vmask.
|
static |
Definition at line 369 of file MOD_weightvgproximity.cc.
References Object::data, DEG_add_depends_on_transform_relation(), DEG_add_generic_id_relation(), DEG_add_object_relation(), DEG_OB_COMP_GEOMETRY, DEG_OB_COMP_TRANSFORM, Tex::id, WeightVGProximityModifierData::mask_tex_map_bone, WeightVGProximityModifierData::mask_tex_map_obj, WeightVGProximityModifierData::mask_tex_mapping, WeightVGProximityModifierData::mask_texture, MOD_depsgraph_update_object_bone_relation(), MOD_DISP_MAP_GLOBAL, MOD_DISP_MAP_OBJECT, MOD_WVG_PROXIMITY_GEOMETRY, ModifierUpdateDepsgraphContext::node, WeightVGProximityModifierData::proximity_mode, and WeightVGProximityModifierData::proximity_ob_target.
|
static |
Callback used by BLI_task 'for loop' helper.
Definition at line 98 of file MOD_weightvgproximity.cc.
References ARRAY_SIZE, BLI_bvhtree_find_nearest(), BLI_space_transform_apply(), BVHTreeNearest::co, copy_v3_v3(), data, BVHTreeNearest::dist_sq, FLT_MAX, i, BVHTreeNearest::index, Vert2GeomDataChunk::is_init, Vert2GeomDataChunk::last_hit_co, len_squared_v3v3(), and sqrtf.
Referenced by get_vert2geom_distance().
| ModifierTypeInfo modifierType_WeightVGProximity |
Definition at line 719 of file MOD_weightvgproximity.cc.