Blender  V3.3
Functions
deform.c File Reference
#include <ctype.h>
#include <math.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "DNA_gpencil_types.h"
#include "DNA_lattice_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_string.h"
#include "BLI_string_utils.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "BKE_customdata.h"
#include "BKE_data_transfer.h"
#include "BKE_deform.h"
#include "BKE_mesh.h"
#include "BKE_mesh_mapping.h"
#include "BKE_object.h"
#include "BKE_object_deform.h"
#include "BLO_read_write.h"
#include "data_transfer_intern.h"

Go to the source code of this file.

Functions

bDeformGroupBKE_object_defgroup_new (Object *ob, const char *name)
 
void BKE_defgroup_copy_list (ListBase *outbase, const ListBase *inbase)
 
bDeformGroupBKE_defgroup_duplicate (const bDeformGroup *ingroup)
 
void BKE_defvert_copy_subset (MDeformVert *dvert_dst, const MDeformVert *dvert_src, const bool *vgroup_subset, const int vgroup_tot)
 
void BKE_defvert_mirror_subset (MDeformVert *dvert_dst, const MDeformVert *dvert_src, const bool *vgroup_subset, const int vgroup_tot, const int *flip_map, const int flip_map_len)
 
void BKE_defvert_copy (MDeformVert *dvert_dst, const MDeformVert *dvert_src)
 
void BKE_defvert_copy_index (MDeformVert *dvert_dst, const int defgroup_dst, const MDeformVert *dvert_src, const int defgroup_src)
 
void BKE_defvert_sync (MDeformVert *dvert_dst, const MDeformVert *dvert_src, const bool use_ensure)
 
void BKE_defvert_sync_mapped (MDeformVert *dvert_dst, const MDeformVert *dvert_src, const int *flip_map, const int flip_map_len, const bool use_ensure)
 
void BKE_defvert_remap (MDeformVert *dvert, const int *map, const int map_len)
 
void BKE_defvert_normalize_subset (MDeformVert *dvert, const bool *vgroup_subset, const int vgroup_tot)
 
void BKE_defvert_normalize (MDeformVert *dvert)
 
void BKE_defvert_normalize_lock_single (MDeformVert *dvert, const bool *vgroup_subset, const int vgroup_tot, const uint def_nr_lock)
 
void BKE_defvert_normalize_lock_map (MDeformVert *dvert, const bool *vgroup_subset, const int vgroup_tot, const bool *lock_flags, const int defbase_tot)
 
void BKE_defvert_flip (MDeformVert *dvert, const int *flip_map, const int flip_map_len)
 
void BKE_defvert_flip_merged (MDeformVert *dvert, const int *flip_map, const int flip_map_len)
 
bool BKE_object_supports_vertex_groups (const Object *ob)
 
const ListBaseBKE_id_defgroup_list_get (const ID *id)
 
static const int * object_defgroup_active_index_get_p (const Object *ob)
 
ListBaseBKE_id_defgroup_list_get_mutable (ID *id)
 
bDeformGroupBKE_object_defgroup_find_name (const Object *ob, const char *name)
 
int BKE_id_defgroup_name_index (const ID *id, const char *name)
 
bool BKE_id_defgroup_name_find (const struct ID *id, const char *name, int *r_index, struct bDeformGroup **r_group)
 
const ListBaseBKE_object_defgroup_list (const Object *ob)
 
int BKE_object_defgroup_name_index (const Object *ob, const char *name)
 
ListBaseBKE_object_defgroup_list_mutable (Object *ob)
 
int BKE_object_defgroup_count (const Object *ob)
 
int BKE_object_defgroup_active_index_get (const Object *ob)
 
void BKE_object_defgroup_active_index_set (Object *ob, const int new_index)
 
int * BKE_object_defgroup_flip_map (const Object *ob, int *flip_map_len, const bool use_default)
 
int * BKE_object_defgroup_flip_map_single (const Object *ob, int *flip_map_len, const bool use_default, int defgroup)
 
int BKE_object_defgroup_flip_index (const Object *ob, int index, const bool use_default)
 
static bool defgroup_find_name_dupe (const char *name, bDeformGroup *dg, Object *ob)
 
static bool defgroup_unique_check (void *arg, const char *name)
 
