Commit: 6a6e7cb5063d61de523728add997b4dcc5dbf2d2 Author: Jeroen Bakker Date: Tue Jun 7 14:45:20 2022 +0200 Branches: temp-T97352-3d-texturing-seam-bleeding-b2 https://developer.blender.org/rB6a6e7cb5063d61de523728add997b4dcc5dbf2d2
Fix writing to temp variable. =================================================================== M source/blender/blenkernel/BKE_uv_islands.hh M source/blender/blenkernel/intern/uv_islands.cc =================================================================== diff --git a/source/blender/blenkernel/BKE_uv_islands.hh b/source/blender/blenkernel/BKE_uv_islands.hh index 77c430dea7c..a463d126a4b 100644 --- a/source/blender/blenkernel/BKE_uv_islands.hh +++ b/source/blender/blenkernel/BKE_uv_islands.hh @@ -334,7 +334,7 @@ struct UVBorderEdge { } }; -using UVBorderCorner = std::pair<UVBorderEdge &, UVBorderEdge &>; +using UVBorderCorner = std::pair<UVBorderEdge *, UVBorderEdge *>; struct UVBorder { /** Ordered list of UV Verts of the border of this island. */ diff --git a/source/blender/blenkernel/intern/uv_islands.cc b/source/blender/blenkernel/intern/uv_islands.cc index e69f19b7ee8..8c1c5298d11 100644 --- a/source/blender/blenkernel/intern/uv_islands.cc +++ b/source/blender/blenkernel/intern/uv_islands.cc @@ -44,7 +44,7 @@ static std::optional<UVBorderCorner> sharpest_border_corner(UVBorder &border, fl float new_radius = border.outside_angle(edge); if (new_radius < *r_angle) { *r_angle = new_radius; - result = UVBorderCorner(border.edges[edge.prev_index], edge); + result = UVBorderCorner(&border.edges[edge.prev_index], &edge); } } return result; @@ -183,8 +183,8 @@ static void print(const Fan &fan) static void extend_at_vert(UVIsland &island, UVBorderCorner &corner, const MeshData &mesh_data) { - BLI_assert(corner.first.get_uv_vertex(1) == corner.second.get_uv_vertex(0)); - UVVertex *uv_vertex = corner.second.get_uv_vertex(0); + BLI_assert(corner.first->get_uv_vertex(1) == corner.second->get_uv_vertex(0)); + UVVertex *uv_vertex = corner.second->get_uv_vertex(0); Fan fan(*(uv_vertex->vertex)); print(fan); fan.init_uv_coordinates(*uv_vertex, island); @@ -216,7 +216,7 @@ static void extend_at_vert(UVIsland &island, UVBorderCorner &corner, const MeshD printf("Found %d new edges to add\n", num_to_add); if (num_to_add == 0) { - float2 center_uv = (corner.first.get_uv_vertex(0)->uv + corner.second.get_uv_vertex(1)->uv) / + float2 center_uv = (corner.first->get_uv_vertex(0)->uv + corner.second->get_uv_vertex(1)->uv) / 2.0f; // no new triangles found. In this case we should extend the existing borders. UVVertex center_vertex; @@ -224,46 +224,46 @@ static void extend_at_vert(UVIsland &island, UVBorderCorner &corner, const MeshD center_vertex.uv = center_uv; center_vertex.uv_edges.clear(); { - MeshPrimitive *mesh_primitive = corner.second.uv_primitive->primitive; + MeshPrimitive *mesh_primitive = corner.second->uv_primitive->primitive; UVPrimitive prim1(mesh_primitive); MeshUVVert *other_uv_vert = mesh_primitive->get_other_uv_vertex( - corner.second.edge->vertices[0]->vertex, corner.second.edge->vertices[1]->vertex); + corner.second->edge->vertices[0]->vertex, corner.second->edge->vertices[1]->vertex); center_vertex.loop = other_uv_vert->loop; center_vertex.vertex = other_uv_vert->vertex; UVVertex *center_vertex_ptr = island.lookup_or_create(center_vertex); UVEdge edge_template; - edge_template.vertices[0] = corner.first.get_uv_vertex(1); - edge_template.vertices[1] = corner.first.get_uv_vertex(0); + edge_template.vertices[0] = corner.first->get_uv_vertex(1); + edge_template.vertices[1] = corner.first->get_uv_vertex(0); prim1.edges.append(island.lookup_or_create(edge_template)); - edge_template.vertices[0] = corner.first.get_uv_vertex(0); + edge_template.vertices[0] = corner.first->get_uv_vertex(0); edge_template.vertices[1] = center_vertex_ptr; prim1.edges.append(island.lookup_or_create(edge_template)); edge_template.vertices[0] = center_vertex_ptr; - edge_template.vertices[1] = corner.first.get_uv_vertex(1); + edge_template.vertices[1] = corner.first->get_uv_vertex(1); prim1.edges.append(island.lookup_or_create(edge_template)); prim1.append_to_uv_edges(); prim1.append_to_uv_vertices(); island.uv_primitives.append(prim1); } { - MeshPrimitive *mesh_primitive = corner.first.uv_primitive->primitive; + MeshPrimitive *mesh_primitive = corner.first->uv_primitive->primitive; UVPrimitive prim1(mesh_primitive); MeshUVVert *other_uv_vert = mesh_primitive->get_other_uv_vertex( - corner.first.edge->vertices[0]->vertex, corner.first.edge->vertices[1]->vertex); + corner.first->edge->vertices[0]->vertex, corner.first->edge->vertices[1]->vertex); center_vertex.loop = other_uv_vert->loop; center_vertex.vertex = other_uv_vert->vertex; /* TODO: Should be reversed. */ UVVertex *center_vertex_ptr = island.lookup_or_create(center_vertex); UVEdge edge_template; - edge_template.vertices[0] = corner.second.get_uv_vertex(1); - edge_template.vertices[1] = corner.second.get_uv_vertex(0); + edge_template.vertices[0] = corner.second->get_uv_vertex(1); + edge_template.vertices[1] = corner.second->get_uv_vertex(0); prim1.edges.append(island.lookup_or_create(edge_template)); - edge_template.vertices[0] = corner.second.get_uv_vertex(0); + edge_template.vertices[0] = corner.second->get_uv_vertex(0); edge_template.vertices[1] = center_vertex_ptr; prim1.edges.append(island.lookup_or_create(edge_template)); edge_template.vertices[0] = center_vertex_ptr; - edge_template.vertices[1] = corner.second.get_uv_vertex(1); + edge_template.vertices[1] = corner.second->get_uv_vertex(1); prim1.edges.append(island.lookup_or_create(edge_template)); prim1.append_to_uv_edges(); prim1.append_to_uv_vertices(); @@ -405,7 +405,7 @@ void UVIsland::extend_border(const UVIslandsMask &mask, border.update_indexes(border_index++); } - int i = 5; + int i = 4; while (i) { std::optional<UVBorderCorner> extension_corner = sharpest_border_corner(*this); if (!extension_corner.has_value()) { @@ -413,8 +413,8 @@ void UVIsland::extend_border(const UVIslandsMask &mask, } /* When outside the mask, the uv should not be considered for extension. */ - if (!mask.is_masked(island_index, extension_corner->second.get_uv_vertex(0)->uv)) { - extension_corner->second.flags.extendable = false; + if (!mask.is_masked(island_index, extension_corner->second->get_uv_vertex(0)->uv)) { + extension_corner->second->flags.extendable = false; continue; } @@ -422,7 +422,7 @@ void UVIsland::extend_border(const UVIslandsMask &mask, extend_at_vert(*this, *extension_corner, mesh_data); /* Mark that the vert is extended. Unable to extend twice. */ - extension_corner->second.flags.extendable = false; + extension_corner->second->flags.extendable = false; i--; #ifdef DEBUG_SVG svg(of, *this, step++); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs