|
Blender V4.3
|
Go to the source code of this file.
Classes | |
| struct | UvMapVert |
| struct | UvVertMap |
| struct | UvElement |
| struct | UvElementMap |
| struct | MeshElemMap |
| struct | MeshIslandStore |
Namespaces | |
| namespace | blender |
| namespace | blender::bke |
| namespace | blender::bke::mesh |
Macros | |
| #define | STD_UV_CONNECT_LIMIT 0.0001f |
| #define | BKE_MESH_TESSTRI_VINDEX_ORDER(_tri, _v) |
Typedefs | |
| using | MeshRemapIslandsCalc |
Enumerations | |
| enum | { MISLAND_TYPE_NONE = 0 , MISLAND_TYPE_VERT = 1 , MISLAND_TYPE_EDGE = 2 , MISLAND_TYPE_POLY = 3 , MISLAND_TYPE_LOOP = 4 } |
Functions | |
| UvVertMap * | BKE_mesh_uv_vert_map_create (blender::OffsetIndices< int > faces, const bool *hide_poly, const bool *select_poly, const int *corner_verts, const float(*mloopuv)[2], unsigned int totvert, const float limit[2], bool selected, bool use_winding) |
| UvMapVert * | BKE_mesh_uv_vert_map_get_vert (UvVertMap *vmap, unsigned int v) |
| void | BKE_mesh_uv_vert_map_free (UvVertMap *vmap) |
| void | BKE_mesh_vert_corner_tri_map_create (MeshElemMap **r_map, int **r_mem, int totvert, const blender::int3 *corner_tris, int tris_num, const int *corner_verts, int corners_num) |
| void | BKE_mesh_origindex_map_create (MeshElemMap **r_map, int **r_mem, int totsource, const int *final_origindex, int totfinal) |
| void | BKE_mesh_origindex_map_create_corner_tri (MeshElemMap **r_map, int **r_mem, blender::OffsetIndices< int > faces, const int *corner_tri_faces, int corner_tris_num) |
| void | BKE_mesh_loop_islands_init (MeshIslandStore *island_store, short item_type, int items_num, short island_type, short innercut_type) |
| void | BKE_mesh_loop_islands_clear (MeshIslandStore *island_store) |
| void | BKE_mesh_loop_islands_free (MeshIslandStore *island_store) |
| void | BKE_mesh_loop_islands_add (MeshIslandStore *island_store, int item_num, const int *items_indices, int num_island_items, int *island_item_indices, int num_innercut_items, int *innercut_item_indices) |
| bool | BKE_mesh_calc_islands_loop_face_edgeseam (const float(*vert_positions)[3], int totvert, const blender::int2 *edges, int totedge, const bool *uv_seams, blender::OffsetIndices< int > faces, const int *corner_verts, const int *corner_edges, int corners_num, MeshIslandStore *r_island_store) |
| bool | BKE_mesh_calc_islands_loop_face_uvmap (float(*vert_positions)[3], int totvert, blender::int2 *edges, int totedge, const bool *uv_seams, blender::OffsetIndices< int > faces, const int *corner_verts, const int *corner_edges, int corners_num, const float(*luvs)[2], MeshIslandStore *r_island_store) |
| int * | BKE_mesh_calc_smoothgroups (int edges_num, blender::OffsetIndices< int > faces, blender::Span< int > corner_edges, blender::Span< bool > sharp_edges, blender::Span< bool > sharp_faces, int *r_totgroup, bool use_bitflags) |
| Array< int > | blender::bke::mesh::build_corner_to_face_map (OffsetIndices< int > faces) |
| GroupedSpan< int > | blender::bke::mesh::build_vert_to_edge_map (Span< int2 > edges, int verts_num, Array< int > &r_offsets, Array< int > &r_indices) |
| void | blender::bke::mesh::build_vert_to_face_indices (OffsetIndices< int > faces, Span< int > corner_verts, OffsetIndices< int > offsets, MutableSpan< int > face_indices) |
| GroupedSpan< int > | blender::bke::mesh::build_vert_to_face_map (OffsetIndices< int > faces, Span< int > corner_verts, int verts_num, Array< int > &r_offsets, Array< int > &r_indices) |
| Array< int > | blender::bke::mesh::build_vert_to_corner_indices (Span< int > corner_verts, OffsetIndices< int > offsets) |
| GroupedSpan< int > | blender::bke::mesh::build_vert_to_corner_map (Span< int > corner_verts, int verts_num, Array< int > &r_offsets, Array< int > &r_indices) |
| GroupedSpan< int > | blender::bke::mesh::build_edge_to_corner_map (Span< int > corner_edges, int edges_num, Array< int > &r_offsets, Array< int > &r_indices) |
| GroupedSpan< int > | blender::bke::mesh::build_edge_to_face_map (OffsetIndices< int > faces, Span< int > corner_edges, int edges_num, Array< int > &r_offsets, Array< int > &r_indices) |
| #define BKE_MESH_TESSTRI_VINDEX_ORDER | ( | _tri, | |
| _v ) |
Definition at line 268 of file BKE_mesh_mapping.hh.
Referenced by check_seam().
| #define STD_UV_CONNECT_LIMIT 0.0001f |
Definition at line 18 of file BKE_mesh_mapping.hh.
Referenced by BM_uv_element_map_create(), BM_uv_vert_map_create(), loop_uv_match(), blender::bke::subdiv::precalc_uv_layer(), and ss_sync_from_uv().
| using MeshRemapIslandsCalc |
Definition at line 195 of file BKE_mesh_mapping.hh.
| anonymous enum |
| Enumerator | |
|---|---|
| MISLAND_TYPE_NONE | |
| MISLAND_TYPE_VERT | |
| MISLAND_TYPE_EDGE | |
| MISLAND_TYPE_POLY | |
| MISLAND_TYPE_LOOP | |
Definition at line 156 of file BKE_mesh_mapping.hh.
| bool BKE_mesh_calc_islands_loop_face_edgeseam | ( | const float(*) | vert_positions[3], |
| int | totvert, | ||
| const blender::int2 * | edges, | ||
| int | totedge, | ||
| const bool * | uv_seams, | ||
| blender::OffsetIndices< int > | faces, | ||
| const int * | corner_verts, | ||
| const int * | corner_edges, | ||
| int | corners_num, | ||
| MeshIslandStore * | r_island_store ) |
Calculate 'generic' UV islands, i.e. based only on actual geometry data (edge seams), not some UV layers coordinates.
Definition at line 991 of file mesh_mapping.cc.
References mesh_calc_islands_loop_face_uv(), and UNUSED_VARS.
Referenced by data_transfer_get_loop_islands_generator().
| bool BKE_mesh_calc_islands_loop_face_uvmap | ( | float(*) | vert_positions[3], |
| int | totvert, | ||
| blender::int2 * | edges, | ||
| int | totedge, | ||
| const bool * | uv_seams, | ||
| blender::OffsetIndices< int > | faces, | ||
| const int * | corner_verts, | ||
| const int * | corner_edges, | ||
| int | corners_num, | ||
| const float(*) | luvs[2], | ||
| MeshIslandStore * | r_island_store ) |
Calculate UV islands.
Definition at line 1007 of file mesh_mapping.cc.
References BLI_assert, mesh_calc_islands_loop_face_uv(), and UNUSED_VARS.
| int * BKE_mesh_calc_smoothgroups | ( | int | edges_num, |
| blender::OffsetIndices< int > | faces, | ||
| blender::Span< int > | corner_edges, | ||
| blender::Span< bool > | sharp_edges, | ||
| blender::Span< bool > | sharp_faces, | ||
| int * | r_totgroup, | ||
| bool | use_bitflags ) |
Calculate smooth groups from sharp edges.
| sharp_edges | Optional (possibly empty) span. |
| sharp_faces | Optional (possibly empty) span. |
| r_totgroup | The total number of groups, 1 or more. |
Definition at line 661 of file mesh_mapping.cc.
References face_edge_loop_islands_calc(), and blender::Span< T >::is_empty().
Referenced by blender::io::obj::OBJMesh::calc_smooth_groups().
| void BKE_mesh_loop_islands_add | ( | MeshIslandStore * | island_store, |
| int | item_num, | ||
| const int * | items_indices, | ||
| int | num_island_items, | ||
| int * | island_item_indices, | ||
| int | num_innercut_items, | ||
| int * | innercut_item_indices ) |
Definition at line 769 of file mesh_mapping.cc.
References BLI_memarena_alloc(), MeshElemMap::count, MeshElemMap::indices, MeshIslandStore::innercuts, MeshIslandStore::islands, MeshIslandStore::islands_num, MeshIslandStore::islands_num_alloc, MeshIslandStore::items_to_islands, MeshIslandStore::mem, and UNLIKELY.
Referenced by mesh_calc_islands_loop_face_uv().
| void BKE_mesh_loop_islands_clear | ( | MeshIslandStore * | island_store | ) |
Definition at line 741 of file mesh_mapping.cc.
References BLI_memarena_clear(), MeshIslandStore::innercut_type, MeshIslandStore::innercuts, MeshIslandStore::island_type, MeshIslandStore::islands, MeshIslandStore::islands_num, MeshIslandStore::islands_num_alloc, MeshIslandStore::item_type, MeshIslandStore::items_to_islands, MeshIslandStore::items_to_islands_num, MeshIslandStore::mem, and MISLAND_TYPE_NONE.
Referenced by mesh_calc_islands_loop_face_uv().
| void BKE_mesh_loop_islands_free | ( | MeshIslandStore * | island_store | ) |
Definition at line 761 of file mesh_mapping.cc.
References BLI_memarena_free(), and MeshIslandStore::mem.
Referenced by BKE_mesh_remap_calc_loops_from_mesh().
| void BKE_mesh_loop_islands_init | ( | MeshIslandStore * | island_store, |
| short | item_type, | ||
| int | items_num, | ||
| short | island_type, | ||
| short | innercut_type ) |
Definition at line 707 of file mesh_mapping.cc.
References BLI_assert, BLI_memarena_alloc(), BLI_memarena_new(), BLI_MEMARENA_STD_BUFSIZE, ELEM, MeshIslandStore::innercut_type, MeshIslandStore::innercuts, MeshIslandStore::island_type, MeshIslandStore::islands, MeshIslandStore::islands_num_alloc, MeshIslandStore::item_type, MeshIslandStore::items_to_islands, MeshIslandStore::items_to_islands_num, MeshIslandStore::mem, MISLAND_DEFAULT_BUFSIZE, MISLAND_TYPE_EDGE, MISLAND_TYPE_LOOP, MISLAND_TYPE_POLY, and MISLAND_TYPE_VERT.
Referenced by mesh_calc_islands_loop_face_uv().
| void BKE_mesh_origindex_map_create | ( | MeshElemMap ** | r_map, |
| int ** | r_mem, | ||
| int | totsource, | ||
| const int * | final_origindex, | ||
| int | totfinal ) |
This function creates a map so the source-data (vert/edge/loop/face) can loop over the destination data (using the destination arrays origindex).
This has the advantage that it can operate on any data-types.
| totsource | The total number of elements that final_origindex points to. |
| totfinal | The size of final_origindex |
| final_origindex | The size of the final array. |
totsource could be faces_num, totfinal could be tottessface and final_origindex its ORIGINDEX custom-data. This would allow a face to loop over its tessfaces. Definition at line 231 of file mesh_mapping.cc.
References BLI_assert, MeshElemMap::count, indices, MeshElemMap::indices, MEM_mallocN, and ORIGINDEX_NONE.
| void BKE_mesh_origindex_map_create_corner_tri | ( | MeshElemMap ** | r_map, |
| int ** | r_mem, | ||
| blender::OffsetIndices< int > | faces, | ||
| const int * | corner_tri_faces, | ||
| int | corner_tris_num ) |
A version of BKE_mesh_origindex_map_create that takes a corner tri array. Making a face -> corner tri map.
Definition at line 272 of file mesh_mapping.cc.
References MeshElemMap::count, blender::bke::mesh::face_triangles_num(), indices, MeshElemMap::indices, MEM_mallocN, and size().
Referenced by BKE_mesh_remap_calc_loops_from_mesh().
| UvVertMap * BKE_mesh_uv_vert_map_create | ( | blender::OffsetIndices< int > | faces, |
| const bool * | hide_poly, | ||
| const bool * | select_poly, | ||
| const int * | corner_verts, | ||
| const float(*) | mloopuv[2], | ||
| unsigned int | totvert, | ||
| const float | limit[2], | ||
| bool | selected, | ||
| bool | use_winding ) |
Definition at line 36 of file mesh_mapping.cc.
References BKE_mesh_uv_vert_map_free(), BLI_buffer_declare_static, BLI_buffer_free, BLI_BUFFER_NOP, BLI_buffer_reinit_data, UvVertMap::buf, copy_v2_v2(), cross_poly_v2(), fabsf, UvMapVert::face_index, float, int, UvMapVert::loop_of_face_index, MEM_calloc_arrayN, MEM_callocN, MEM_freeN(), next, UvMapVert::next, UvMapVert::separate, size(), sub_v2_v2v2(), v, and UvVertMap::vert.
Referenced by blender::bke::subdiv::precalc_uv_layer(), and ss_sync_from_uv().
| void BKE_mesh_uv_vert_map_free | ( | UvVertMap * | vmap | ) |
Definition at line 176 of file mesh_mapping.cc.
References UvVertMap::buf, MEM_freeN(), and UvVertMap::vert.
Referenced by BKE_mesh_uv_vert_map_create(), BM_uv_vert_map_create(), blender::bke::subdiv::precalc_uv_layer(), and ss_sync_from_uv().
Definition at line 171 of file mesh_mapping.cc.
References v, and UvVertMap::vert.
Referenced by get_face_uv_map_vert(), blender::bke::subdiv::precalc_uv_layer(), and ss_sync_from_uv().
| void BKE_mesh_vert_corner_tri_map_create | ( | MeshElemMap ** | r_map, |
| int ** | r_mem, | ||
| int | totvert, | ||
| const blender::int3 * | corner_tris, | ||
| int | tris_num, | ||
| const int * | corner_verts, | ||
| int | corners_num ) |
Generates a map where the key is the edge and the value is a list of corner_tris that use that edge. The lists are allocated from one memory pool.
Definition at line 189 of file mesh_mapping.cc.
References MeshElemMap::count, indices, MeshElemMap::indices, and MEM_mallocN.
Referenced by dynamicPaint_createUVSurface().