void BKE_object_defgroup_unique_name (bDeformGroup *dg, Object *ob)
 
float BKE_defvert_find_weight (const struct MDeformVert *dvert, const int defgroup)
 
float BKE_defvert_array_find_weight_safe (const struct MDeformVert *dvert, const int index, const int defgroup)
 
MDeformWeightBKE_defvert_find_index (const MDeformVert *dvert, const int defgroup)
 
MDeformWeightBKE_defvert_ensure_index (MDeformVert *dvert, const int defgroup)
 
void BKE_defvert_add_index_notest (MDeformVert *dvert, int defgroup, const float weight)
 
void BKE_defvert_remove_group (MDeformVert *dvert, MDeformWeight *dw)
 
void BKE_defvert_clear (MDeformVert *dvert)
 
int BKE_defvert_find_shared (const MDeformVert *dvert_a, const MDeformVert *dvert_b)
 
bool BKE_defvert_is_weight_zero (const struct MDeformVert *dvert, const int defgroup_tot)
 
float BKE_defvert_total_selected_weight (const struct MDeformVert *dv, int defbase_tot, const bool *defbase_sel)
 
float BKE_defvert_multipaint_collective_weight (const struct MDeformVert *dv, int defbase_tot, const bool *defbase_sel, int defbase_tot_sel, bool is_normalized)
 
float BKE_defvert_calc_lock_relative_weight (float weight, float locked_weight, float unlocked_weight)
 
float BKE_defvert_lock_relative_weight (float weight, const struct MDeformVert *dv, int defbase_tot, const bool *defbase_locked, const bool *defbase_unlocked)
 
Defvert Array functions
void BKE_defvert_array_copy (MDeformVert *dst, const MDeformVert *src, int totvert)
 
void BKE_defvert_array_free_elems (MDeformVert *dvert, int totvert)
 
void BKE_defvert_array_free (MDeformVert *dvert, int totvert)
 
void BKE_defvert_extract_vgroup_to_vertweights (const MDeformVert *dvert, const int defgroup, const int num_verts, const bool invert_vgroup, float *r_weights)
 
void BKE_defvert_extract_vgroup_to_edgeweights (const MDeformVert *dvert, const int defgroup, const int num_verts, MEdge *edges, const int num_edges, const bool invert_vgroup, float *r_weights)
 
void BKE_defvert_extract_vgroup_to_loopweights (const MDeformVert *dvert, const int defgroup, const int num_verts, MLoop *loops, const int num_loops, const bool invert_vgroup, float *r_weights)
 
void BKE_defvert_extract_vgroup_to_polyweights (const MDeformVert *dvert, const int defgroup, const int num_verts, MLoop *loops, const int UNUSED(num_loops), MPoly *polys, const int num_polys, const bool invert_vgroup, float *r_weights)
 
Data Transfer
static void vgroups_datatransfer_interp (const CustomDataTransferLayerMap *laymap, void *dest, const void **sources, const float *weights, const int count, const float mix_factor)
 
static bool data_transfer_layersmapping_vgroups_multisrc_to_dst (ListBase *r_map, const int mix_mode, const float mix_factor, const float *mix_weights, const int num_elem_dst, const bool use_create, const bool use_delete, Object *ob_src, Object *ob_dst, const MDeformVert *data_src, MDeformVert *data_dst, CustomData *UNUSED(cd_src), CustomData *cd_dst, const bool UNUSED(use_dupref_dst), const int tolayers, const bool *use_layers_src, const int num_layers_src)
 
bool data_transfer_layersmapping_vgroups (ListBase *r_map, const int mix_mode, const float mix_factor, const float *mix_weights, const int num_elem_dst, const bool use_create, const bool use_delete, Object *ob_src, Object *ob_dst, CustomData *cd_src, CustomData *cd_dst, const bool use_dupref_dst, const int fromlayers, const int tolayers)
 
Various utils & helpers.
void BKE_defvert_weight_to_rgb (float r_rgb[3], const float weight)
 
.blend file I/O
void BKE_defbase_blend_write (BlendWriter *writer, const ListBase *defbase)
 
void BKE_defvert_blend_write (BlendWriter *writer, int count, const MDeformVert *dvlist)
 
void BKE_defvert_blend_read (BlendDataReader *reader, int count, MDeformVert *mdverts)
 

