|
Blender V4.5
|
Functions | |
| static GroupedSpan< int > | build_vert_to_tri_map (const int verts_num, const Span< int3int3 > vert_tris, Array< int > &r_offsets, Array< int > &r_indices) |
| static IndexMask | calc_unselected_faces (const Mesh &mesh, const OffsetIndices< int > src_faces, const Span< int > src_corner_verts, const IndexMask &selection, const Span< int3int3 > corner_tris, IndexMaskMemory &memory) |
| static std::optional< int > | find_edge_duplicate (const GroupedSpan< int > vert_to_edge_map, const Span< int2int2 > edges, const OrderedEdge edge) |
| static int | calc_new_edges (const Mesh &src_mesh, const Span< int2int2 > src_edges, const IndexRange new_edges_range, MutableSpan< int2int2 > edges, MutableSpan< int > corner_edges) |
|
static |
Definition at line 509 of file mesh_triangulate.cc.
References blender::Array< T, InlineBufferCapacity, Allocator >::as_span(), BLI_SCOPED_DEFER, blender::offset_indices::build_reverse_offsets(), blender::Span< T >::cast(), blender::Span< T >::index_range(), MEM_calloc_arrayN(), MEM_freeN(), blender::threading::parallel_for(), blender::Array< T, InlineBufferCapacity, Allocator >::reinitialize(), blender::offset_indices::OffsetIndices< T >::size(), and blender::offset_indices::OffsetIndices< T >::total_size().
Referenced by calc_unselected_faces().
|
static |
Given all the edges on the new mesh, find new edges that are duplicates of existing edges. If there are any, remove them and references to them in the corner edge array.
Definition at line 628 of file mesh_triangulate.cc.
References blender::bke::mesh::build_vert_to_edge_map(), calc_new_edges(), blender::Span< T >::index_range(), blender::threading::parallel_for(), blender::MutableSpan< T >::size(), blender::Span< T >::size(), blender::MutableSpan< T >::slice(), and Mesh::verts_num.
Referenced by calc_new_edges(), and blender::geometry::mesh_triangulate().
|
static |
To avoid adding duplicate faces to the mesh without complicating the triangulation code to support that unlikely case, check if triangles (which are all unselected) have an equivalent newly created triangle, and don't copy them to the result mesh if so.
Definition at line 538 of file mesh_triangulate.cc.
References blender::IndexRangesBuilder< T >::add(), blender::IndexRangesBuilder< T >::add_range(), blender::Array< T, InlineBufferCapacity, Allocator >::as_mutable_span(), blender::OffsetSpan< T, BaseT >::base_span(), build_vert_to_tri_map(), calc_unselected_faces(), blender::Span< T >::cast(), blender::index_mask::IndexMask::complement(), blender::IndexMask::from_batch_predicate(), blender::bke::attribute_math::gather(), i, blender::offset_indices::OffsetIndices< T >::index_range(), blender::index_mask::IndexMask::is_empty(), blender::unique_sorted_indices::non_empty_as_range(), blender::unique_sorted_indices::non_empty_is_range(), blender::OffsetSpan< T, BaseT >::offset(), blender::IndexRange::one_after_last(), blender::IndexRange::shift(), blender::offset_indices::OffsetIndices< T >::size(), blender::Span< T >::size(), size(), blender::offset_indices::OffsetIndices< T >::slice(), blender::IndexRange::start(), blender::offset_indices::OffsetIndices< T >::total_size(), and Mesh::verts_num.
Referenced by calc_unselected_faces(), and blender::geometry::mesh_triangulate().
|
static |
Definition at line 608 of file mesh_triangulate.cc.
References find_edge_duplicate(), blender::OrderedEdge::v_high, and blender::OrderedEdge::v_low.
Referenced by find_edge_duplicate().