Blender  V3.3
Functions
bmesh_interp.h File Reference

Go to the source code of this file.

Functions

void BM_loop_interp_multires_ex (BMesh *bm, BMLoop *l_dst, const BMFace *f_src, const float f_dst_center[3], const float f_src_center[3], int cd_loop_mdisp_offset)
 
void BM_loop_interp_multires (BMesh *bm, BMLoop *l_dst, const BMFace *f_src)
 
void BM_face_interp_multires_ex (BMesh *bm, BMFace *f_dst, const BMFace *f_src, const float f_dst_center[3], const float f_src_center[3], int cd_loop_mdisp_offset)
 
void BM_face_interp_multires (BMesh *bm, BMFace *f_dst, const BMFace *f_src)
 
void BM_vert_interp_from_face (BMesh *bm, BMVert *v_dst, const BMFace *f_src)
 
void BM_data_interp_from_verts (BMesh *bm, const BMVert *v_src_1, const BMVert *v_src_2, BMVert *v_dst, float fac)
 Data, Interpolate From Verts. More...
 
void BM_data_interp_from_edges (BMesh *bm, const BMEdge *e_src_1, const BMEdge *e_src_2, BMEdge *e_dst, float fac)
 Data, Interpolate From Edges. More...
 
void BM_data_interp_face_vert_edge (BMesh *bm, const BMVert *v_src_1, const BMVert *v_src_2, BMVert *v, BMEdge *e, float fac)
 Data Face-Vert Edge Interpolate. More...
 
void BM_data_layer_add (BMesh *bm, CustomData *data, int type)
 
void BM_data_layer_add_named (BMesh *bm, CustomData *data, int type, const char *name)
 
void BM_data_layer_free (BMesh *bm, CustomData *data, int type)
 
bool BM_data_layer_free_named (BMesh *bm, CustomData *data, const char *name)
 
void BM_data_layer_free_n (BMesh *bm, CustomData *data, int type, int n)
 
void BM_data_layer_copy (BMesh *bm, CustomData *data, int type, int src_n, int dst_n)
 
float BM_elem_float_data_get (CustomData *cd, void *element, int type)
 
void BM_elem_float_data_set (CustomData *cd, void *element, int type, float val)
 
void BM_face_interp_from_face_ex (BMesh *bm, BMFace *f_dst, const BMFace *f_src, bool do_vertex, const void **blocks, const void **blocks_v, float(*cos_2d)[2], float axis_mat[3][3])
 Data Interpolate From Face. More...
 
void BM_face_interp_from_face (BMesh *bm, BMFace *f_dst, const BMFace *f_src, bool do_vertex)
 
void BM_loop_interp_from_face (BMesh *bm, BMLoop *l_dst, const BMFace *f_src, bool do_vertex, bool do_multires)
 
void BM_face_multires_bounds_smooth (BMesh *bm, BMFace *f)
 
struct LinkNodeBM_vert_loop_groups_data_layer_create (BMesh *bm, BMVert *v, int layer_n, const float *loop_weights, struct MemArena *arena)
 
void BM_vert_loop_groups_data_layer_merge (BMesh *bm, struct LinkNode *groups, int layer_n)
 
void BM_vert_loop_groups_data_layer_merge_weights (BMesh *bm, struct LinkNode *groups, int layer_n, const float *loop_weights)
 

Function Documentation

◆ BM_data_interp_face_vert_edge()

void BM_data_interp_face_vert_edge ( BMesh bm,
const BMVert v_src_1,
const BMVert v_src_2,
BMVert v,
BMEdge e,
float  fac 
)

Data Face-Vert Edge Interpolate.

Walks around the faces of e and interpolates the loop data between two sources.

◆ BM_data_interp_from_edges()

void BM_data_interp_from_edges ( BMesh bm,
const BMEdge e_src_1,
const BMEdge e_src_2,
BMEdge e_dst,
float  fac 
)

Data, Interpolate From Edges.

Interpolates per-edge data from two sources to e_dst.

Note
This is an exact match to BM_data_interp_from_verts.

Definition at line 75 of file bmesh_interp.c.

References bm, bm_data_interp_from_elem(), and BMesh::edata.

Referenced by bm_edge_collapse().

◆ BM_data_interp_from_verts()

void BM_data_interp_from_verts ( BMesh bm,
const BMVert v_src_1,
const BMVert v_src_2,
BMVert v_dst,
float  fac 
)

Data, Interpolate From Verts.

Interpolates per-vertex data from two sources to v_dst

Note
This is an exact match to BM_data_interp_from_edges.

Definition at line 68 of file bmesh_interp.c.

References bm, bm_data_interp_from_elem(), and BMesh::vdata.

Referenced by bm_bridge_splice_loops(), bm_edge_collapse(), BM_edge_split(), BM_vert_collapse_faces(), and bpy_bmvert_copy_from_vert_interp().

◆ BM_data_layer_add()

void BM_data_layer_add ( BMesh bm,
CustomData data,
int  type 
)

◆ BM_data_layer_add_named()

void BM_data_layer_add_named ( BMesh bm,
CustomData data,
int  type,
const char *  name 
)

◆ BM_data_layer_copy()

void BM_data_layer_copy ( BMesh bm,
CustomData data,
int  type,
int  src_n,
int  dst_n 
)

◆ BM_data_layer_free()

void BM_data_layer_free ( BMesh bm,
CustomData data,
int  type 
)

◆ BM_data_layer_free_n()

void BM_data_layer_free_n ( BMesh bm,
CustomData data,
int  type,
int  n 
)