Function Documentation

◆ BKE_defbase_blend_write()

void BKE_defbase_blend_write ( BlendWriter writer,
const ListBase defbase 
)

Definition at line 1557 of file deform.c.

References BLO_write_struct, and LISTBASE_FOREACH.

Referenced by greasepencil_blend_write(), lattice_blend_write(), and mesh_blend_write().

◆ BKE_defgroup_copy_list()

void BKE_defgroup_copy_list ( ListBase outbase,
const ListBase inbase 
)

◆ BKE_defgroup_duplicate()

bDeformGroup* BKE_defgroup_duplicate ( const bDeformGroup ingroup)

Definition at line 75 of file deform.c.

References BLI_assert, MEM_callocN, bDeformGroup::next, NULL, and bDeformGroup::prev.

Referenced by BKE_defgroup_copy_list().

◆ BKE_defvert_add_index_notest()

void BKE_defvert_add_index_notest ( struct MDeformVert dv,
int  defgroup,
float  weight 
)

Adds the given vertex to the specified vertex group, with given weight.

Warning
this does NOT check for existing, assume caller already knows its not there.

Definition at line 779 of file deform.c.

References BLI_assert, MDeformWeight::def_nr, MDeformVert::dw, MEM_callocN, MEM_freeN, MDeformVert::totweight, and MDeformWeight::weight.

Referenced by ED_vgroup_nr_vert_add(), blender::ed::geometry::geometry_attribute_convert_exec(), gpencil_vertex_group_invert_exec(), subdivide_base(), vgroups_datatransfer_interp(), and weightvg_update_vg().

◆ BKE_defvert_array_copy()

void BKE_defvert_array_copy ( MDeformVert dst,
const MDeformVert src,
int  totvert 
)

Definition at line 960 of file deform.c.

References MDeformVert::dw, MEM_mallocN, and src.

◆ BKE_defvert_array_find_weight_safe()

float BKE_defvert_array_find_weight_safe ( const struct MDeformVert dvert,
int  index,
int  defgroup 
)

Take care with this the rationale is:

  • if the object has no vertex group. act like vertex group isn't set and return 1.0.
  • if the vertex group exists but the 'defgroup' isn't found on this vertex, still return 0.0.

This is a bit confusing, just saves some checks from the caller.

Definition at line 710 of file deform.c.

References BKE_defvert_find_weight(), and NULL.

Referenced by modifyMesh(), shrinkwrap_calc_nearest_surface_point_cb_ex(), shrinkwrap_calc_nearest_vertex_cb_ex(), shrinkwrap_calc_normal_projection_cb_ex(), and simple_helper().

◆ BKE_defvert_array_free()

void BKE_defvert_array_free ( MDeformVert dvert,
int  totvert 
)

◆ BKE_defvert_array_free_elems()

void BKE_defvert_array_free_elems ( MDeformVert dvert,
int  totvert 
)

◆ BKE_defvert_blend_read()

void BKE_defvert_blend_read ( BlendDataReader reader,
int  count,
MDeformVert mdverts 
)

◆ BKE_defvert_blend_write()

void BKE_defvert_blend_write ( BlendWriter writer,
int  count,
const MDeformVert dvlist 
)

Definition at line 1564 of file deform.c.

References BLO_write_struct_array, count, and NULL.

◆ BKE_defvert_calc_lock_relative_weight()

float BKE_defvert_calc_lock_relative_weight ( float  weight,
float  locked_weight,
float  unlocked_weight 
)

Computes the display weight for the lock relative weight paint mode.

Returns
weight divided by 1-locked_weight with division by zero check

Definition at line 911 of file deform.c.

References VERTEX_WEIGHT_LOCK_EPSILON.

Referenced by BKE_defvert_lock_relative_weight(), do_weight_paint_vertex_multi(), and do_weight_paint_vertex_single().

◆ BKE_defvert_clear()

void BKE_defvert_clear ( MDeformVert dvert)

Definition at line 835 of file deform.c.

References MDeformVert::dw, MEM_SAFE_FREE, and MDeformVert::totweight.

Referenced by bpy_bmdeformvert_clear().

◆ BKE_defvert_copy()

void BKE_defvert_copy ( MDeformVert dvert_dst,
const MDeformVert dvert_src 
)

Definition at line 122 of file deform.c.

