Blender V4.5
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
10
11#include "BLI_string_ref.hh"
12
13#include "bmesh_class.hh"
14
15struct LinkNode;
16struct MemArena;
17
19 BMLoop *l_dst,
20 const BMFace *f_src,
21 const float f_dst_center[3],
22 const float f_src_center[3],
23 int cd_loop_mdisp_offset);
27void BM_loop_interp_multires(BMesh *bm, BMLoop *l_dst, const BMFace *f_src);
28
30 BMFace *f_dst,
31 const BMFace *f_src,
32 const float f_dst_center[3],
33 const float f_src_center[3],
34 int cd_loop_mdisp_offset);
35void BM_face_interp_multires(BMesh *bm, BMFace *f_dst, const BMFace *f_src);
36
37void BM_vert_interp_from_face(BMesh *bm, BMVert *v_dst, const BMFace *f_src);
38
47 BMesh *bm, const BMVert *v_src_1, const BMVert *v_src_2, BMVert *v_dst, float fac);
56 BMesh *bm, const BMEdge *e_src_1, const BMEdge *e_src_2, BMEdge *e_dst, float fac);
64 BMesh *bm, const BMVert *v_src_1, const BMVert *v_src_2, BMVert *v, BMEdge *e, float fac);
65void BM_data_layer_add(BMesh *bm, CustomData *data, int type);
69 const CustomData *data,
70 int type,
72void BM_data_layer_free(BMesh *bm, CustomData *data, int type);
73
76
80
83
88void BM_data_layer_free_n(BMesh *bm, CustomData *data, int type, int n);
89void BM_data_layer_copy(BMesh *bm, CustomData *data, int type, int src_n, int dst_n);
90
91float BM_elem_float_data_get(CustomData *cd, void *element, int type);
92void BM_elem_float_data_set(CustomData *cd, void *element, int type, float val);
93
104 BMFace *f_dst,
105 const BMFace *f_src,
106 bool do_vertex,
107 const void **blocks,
108 const void **blocks_v,
109 float (*cos_2d)[2],
110 float axis_mat[3][3]);
111void BM_face_interp_from_face(BMesh *bm, BMFace *f_dst, const BMFace *f_src, bool do_vertex);
118 BMesh *bm, BMLoop *l_dst, const BMFace *f_src, bool do_vertex, bool do_multires);
119
125
127 BMesh *bm, BMVert *v, int layer_n, const float *loop_weights, MemArena *arena);
131void BM_vert_loop_groups_data_layer_merge(BMesh *bm, LinkNode *groups, int layer_n);
137 LinkNode *groups,
138 int layer_n,
139 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_uv_map_attr_select_and_pin_ensure(BMesh *bm)
void BM_data_layer_add_named(BMesh *bm, CustomData *data, int type, blender::StringRef name)
bool BM_data_layer_free_named(BMesh *bm, CustomData *data, blender::StringRef name)
bool BM_data_layer_has_named(const BMesh *bm, const CustomData *data, int type, blender::StringRef name)
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)
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_uv_map_attr_vert_select_ensure(BMesh *bm, blender::StringRef 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)
bool BM_uv_map_attr_pin_exists(const BMesh *bm, blender::StringRef uv_map_name)
void BM_loop_interp_from_face(BMesh *bm, BMLoop *l_dst, const BMFace *f_src, bool do_vertex, bool do_multires)
bool BM_uv_map_attr_vert_select_exists(const BMesh *bm, blender::StringRef uv_map_name)
void BM_uv_map_attr_pin_ensure(BMesh *bm, blender::StringRef uv_map_name)
void BM_data_layer_ensure_named(BMesh *bm, CustomData *data, int type, blender::StringRef name)
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_attr_edge_select_ensure(BMesh *bm, blender::StringRef 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_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.
BMesh const char void * data
BMesh * bm
ATTR_WARN_UNUSED_RESULT const void * element
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
const char * name