◆ BM_data_layer_free_named()

bool BM_data_layer_free_named ( BMesh bm,
CustomData data,
const char *  name 
)

Remove a named custom data layer, if it existed. Return true if the layer was removed.

Definition at line 897 of file bmesh_interp.c.

References bm, CustomData_free_layer_named(), data, CustomData::layers, MEM_dupallocN, MEM_freeN, NULL, CustomData::pool, and update_data_blocks().

Referenced by BKE_id_attribute_remove().

◆ BM_elem_float_data_get()

float BM_elem_float_data_get ( CustomData cd,
void element,
int  type 
)

◆ BM_elem_float_data_set()

void BM_elem_float_data_set ( CustomData cd,
void element,
int  type,
float  val 
)

Definition at line 996 of file bmesh_interp.c.

References CustomData_bmesh_get(), data, element, and type.

Referenced by edgetag_set_cb(), and TEST().

◆ BM_face_interp_from_face()

void BM_face_interp_from_face ( BMesh bm,
BMFace f_dst,
const BMFace f_src,
bool  do_vertex 
)

◆ BM_face_interp_from_face_ex()

void BM_face_interp_from_face_ex ( BMesh bm,
BMFace f_dst,
const BMFace f_src,
bool  do_vertex,
const void **  blocks,
const void **  blocks_v,
float(*)  cos_2d[2],
float  axis_mat[3][3] 
)

Data Interpolate From Face.

Projects target onto source, and pulls interpolated custom-data from source.

Note
Only handles loop custom-data. multi-res is handled.

Definition at line 136 of file bmesh_interp.c.

References BLI_array_alloca, bm, BM_elem_attrs_copy(), BM_FACE_FIRST_LOOP, BMVert::co, CustomData_bmesh_interp(), BMHeader::data, BMVert::head, BMLoop::head, interp_weights_poly_v2(), BMesh::ldata, BMFace::len, mul_v2_m3v3(), BMLoop::next, NULL, BMLoop::v, BMesh::vdata, and w().

Referenced by BM_face_interp_from_face(), bmo_face_inset_individual(), and bmo_inset_region_exec().

◆ BM_face_interp_multires()

void BM_face_interp_multires ( BMesh bm,
BMFace f_dst,
const BMFace f_src 
)

◆ BM_face_interp_multires_ex()

void BM_face_interp_multires_ex ( BMesh bm,
BMFace f_dst,
const BMFace f_src,
const float  f_dst_center[3],
const float  f_src_center[3],
int  cd_loop_mdisp_offset 
)

◆ BM_face_multires_bounds_smooth()

void BM_face_multires_bounds_smooth ( BMesh bm,
BMFace f 
)

Smooths boundaries between multi-res grids, including some borders in adjacent faces.

mdisps is a grid of displacements, ordered thus:

                   v4/next
                     |
 |      v1/cent-----mid2 ---> x
 |         |         |
 |         |         |
v2/prev---mid1-----v3/cur
           |
           V
           y

mdisps is a grid of displacements, ordered thus:

                   v4/next
                     |
 |      v1/cent-----mid2 ---> x
 |         |         |
 |         |         |
v2/prev---mid1-----v3/cur
           |
           V
           y

Definition at line 574 of file bmesh_interp.c.

References add_v3_v3v3(), bm, BM_ELEM_CD_GET_VOID_P, BM_ITER_ELEM, BM_LOOPS_OF_FACE, CD_MDISPS, copy_v3_v3(), CustomData_get_offset(), MDisps::disps, l, BMesh::ldata, mid_v3_v3v3(), mul_v3_fl(), BMLoop::next, BMLoop::prev, BMLoop::radial_next, sqrt(), MDisps::totdisp, BMLoop::v, and y.

Referenced by BM_edge_split(), and BM_face_split().

◆ BM_loop_interp_from_face()

void BM_loop_interp_from_face ( BMesh bm,
BMLoop l_dst,
const BMFace f_src,
bool  do_vertex,
bool  do_multires 
)

◆ BM_loop_interp_multires()

void BM_loop_interp_multires ( BMesh bm,
BMLoop l_dst,
const BMFace f_src 
)

Project the multi-resolution grid in target onto f_src's set of multi-resolution grids.

Definition at line 529 of file bmesh_interp.c.

References bm, BM_face_calc_center_median(), BM_loop_interp_multires_ex(), CD_MDISPS, CustomData_get_offset(), BMLoop::f, and BMesh::ldata.

Referenced by BM_loop_interp_from_face().

◆ BM_loop_interp_multires_ex()

void BM_loop_interp_multires_ex ( BMesh bm,
BMLoop l_dst,
const BMFace f_src,
const float  f_dst_center[3],
const float  f_src_center[3],
int  cd_loop_mdisp_offset 
)

◆ BM_vert_interp_from_face()

void BM_vert_interp_from_face ( BMesh bm,
BMVert v_dst,
const BMFace f_src 
)

◆ BM_vert_loop_groups_data_layer_create()

struct LinkNode* BM_vert_loop_groups_data_layer_create ( BMesh bm,
BMVert v,
int  layer_n,
const float loop_weights,
struct MemArena arena 
)

◆ BM_vert_loop_groups_data_layer_merge()

void BM_vert_loop_groups_data_layer_merge ( BMesh bm,
struct LinkNode groups,
int  layer_n 
)

◆ BM_vert_loop_groups_data_layer_merge_weights()

void BM_vert_loop_groups_data_layer_merge_weights ( BMesh bm,
struct LinkNode groups,
int  layer_n,
const float loop_weights 
)