References MDeformVert::dw, MEM_dupallocN, MEM_freeN, NULL, and MDeformVert::totweight.

◆ BKE_defvert_copy_index()

void BKE_defvert_copy_index ( MDeformVert dvert_dst,
const int  defgroup_dst,
const MDeformVert dvert_src,
const int  defgroup_src 
)

◆ BKE_defvert_copy_subset()

void BKE_defvert_copy_subset ( MDeformVert dvert_dst,
const MDeformVert dvert_src,
const bool vgroup_subset,
const int  vgroup_tot 
)

Definition at line 94 of file deform.c.

References BKE_defvert_copy_index().

◆ BKE_defvert_ensure_index()

MDeformWeight* BKE_defvert_ensure_index ( struct MDeformVert dv,
int  defgroup 
)

◆ BKE_defvert_extract_vgroup_to_edgeweights()

void BKE_defvert_extract_vgroup_to_edgeweights ( const MDeformVert dvert,
const int  defgroup,
const int  num_verts,
MEdge edges,
const int  num_edges,
const bool  invert_vgroup,
float r_weights 
)

◆ BKE_defvert_extract_vgroup_to_loopweights()

void BKE_defvert_extract_vgroup_to_loopweights ( const MDeformVert dvert,
const int  defgroup,
const int  num_verts,
MLoop loops,
const int  num_loops,
const bool  invert_vgroup,
float r_weights 
)

◆ BKE_defvert_extract_vgroup_to_polyweights()

void BKE_defvert_extract_vgroup_to_polyweights ( const MDeformVert dvert,
const int  defgroup,
const int  num_verts,
MLoop loops,
const int   UNUSEDnum_loops,
MPoly polys,
const int  num_polys,
const bool  invert_vgroup,
float r_weights 
)

◆ BKE_defvert_extract_vgroup_to_vertweights()

void BKE_defvert_extract_vgroup_to_vertweights ( const MDeformVert dvert,
const int  defgroup,
const int  num_verts,
const bool  invert_vgroup,
float r_weights 
)

◆ BKE_defvert_find_index()

MDeformWeight* BKE_defvert_find_index ( const MDeformVert dvert,
const int  defgroup 
)

◆ BKE_defvert_find_shared()

int BKE_defvert_find_shared ( const MDeformVert dvert_a,
const MDeformVert dvert_b 
)

◆ BKE_defvert_find_weight()

float BKE_defvert_find_weight ( const struct MDeformVert dvert,
const int  defgroup 
)

◆ BKE_defvert_flip()

void BKE_defvert_flip ( MDeformVert dvert,
const int *  flip_map,
const int  flip_map_len 
)

◆ BKE_defvert_flip_merged()

void BKE_defvert_flip_merged ( MDeformVert dvert,
const int *  flip_map,
const int  flip_map_len 
)

◆ BKE_defvert_is_weight_zero()

bool BKE_defvert_is_weight_zero ( const struct MDeformVert dvert,
int  defgroup_tot 
)
Returns
true if has no weights.

Definition at line 858 of file deform.c.

References MDeformWeight::def_nr, MDeformVert::dw, LIKELY, MDeformVert::totweight, and MDeformWeight::weight.

Referenced by blender::draw::evaluate_vertex_weight().

◆ BKE_defvert_lock_relative_weight()

float BKE_defvert_lock_relative_weight ( float  weight,
const struct MDeformVert dv,
int  defbase_tot,
const bool defbase_locked,
const bool defbase_unlocked 
)

Computes the display weight for the lock relative weight paint mode, using weight data.

Returns
weight divided by unlocked, or 1-locked_weight with division by zero check.

Definition at line 939 of file deform.c.

References BKE_defvert_calc_lock_relative_weight(), and BKE_defvert_total_selected_weight().

Referenced by do_weight_paint_vertex_multi(), do_weight_paint_vertex_single(), blender::draw::evaluate_vertex_weight(), weight_sample_invoke(), and wpaint_get_active_weight().

◆ BKE_defvert_mirror_subset()

void BKE_defvert_mirror_subset ( MDeformVert dvert_dst,
const MDeformVert dvert_src,
const bool vgroup_subset,
const int  vgroup_tot,
const int *  flip_map,
const int  flip_map_len 
)

