|
Blender V4.5
|
#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_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 68 of file MOD_weightvgproximity.cc.
Referenced by get_vert2geom_distance().
|
static |
Definition at line 708 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_blend_read(), BLO_read_struct, and WeightVGProximityModifierData::cmap_curve.
|
static |
Definition at line 697 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_blend_write(), BLO_write_struct, and WeightVGProximityModifierData::cmap_curve.
|
static |
Definition at line 319 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_copy(), BKE_modifier_copydata_generic(), WeightVGProximityModifierData::cmap_curve, and flag.
|
static |
Definition at line 342 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 240 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 656 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, uiLayoutSetPropSep(), and uiTemplateCurveMapping().
|
static |
Definition at line 352 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 361 of file MOD_weightvgproximity.cc.
References Object::id, ptr, RNA_pointer_create_discrete(), and RNA_struct_find_property().
|
static |
Definition at line 313 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 232 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 146 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 209 of file MOD_weightvgproximity.cc.
References i, indices, len_v3v3(), and mul_v3_m4v3().
Referenced by modify_mesh().
Definition at line 677 of file MOD_weightvgproximity.cc.
References C, Panel::layout, modifier_panel_get_property_pointers(), ptr, and weightvg_ui_common().
|
static |
Definition at line 301 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 403 of file MOD_weightvgproximity.cc.
References WeightVGProximityModifierData::defgrp_name, and WeightVGProximityModifierData::proximity_ob_target.
|
static |
Definition at line 414 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, CD_MDEFORMVERT, WeightVGProximityModifierData::cmap_curve, CustomData_has_layer(), 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::vert_data, Mesh::vertex_group_names, Mesh::verts_num, MDeformWeight::weight, weightvg_do_mask(), and weightvg_update_vg().
Definition at line 627 of file MOD_weightvgproximity.cc.
References col, uiLayout::column(), IFACE_, Panel::layout, MOD_WVG_PROXIMITY_GEOMETRY, modifier_panel_get_property_pointers(), uiLayout::prop(), ptr, RNA_enum_get(), uiLayout::separator(), UI_ITEM_NONE, UI_ITEM_R_EXPAND, uiItemPointerR(), and uiLayoutSetPropSep().
|
static |
Definition at line 687 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 329 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 368 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 97 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 718 of file MOD_weightvgproximity.cc.