|
Blender
V2.93
|
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 LinkNode * | BM_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) |
| 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_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.
Definition at line 105 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, | ||
| const float | fac | ||
| ) |
Data, Interp From Verts.
Interpolates per-vertex data from two sources to v_dst
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().
| void BM_data_layer_add | ( | BMesh * | bm, |
| CustomData * | data, | ||
| int | type | ||
| ) |
Definition at line 894 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 912 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(), bpy_bmlayercollection_new(), ED_mesh_color_add(), ED_mesh_sculpt_color_add(), ED_mesh_uv_texture_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 974 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_texture_add().
| void BM_data_layer_free | ( | BMesh * | bm, |
| CustomData * | data, | ||
| int | type | ||
| ) |
Definition at line 930 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 952 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().
| float BM_elem_float_data_get | ( | CustomData * | cd, |
| void * | element, | ||
| int | type | ||
| ) |
Definition at line 1020 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, | ||
| 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().
| void BM_face_interp_from_face | ( | BMesh * | bm, |
| BMFace * | f_dst, | ||
| const BMFace * | f_src, | ||
| const bool | do_vertex | ||
| ) |
Definition at line 213 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, | ||
| 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.
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().
Definition at line 606 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], | ||
| const int | cd_loop_mdisp_offset | ||
| ) |
Definition at line 591 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 mesh_customdatacorrect_apply_vert().
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().
| void BM_loop_interp_from_face | ( | BMesh * | bm, |
| BMLoop * | l_dst, | ||
| const BMFace * | f_src, | ||
| const bool | do_vertex, | ||
| const bool | do_multires | ||
| ) |
projects a single loop, target, onto f_src for customdata interpolation. multires is handled. if do_vertex is true, target's vert data will also get interpolated.
Definition at line 737 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(), mesh_customdatacorrect_apply_vert(), and mesh_customdatacorrect_face_substitute_set().
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().
| 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 | ||
| ) |
Definition at line 791 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, | ||
| const int | layer_n, | ||
| const float * | loop_weights, | ||
| struct MemArena * | arena | ||
| ) |
Definition at line 1134 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 mesh_customdatacorrect_init_vert().
Take existing custom data and merge each fan's data.
Definition at line 1252 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 mesh_customdatacorrect_apply_vert().
| void BM_vert_loop_groups_data_layer_merge_weights | ( | BMesh * | bm, |
| LinkNode * | groups, | ||
| const 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 1267 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 mesh_customdatacorrect_apply_vert().