Blender
V3.3
|
Go to the source code of this file.
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.
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.
Definition at line 75 of file bmesh_interp.c.
References bm, bm_data_interp_from_elem(), and BMesh::edata.
Referenced by bm_edge_collapse().
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
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().
void BM_data_layer_add | ( | BMesh * | bm, |
CustomData * | data, | ||
int | type | ||
) |
Definition at line 839 of file bmesh_interp.c.
References bm, CD_DEFAULT, CustomData_add_layer(), data, CustomData::layers, MEM_dupallocN, MEM_freeN, NULL, type, and update_data_blocks().
Referenced by BKE_mesh_ensure_facemap_customdata(), BKE_mesh_ensure_skin_customdata(), BM_custom_loop_normals_to_vector_layer(), BM_lnorspacearr_store(), BM_loop_normal_editdata_array_init(), BM_mesh_cd_flag_apply(), BM_mesh_wireframe(), bmo_bisect_edges_exec(), bmo_subdivide_edges_exec(), BPy_BMEdge_CreatePyObject(), BPy_BMesh_CreatePyObject(), BPy_BMFace_CreatePyObject(), bpy_bmlayercollection_new(), bpy_bmlayercollection_verify(), BPy_BMLoop_CreatePyObject(), BPy_BMVert_CreatePyObject(), build_skin(), edgetag_ensure_cd_flag(), face_map_assign_exec(), fmap_select(), mesh_customdata_custom_splitnormals_add_exec(), SCULPT_dynamic_topology_enable_ex(), sculpt_undo_bmesh_enable(), skin_smooth_hulls(), TEST(), and vgroup_assign_verts().
void BM_data_layer_add_named | ( | BMesh * | bm, |
CustomData * | data, | ||
int | type, | ||
const char * | name | ||
) |
Definition at line 857 of file bmesh_interp.c.
References bm, CD_DEFAULT, CustomData_add_layer_named(), data, CustomData::layers, MEM_dupallocN, MEM_freeN, NULL, type, and update_data_blocks().
Referenced by bevel_set_weighted_normal_face_strength(), BKE_id_attribute_new(), bpy_bmlayercollection_new(), blender::nodes::node_geo_mesh_primitive_ico_sphere_cc::create_ico_sphere_mesh(), ED_mesh_color_add(), ED_mesh_sculpt_color_add(), ED_mesh_uv_add(), edbm_mod_weighted_strength_exec(), EDBM_verts_mirror_cache_begin_ex(), and SCULPT_dyntopo_node_layers_add().
void BM_data_layer_copy | ( | BMesh * | bm, |
CustomData * | data, | ||
int | type, | ||
int | src_n, | ||
int | dst_n | ||
) |
Definition at line 944 of file bmesh_interp.c.
References BLI_assert, bm, BM_EDGES_OF_MESH, BM_FACES_OF_MESH, BM_ITER_ELEM, BM_ITER_MESH, BM_LOOPS_OF_FACE, BM_VERTS_OF_MESH, CustomData_bmesh_get_n(), CustomData_bmesh_set_n(), BMHeader::data, data, BMesh::edata, BMVert::head, BMEdge::head, BMLoop::head, BMFace::head, l, BMesh::ldata, BMesh::pdata, ptr, type, and BMesh::vdata.
Referenced by bpy_bmlayeritem_copy_from(), ED_mesh_color_add(), ED_mesh_sculpt_color_add(), and ED_mesh_uv_add().
void BM_data_layer_free | ( | BMesh * | bm, |
CustomData * | data, | ||
int | type | ||
) |
Definition at line 875 of file bmesh_interp.c.
References BLI_assert, bm, CustomData_free_layer_active(), data, CustomData::layers, MEM_dupallocN, MEM_freeN, NULL, type, UNUSED_VARS_NDEBUG, and update_data_blocks().
Referenced by BKE_mesh_clear_facemap_customdata(), BM_mesh_cd_flag_apply(), bpy_bmesh_dealloc(), mesh_customdata_clear_exec__internal(), modifier_skin_customdata_delete(), and multires_customdata_delete().
void BM_data_layer_free_n | ( | BMesh * | bm, |
CustomData * | data, | ||
int | type, | ||
int | n | ||
) |
Definition at line 922 of file bmesh_interp.c.
References BLI_assert, bm, CustomData_free_layer(), CustomData_get_layer_index_n(), data, CustomData::layers, MEM_dupallocN, MEM_freeN, NULL, type, UNUSED_VARS_NDEBUG, and update_data_blocks().
Referenced by bmo_bisect_edges_exec(), bmo_subdivide_edges_exec(), bpy_bmlayercollection_remove(), delete_customdata_layer(), and skin_smooth_hulls().
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().
float BM_elem_float_data_get | ( | CustomData * | cd, |
void * | element, | ||
int | type | ||
) |
Definition at line 990 of file bmesh_interp.c.
References CustomData_bmesh_get(), data, element, and type.
Referenced by bevel_vert_construct(), edgetag_test_cb(), modifyMesh(), offset_meet_lines_percent_or_absolute(), offset_on_edge_between(), sculpt_face_sets_init_bevel_weight_test(), sculpt_face_sets_init_crease_test(), and TEST().
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().
Definition at line 169 of file bmesh_interp.c.
References axis_dominant_v3_to_m3(), BLI_array_alloca, BLI_assert, bm, BM_FACE_FIRST_LOOP, BM_face_interp_from_face_ex(), BM_face_is_normal_valid(), BMVert::co, BMHeader::data, float(), BMVert::head, BMLoop::head, BMFace::len, mul_v2_m3v3(), BMLoop::next, BMFace::no, NULL, and BMLoop::v.
Referenced by bpy_bmface_copy_from_face_interp().
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.
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().
Definition at line 559 of file bmesh_interp.c.
References bm, BM_face_calc_center_median(), BM_face_interp_multires_ex(), CD_MDISPS, CustomData_get_offset(), and BMesh::ldata.
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 | ||
) |
Definition at line 544 of file bmesh_interp.c.
References bm, BM_FACE_FIRST_LOOP, BM_loop_interp_multires_ex(), and BMLoop::next.
Referenced by BM_edge_split(), BM_face_interp_multires(), BM_face_split(), BM_face_triangulate(), bmo_poke_exec(), and tc_mesh_customdatacorrect_apply_vert().
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().
void BM_loop_interp_from_face | ( | BMesh * | bm, |
BMLoop * | l_dst, | ||
const BMFace * | f_src, | ||
bool | do_vertex, | ||
bool | do_multires | ||
) |
Projects a single loop, target, onto f_src for custom-data interpolation. multi-resolution is handled.
do_vertex | When true the target's vert data will also get interpolated. |
Definition at line 682 of file bmesh_interp.c.
References axis_dominant_v3_to_m3(), BLI_array_alloca, BLI_assert, bm, BM_face_calc_tangent_auto(), BM_FACE_FIRST_LOOP, BM_face_is_normal_valid(), BM_loop_interp_multires(), BMVert::co, copy_v3_v3(), CustomData_bmesh_interp(), BMHeader::data, float(), BMVert::head, BMLoop::head, interp_weights_poly_v2(), is_zero_v3(), BMesh::ldata, BMFace::len, mul_v2_m3v3(), BMLoop::next, BMFace::no, normalize_v3(), NULL, ortho_v3_v3(), BMLoop::v, BMesh::vdata, and w().
Referenced by bev_create_ngon(), BM_face_split_n(), bmo_poke_exec(), bpy_bmloop_copy_from_face_interp(), tc_mesh_customdatacorrect_apply_vert(), and tc_mesh_customdatacorrect_face_substitute_set().
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().
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 | ||
) |
Definition at line 736 of file bmesh_interp.c.
References axis_dominant_v3_to_m3(), BLI_array_alloca, BLI_assert, bm, BM_FACE_FIRST_LOOP, BM_face_is_normal_valid(), BMVert::co, CustomData_bmesh_interp(), BMHeader::data, float(), BMVert::head, interp_weights_poly_v2(), BMFace::len, mul_v2_m3v3(), BMLoop::next, BMFace::no, NULL, BMLoop::v, BMesh::vdata, and w().
Referenced by bpy_bmvert_copy_from_face_interp().
struct LinkNode* BM_vert_loop_groups_data_layer_create | ( | BMesh * | bm, |
BMVert * | v, | ||
int | layer_n, | ||
const float * | loop_weights, | ||
struct MemArena * | arena | ||
) |
Definition at line 1104 of file bmesh_interp.c.
References LoopWalkCtx::arena, BLI_assert, BLI_linklist_prepend_arena(), BLI_memarena_alloc(), bm, BM_ELEM_CD_GET_VOID_P, BM_elem_flag_enable, BM_elem_flag_test, BM_elem_index_set, BM_ELEM_INTERNAL_TAG, BM_ITER_ELEM, BM_LOOP, bm_loop_walk_data(), BM_LOOPS_OF_VERT, LoopWalkCtx::cd_layer_offset, copy_vn_fl(), LoopGroupCD::data, LoopWalkCtx::data_array, LoopGroupCD::data_index, LoopWalkCtx::data_index_array, LoopWalkCtx::data_len, LoopGroupCD::data_len, LoopWalkCtx::data_ref, LoopGroupCD::data_weights, BMesh::elem_index_dirty, l, CustomData::layers, BMesh::ldata, LIKELY, LoopWalkCtx::loop_weights, mul_vn_fl(), NULL, CustomDataLayer::offset, LoopWalkCtx::type, CustomDataLayer::type, v, LoopWalkCtx::weight_accum, and LoopWalkCtx::weight_array.
Referenced by tc_mesh_customdatacorrect_init_vert().
Take existing custom data and merge each fan's data.
Definition at line 1219 of file bmesh_interp.c.
References bm, bm_vert_loop_groups_data_layer_merge__single(), CustomData_sizeof(), CustomData::layers, BMesh::ldata, LinkNode::link, LinkNode::next, size(), type, and CustomDataLayer::type.
Referenced by tc_mesh_customdatacorrect_apply_vert().
void BM_vert_loop_groups_data_layer_merge_weights | ( | BMesh * | bm, |
struct LinkNode * | groups, | ||
int | layer_n, | ||
const float * | loop_weights | ||
) |
A version of BM_vert_loop_groups_data_layer_merge that takes an array of loop-weights (aligned with BM_LOOPS_OF_VERT iterator).
Definition at line 1230 of file bmesh_interp.c.
References bm, bm_vert_loop_groups_data_layer_merge_weights__single(), CustomData_sizeof(), CustomData::layers, BMesh::ldata, LinkNode::link, LinkNode::next, size(), type, and CustomDataLayer::type.
Referenced by tc_mesh_customdatacorrect_apply_vert().