Blender V4.3
bmesh_interp.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
11struct LinkNode;
12struct MemArena;
13
15 BMLoop *l_dst,
16 const BMFace *f_src,
17 const float f_dst_center[3],
18 const float f_src_center[3],
19 int cd_loop_mdisp_offset);
23void BM_loop_interp_multires(BMesh *bm, BMLoop *l_dst, const BMFace *f_src);
24
26 BMFace *f_dst,
27 const BMFace *f_src,
28 const float f_dst_center[3],
29 const float f_src_center[3],
30 int cd_loop_mdisp_offset);
31void BM_face_interp_multires(BMesh *bm, BMFace *f_dst, const BMFace *f_src);
32
33void BM_vert_interp_from_face(BMesh *bm, BMVert *v_dst, const BMFace *f_src);
34
43 BMesh *bm, const BMVert *v_src_1, const BMVert *v_src_2, BMVert *v_dst, float fac);
52 BMesh *bm, const BMEdge *e_src_1, const BMEdge *e_src_2, BMEdge *e_dst, float fac);
60 BMesh *bm, const BMVert *v_src_1, const BMVert *v_src_2, BMVert *v, BMEdge *e, float fac);
61void BM_data_layer_add(BMesh *bm, CustomData *data, int type);
62void BM_data_layer_add_named(BMesh *bm, CustomData *data, int type, const char *name);
63void BM_data_layer_ensure_named(BMesh *bm, CustomData *data, int type, const char *name);
64void BM_data_layer_free(BMesh *bm, CustomData *data, int type);
65
68
69void BM_uv_map_ensure_vert_select_attr(BMesh *bm, const char *uv_map_name);
70void BM_uv_map_ensure_edge_select_attr(BMesh *bm, const char *uv_map_name);
71void BM_uv_map_ensure_pin_attr(BMesh *bm, const char *uv_map_name);
72
76bool BM_data_layer_free_named(BMesh *bm, CustomData *data, const char *name);
77void BM_data_layer_free_n(BMesh *bm, CustomData *data, int type, int n);
78void BM_data_layer_copy(BMesh *bm, CustomData *data, int type, int src_n, int dst_n);
79
80float BM_elem_float_data_get(CustomData *cd, void *element, int type);
81void BM_elem_float_data_set(CustomData *cd, void *element, int type, float val);
82
93 BMFace *f_dst,
94 const BMFace *f_src,
95 bool do_vertex,
96 const void **blocks,
97 const void **blocks_v,
98 float (*cos_2d)[2],
99 float axis_mat[3][3]);
100void BM_face_interp_from_face(BMesh *bm, BMFace *f_dst, const BMFace *f_src, bool do_vertex);
107 BMesh *bm, BMLoop *l_dst, const BMFace *f_src, bool do_vertex, bool do_multires);
108
114
116 BMesh *bm, BMVert *v, int layer_n, const float *loop_weights, MemArena *arena);
120void BM_vert_loop_groups_data_layer_merge(BMesh *bm, LinkNode *groups, int layer_n);
126 LinkNode *groups,
127 int layer_n,
128 const float *loop_weights);
void BM_face_interp_multires(BMesh *bm, BMFace *f_dst, const BMFace *f_src)
void BM_data_layer_free_n(BMesh *bm, CustomData *data, int type, int n)
void BM_data_layer_free(BMesh *bm, CustomData *data, int type)
float BM_elem_float_data_get(CustomData *cd, void *element, int type)
LinkNode * BM_vert_loop_groups_data_layer_create(BMesh *bm, BMVert *v, int layer_n, const float *loop_weights, MemArena *arena)
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_vert_interp_from_face(BMesh *bm, BMVert *v_dst, const BMFace *f_src)
void BM_face_interp_from_face(BMesh *bm, BMFace *f_dst, const BMFace *f_src, bool do_vertex)
void BM_data_layer_copy(BMesh *bm, CustomData *data, int type, int src_n, int dst_n)
bool BM_data_layer_free_named(BMesh *bm, CustomData *data, const char *name)
void BM_data_layer_ensure_named(BMesh *bm, CustomData *data, int type, const char *name)
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_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_uv_map_ensure_pin_attr(BMesh *bm, const char *uv_map_name)
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.
void BM_face_multires_bounds_smooth(BMesh *bm, BMFace *f)
void BM_loop_interp_from_face(BMesh *bm, BMLoop *l_dst, const BMFace *f_src, bool do_vertex, bool do_multires)
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.
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.
void BM_elem_float_data_set(CustomData *cd, void *element, int type, float val)
void BM_uv_map_ensure_vert_select_attr(BMesh *bm, const char *uv_map_name)
void BM_uv_map_ensure_edge_select_attr(BMesh *bm, const char *uv_map_name)
void BM_vert_loop_groups_data_layer_merge_weights(BMesh *bm, LinkNode *groups, int layer_n, const float *loop_weights)
void BM_vert_loop_groups_data_layer_merge(BMesh *bm, LinkNode *groups, int layer_n)
void BM_uv_map_ensure_select_and_pin_attrs(BMesh *bm)
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.
ATTR_WARN_UNUSED_RESULT BMesh * bm
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v