Definition at line 107 of file deform.c.

References BKE_defvert_copy_index().

◆ BKE_defvert_multipaint_collective_weight()

float BKE_defvert_multipaint_collective_weight ( const struct MDeformVert dv,
int  defbase_tot,
const bool defbase_sel,
int  defbase_tot_sel,
bool  is_normalized 
)
Returns
The representative weight of a multi-paint group, used for viewport colors and actual painting.

Result equal to sum of weights with auto normalize, and average otherwise. Value is not clamped, since painting relies on multiplication being always commutative with the collective weight function.

Definition at line 894 of file deform.c.

References BKE_defvert_total_selected_weight().

Referenced by do_weight_paint_vertex_multi(), blender::draw::evaluate_vertex_weight(), weight_sample_invoke(), and wpaint_get_active_weight().

◆ BKE_defvert_normalize()

void BKE_defvert_normalize ( MDeformVert dvert)

Definition at line 264 of file deform.c.

References CLAMP, MDeformVert::dw, MDeformVert::totweight, and MDeformWeight::weight.

◆ BKE_defvert_normalize_lock_map()

void BKE_defvert_normalize_lock_map ( struct MDeformVert dvert,
const bool vgroup_subset,
int  vgroup_tot,
const bool lock_flags,
int  defbase_tot 
)

Same as BKE_defvert_normalize() if no locked vgroup is a member of the subset

Definition at line 347 of file deform.c.

References CLAMP, MDeformWeight::def_nr, MDeformVert::dw, max_ff(), MDeformVert::totweight, and MDeformWeight::weight.

Referenced by paint_weight_gradient_exec(), and vgroup_normalize_all().

◆ BKE_defvert_normalize_lock_single()

void BKE_defvert_normalize_lock_single ( struct MDeformVert dvert,
const bool vgroup_subset,
int  vgroup_tot,
uint  def_nr_lock 
)

Same as BKE_defvert_normalize() if the locked vgroup is not a member of the subset

Definition at line 293 of file deform.c.

References CLAMP, MDeformWeight::def_nr, MDeformVert::dw, NULL, MDeformVert::totweight, and MDeformWeight::weight.

Referenced by paint_weight_gradient_exec(), and vgroup_normalize_all().

◆ BKE_defvert_normalize_subset()

void BKE_defvert_normalize_subset ( struct MDeformVert dvert,
const bool vgroup_subset,
int  vgroup_tot 
)

◆ BKE_defvert_remap()

void BKE_defvert_remap ( struct MDeformVert dvert,
const int *  map,
int  map_len 
)

be sure all flip_map values are valid

Definition at line 215 of file deform.c.

References BLI_assert, MDeformWeight::def_nr, MDeformVert::dw, map, and MDeformVert::totweight.

Referenced by vgroup_do_remap().

◆ BKE_defvert_remove_group()

void BKE_defvert_remove_group ( struct MDeformVert dvert,
struct MDeformWeight dw 
)

◆ BKE_defvert_sync()

void BKE_defvert_sync ( MDeformVert dvert_dst,
const MDeformVert dvert_src,
const bool  use_ensure 
)

◆ BKE_defvert_sync_mapped()

void BKE_defvert_sync_mapped ( MDeformVert dvert_dst,
const MDeformVert dvert_src,
const int *  flip_map,
const int  flip_map_len,
const bool  use_ensure 
)

◆ BKE_defvert_total_selected_weight()

float BKE_defvert_total_selected_weight ( const struct MDeformVert dv,
int  defbase_tot,
const bool defbase_sel 
)

◆ BKE_defvert_weight_to_rgb()

void BKE_defvert_weight_to_rgb ( float  r_rgb[3],
const float  weight 
)

Definition at line 1518 of file deform.c.

References blend().

Referenced by psys_cache_edit_paths_iter().

◆ BKE_id_defgroup_list_get()

const ListBase* BKE_id_defgroup_list_get ( const ID id)

◆ BKE_id_defgroup_list_get_mutable()

ListBase* BKE_id_defgroup_list_get_mutable ( ID id)

Definition at line 493 of file deform.c.

References BKE_id_defgroup_list_get().

Referenced by BKE_object_defgroup_list_mutable().

◆ BKE_id_defgroup_name_find()

