50 edges_of_vert_.reinitialize(verts_num);
53 void add(
const int edge_i,
const int v1,
const int v2)
55 edges_of_vert_[v1].append(edge_i);
56 edges_of_vert_[
v2].append(edge_i);
60 return edges_of_vert_[vert_i];
71 primitives_of_edge_.reinitialize(edges_num);
74 void add(
const int primitive_i,
const int edge_i)
76 primitives_of_edge_[edge_i].append(primitive_i);
80 return primitives_of_edge_[edge_i];
91 edges_of_triangle_.reinitialize(edges_num);
96 std::copy(edges.
begin(), edges.
end(), edges_of_triangle_[tri_i].begin());
100 return edges_of_triangle_[tri_i];
168 bool has_same_uv_vertices(
const UVEdge &other)
const;
240 float2 uv(
float factor,
float min_uv_distance);
311 const short island_index);
375 void dilate(
int max_iterations);
ATTR_WARN_UNUSED_RESULT const BMVert * v2
unsigned long long int uint64_t
constexpr const T * end() const
constexpr const T * begin() const
Span< int > operator[](const int edge_i) const
EdgeToPrimitiveMap(const int edges_num)
void add(const int primitive_i, const int edge_i)
EdgeToPrimitiveMap()=delete
void add(const Span< int > edges, const int tri_i)
Span< int > operator[](const int tri_i) const
TriangleToEdgeMap()=delete
TriangleToEdgeMap(const int edges_num)
void add(const int edge_i, const int v1, const int v2)
VertToEdgeMap(const int verts_num)
Span< int > operator[](const int vert_i) const
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
VecBase< uint16_t, 2 > ushort2
VertToEdgeMap vert_to_edge_map
OffsetIndices< int > faces
TriangleToEdgeMap primitive_to_edge_map
Span< float3 > vert_positions
EdgeToPrimitiveMap edge_to_primitive_map
Array< int > uv_island_ids
MeshData(OffsetIndices< int > faces, Span< int3 > corner_tris, Span< int > corner_verts, Span< float2 > uv_map, Span< float3 > vert_positions)
bool connected_in_mesh() const
float2 uv(float factor, float min_uv_distance)
UVBorderCorner(UVBorderEdge *first, UVBorderEdge *second, float angle)
UVBorderEdge(UVEdge *edge, UVPrimitive *uv_primitive)
UVPrimitive * uv_primitive
UVVertex * get_uv_vertex(int index)
const UVVertex * get_other_uv_vertex() const
float outside_angle(const UVBorderEdge &edge) const
static std::optional< UVBorder > extract_from_edges(Vector< UVBorderEdge > &edges)
void update_indexes(uint64_t border_index)
void remove(int64_t index)
Vector< UVBorderEdge > edges
bool is_border_edge() const
bool has_same_vertices(const int2 &edge) const
bool has_shared_edge(Span< float2 > uv_map, const int loop_1, const int loop_2) const
std::array< UVVertex *, 2 > vertices
UVVertex * get_other_uv_vertex(const int vertex_index)
Vector< int, 2 > uv_primitive_indices
VectorList< UVPrimitive > uv_primitives
Vector< UVBorder > borders
VectorList< UVVertex > uv_vertices
Map< int64_t, Vector< UVVertex * > > uv_vertex_lookup
void print_debug(const MeshData &mesh_data) const
bool has_shared_edge(const UVPrimitive &primitive) const
void extend_border(const MeshData &mesh_data, const UVIslandsMask &mask, const short island_index)
VectorList< UVEdge > uv_edges
UVVertex * lookup_or_create(const UVVertex &vertex)
UVVertex * lookup(const UVVertex &vertex)
Tile(float2 udim_offset, ushort2 tile_resolution)
bool is_masked(const uint16_t island_index, const float2 uv) const
bool contains(const float2 uv) const
float get_pixel_size_in_uv_space() const
void dilate(int max_iterations)
void add(const MeshData &mesh_data, const UVIslands &islands)
const Tile * find_tile(const float2 uv) const
bool is_masked(const uint16_t island_index, const float2 uv) const
void add_tile(float2 udim_offset, ushort2 resolution)
UVIslands(const MeshData &mesh_data)
void extend_borders(const MeshData &mesh_data, const UVIslandsMask &islands_mask)
Vector< UVIsland > islands
void print_debug(const MeshData &mesh_data) const
Vector< std::pair< UVEdge *, UVEdge * > > shared_edges(UVPrimitive &other)
UVPrimitive(const int primitive_i)
UVEdge * get_uv_edge(const float2 uv1, const float2 uv2) const
bool has_shared_edge(const UVPrimitive &other) const
Vector< UVEdge *, 3 > edges
UVBorder extract_border() const
const UVVertex * get_other_uv_vertex(const UVVertex *v1, const UVVertex *v2) const
bool contains_uv_vertex(const UVVertex *uv_vertex) const
const UVVertex * get_uv_vertex(const MeshData &mesh_data, const uint8_t mesh_vert_index) const
struct blender::bke::pbvh::uv_islands::UVVertex::@146070211233272321030042025306175335142241112375 flags
Vector< UVEdge * > uv_edges