Blender  V2.93
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], const 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], const 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, const float fac)
 Data, Interp From Verts. More...
 
void BM_data_interp_from_edges (BMesh *bm, const BMEdge *e_src_1, const BMEdge *e_src_2, BMEdge *e_dst, const float fac)
 Data, Interp 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, const float fac)
 
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)
 
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, const float val)
 
void BM_face_interp_from_face_ex (BMesh *bm, BMFace *f_dst, const BMFace *f_src, const bool do_vertex, const void **blocks, const void **blocks_v, float(*cos_2d)[2], float axis_mat[3][3])
 Data Interp From Face. More...
 
void BM_face_interp_from_face (BMesh *bm, BMFace *f_dst, const BMFace *f_src, const bool do_vertex)
 
void BM_loop_interp_from_face (BMesh *bm, BMLoop *l_dst, const BMFace *f_src, const bool do_vertex, const 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, const int layer_n, const float *loop_weights, struct MemArena *arena)
 
void BM_vert_loop_groups_data_layer_merge (BMesh *bm, struct LinkNode *groups, const int layer_n)
 
void BM_vert_loop_groups_data_layer_merge_weights (BMesh *bm, struct LinkNode *groups, const 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,
const float  fac 
)

◆ 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,
const float  fac 
)

Data, Interp 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 105 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,
const float  fac 
)

Data, Interp 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 91 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_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,
const float  val 
)

Definition at line 1026 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,
const 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,
const bool  do_vertex,
const void **  blocks_l,
const void **  blocks_v,
float(*)  cos_2d[2],
float  axis_mat[3][3] 
)

Data Interp From Face.

projects target onto source, and pulls interpolated customdata from source.

Note
Only handles loop customdata. multires is handled.

Definition at line 180 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],
const int  cd_loop_mdisp_offset 
)

◆ BM_face_multires_bounds_smooth()

void BM_face_multires_bounds_smooth ( BMesh bm,
BMFace f 
)

smooths boundaries between multires 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 625 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,
const bool  do_vertex,
const bool  do_multires 
)

◆ BM_loop_interp_multires()

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

project the multires grid in target onto f_src's set of multires grids

Definition at line 576 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],
const 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,
const 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,
LinkNode groups,
const int  layer_n 
)

◆ BM_vert_loop_groups_data_layer_merge_weights()

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