|
Blender V4.3
|
#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 "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() (void)printf("WeightVGProximity: Out of memory.\n") |
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 |
Definition at line 67 of file MOD_weightvgproximity.cc.
Referenced by get_vert2geom_distance().
|
static |
Definition at line 722 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_blend_read(), BLO_read_struct, and WeightVGProximityModifierData::cmap_curve.
|
static |
Definition at line 711 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_blend_write(), BLO_write_struct, and WeightVGProximityModifierData::cmap_curve.
|
static |
Definition at line 328 of file MOD_weightvgproximity.cc.
References BKE_curvemapping_copy(), BKE_modifier_copydata_generic(), WeightVGProximityModifierData::cmap_curve, and flag.
|
static |
Definition at line 351 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 249 of file MOD_weightvgproximity.cc.
References BLI_ghashutil_strhash, BLI_rng_free(), BLI_rng_new_srandom(), Object::id, MOD_WVG_MAPPING_NONE, MOD_WVG_MAPPING_RANDOM, ID::name, and weightvg_do_map().
Referenced by modify_mesh().
Definition at line 670 of file MOD_weightvgproximity.cc.
References IFACE_, Panel::layout, MOD_WVG_MAPPING_CURVE, modifier_panel_end(), modifier_panel_get_property_pointers(), ptr, RNA_enum_get(), UI_ITEM_NONE, uiItemR(), uiLayoutRow(), uiLayoutSetPropSep(), and uiTemplateCurveMapping().
Referenced by panel_register().
|
static |
Definition at line 361 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 370 of file MOD_weightvgproximity.cc.
References Object::id, ptr, RNA_pointer_create(), and RNA_struct_find_property().
|
static |
Definition at line 322 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 241 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 145 of file MOD_weightvgproximity.cc.
References BKE_bvhtree_from_mesh_get(), BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), BVHTREE_FROM_CORNER_TRIS, BVHTREE_FROM_EDGES, BVHTREE_FROM_VERTS, free_bvhtree_from_mesh(), indices, OUT_OF_MEMORY, BVHTreeFromMesh::tree, 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 218 of file MOD_weightvgproximity.cc.
References len_v3v3(), and mul_v3_m4v3().
Referenced by modify_mesh().
Definition at line 691 of file MOD_weightvgproximity.cc.
References Panel::layout, modifier_panel_get_property_pointers(), ptr, and weightvg_ui_common().
Referenced by panel_register().
|
static |
Definition at line 310 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 412 of file MOD_weightvgproximity.cc.
References WeightVGProximityModifierData::defgrp_name, and WeightVGProximityModifierData::proximity_ob_target.
|
static |
Definition at line 423 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(), 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, mesh, 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, TIMEIT_END, TIMEIT_START, MDeformWeight::weight, weightvg_do_mask(), and weightvg_update_vg().
Definition at line 641 of file MOD_weightvgproximity.cc.
References col, IFACE_, Panel::layout, MOD_WVG_PROXIMITY_GEOMETRY, modifier_panel_get_property_pointers(), ptr, RNA_enum_get(), UI_ITEM_NONE, UI_ITEM_R_EXPAND, uiItemPointerR(), uiItemR(), uiItemS(), uiLayoutColumn(), and uiLayoutSetPropSep().
Referenced by panel_register().
|
static |
Definition at line 701 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 338 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 377 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 96 of file MOD_weightvgproximity.cc.
References ARRAY_SIZE, BLI_bvhtree_find_nearest(), BLI_space_transform_apply(), copy_v3_v3(), BVHTreeNearest::dist_sq, FLT_MAX, Vert2GeomDataChunk::is_init, Vert2GeomDataChunk::last_hit_co, len_squared_v3v3(), and sqrtf.
Referenced by get_vert2geom_distance().
| ModifierTypeInfo modifierType_WeightVGProximity |
Definition at line 732 of file MOD_weightvgproximity.cc.