bool BKE_id_defgroup_name_find ( const struct ID id,
const char *  name,
int *  r_index,
struct bDeformGroup **  r_group 
)

◆ BKE_id_defgroup_name_index()

int BKE_id_defgroup_name_index ( const ID id,
const char *  name 
)

Definition at line 508 of file deform.c.

References BKE_id_defgroup_name_find(), and NULL.

Referenced by BKE_object_defgroup_name_index().

◆ BKE_object_defgroup_active_index_get()

int BKE_object_defgroup_active_index_get ( const Object ob)

◆ BKE_object_defgroup_active_index_set()

void BKE_object_defgroup_active_index_set ( struct Object ob,
int  new_index 
)

◆ BKE_object_defgroup_count()

int BKE_object_defgroup_count ( const Object ob)

Definition at line 558 of file deform.c.

References BKE_object_defgroup_list(), and BLI_listbase_count().

◆ BKE_object_defgroup_find_name()

bDeformGroup* BKE_object_defgroup_find_name ( const Object ob,
const char *  name 
)

Definition at line 499 of file deform.c.

References BKE_object_defgroup_list(), BLI_findstring(), and NULL.

◆ BKE_object_defgroup_flip_index()

int BKE_object_defgroup_flip_index ( const Object ob,
int  index,
const bool  use_default 
)

◆ BKE_object_defgroup_flip_map()

int* BKE_object_defgroup_flip_map ( const Object ob,
int *  flip_map_len,
const bool  use_default 
)

◆ BKE_object_defgroup_flip_map_single()

int* BKE_object_defgroup_flip_map_single ( const Object ob,
int *  flip_map_len,
const bool  use_default,
int  defgroup 
)

◆ BKE_object_defgroup_list()

const ListBase* BKE_object_defgroup_list ( const Object ob)

◆ BKE_object_defgroup_list_mutable()

ListBase* BKE_object_defgroup_list_mutable ( Object ob)

◆ BKE_object_defgroup_name_index()

int BKE_object_defgroup_name_index ( const Object ob,
const char *  name 
)

◆ BKE_object_defgroup_new()

bDeformGroup* BKE_object_defgroup_new ( Object ob,
const char *  name 
)

◆ BKE_object_defgroup_unique_name()

void BKE_object_defgroup_unique_name ( bDeformGroup dg,
Object ob 
)

◆ BKE_object_supports_vertex_groups()

bool BKE_object_supports_vertex_groups ( const Object ob)

◆ data_transfer_layersmapping_vgroups()

bool data_transfer_layersmapping_vgroups ( ListBase r_map,
const int  mix_mode,
const float  mix_factor,
const float mix_weights,
const int  num_elem_dst,
const bool  use_create,
const bool  use_delete,
Object ob_src,
Object ob_dst,
CustomData cd_src,
CustomData cd_dst,
const bool  use_dupref_dst,
const int  fromlayers,
const int  tolayers 
)

◆ data_transfer_layersmapping_vgroups_multisrc_to_dst()

static bool data_transfer_layersmapping_vgroups_multisrc_to_dst ( ListBase r_map,
const int  mix_mode,
const float  mix_factor,
const float mix_weights,
const int  num_elem_dst,
const bool  use_create,
const bool  use_delete,
Object ob_src,
Object ob_dst,
const MDeformVert data_src,
MDeformVert data_dst,
CustomData UNUSEDcd_src,
CustomData cd_dst,
const bool   UNUSEDuse_dupref_dst,
const int  tolayers,
const bool use_layers_src,
const int  num_layers_src 
)
static

◆ defgroup_find_name_dupe()

static bool defgroup_find_name_dupe ( const char *  name,
bDeformGroup dg,
Object ob 
)
static

◆ defgroup_unique_check()

static bool defgroup_unique_check ( void arg,
const char *  name 
)
static

Definition at line 683 of file deform.c.

References data, and defgroup_find_name_dupe().

Referenced by BKE_object_defgroup_unique_name().

◆ object_defgroup_active_index_get_p()

static const int* object_defgroup_active_index_get_p ( const Object ob)
static

◆ vgroups_datatransfer_interp()

static void vgroups_datatransfer_interp ( const CustomDataTransferLayerMap laymap,
void dest,
const void **  sources,
const float weights,
const int  count,
const float  mix_factor 
)
static