This appears to be a pre-existing issue that got exposed by the refactor for some files, while for others it was already happening. Pull Request: https://projects.blender.org/blender/blender/pulls/136680
This commit is contained in:
committed by
Brecht Van Lommel
parent
448d3d04d9
commit
0fd360428a
29
extern/quadriflow/patches/blender.patch
vendored
29
extern/quadriflow/patches/blender.patch
vendored
@@ -521,21 +521,18 @@ index a93c58ac2a7..8c682b6d9f2 100644
|
|||||||
VectorXi &V2E, VectorXi &E2E, VectorXi &boundary, VectorXi &nonmanifold,
|
VectorXi &V2E, VectorXi &E2E, VectorXi &boundary, VectorXi &nonmanifold,
|
||||||
std::vector<Vector2i> &edge_diff, std::vector<DEdge> &edge_values,
|
std::vector<Vector2i> &edge_diff, std::vector<DEdge> &edge_values,
|
||||||
std::vector<Vector3i> &face_edgeOrients, std::vector<Vector3i> &face_edgeIds,
|
std::vector<Vector3i> &face_edgeOrients, std::vector<Vector3i> &face_edgeIds,
|
||||||
diff --git a/intern/quadriflow/quadriflow_capi.cpp b/intern/quadriflow/quadriflow_capi.cpp
|
diff --git a/extern/quadriflow/src/optimizer.cpp b/extern/quadriflow/src/optimizer.cpp
|
||||||
index fad604f679a..014ac2a5613 100644
|
index 1c59ad0f70c..f8836ed0d0e 100644
|
||||||
--- a/intern/quadriflow/quadriflow_capi.cpp
|
--- a/extern/quadriflow/src/optimizer.cpp
|
||||||
+++ b/intern/quadriflow/quadriflow_capi.cpp
|
+++ b/extern/quadriflow/src/optimizer.cpp
|
||||||
@@ -190,8 +190,11 @@ void QFLOW_quadriflow_remesh(QuadriflowRemeshData *qrd,
|
@@ -1296,7 +1296,9 @@ void Optimizer::optimize_integer_constraints(Hierarchy& mRes, std::map<int, int>
|
||||||
return;
|
solver = std::make_unique<GurobiFlowHelper>();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
- solver->resize(initial.size() + 2, arc_ids.size());
|
||||||
|
+ /* This used to be arc_ids.size() which is wrong, the loop below adds
|
||||||
|
+ * exactly arcs.size() edges. */
|
||||||
|
+ solver->resize(initial.size() + 2, arcs.size());
|
||||||
|
|
||||||
- /* Compute the final quad geomtry using a maxflow solver */
|
std::set<int> ids;
|
||||||
- field.ComputeIndexMap();
|
for (int i = 0; i < arcs.size(); ++i) {
|
||||||
+ /* Compute the final quad geometry using a maxflow solver */
|
|
||||||
+ if (!field.ComputeIndexMap()) {
|
|
||||||
+ /* Error computing the result. */
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (check_if_canceled(0.9f, update_cb, update_cb_data)) {
|
|
||||||
return;
|
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ class BoykovKolmogorovMaxFlow {
|
|||||||
const int target,
|
const int target,
|
||||||
const int capacity)
|
const int capacity)
|
||||||
{
|
{
|
||||||
|
assert(edge < m_graph_edges.size());
|
||||||
|
|
||||||
m_graph_edges[edge] = Edge{source, target};
|
m_graph_edges[edge] = Edge{source, target};
|
||||||
m_graph_out_edges[source].push_back(edge);
|
m_graph_out_edges[source].push_back(edge);
|
||||||
m_rev_edge_map[edge] = reverse_edge;
|
m_rev_edge_map[edge] = reverse_edge;
|
||||||
|
|||||||
4
extern/quadriflow/src/optimizer.cpp
vendored
4
extern/quadriflow/src/optimizer.cpp
vendored
@@ -1296,7 +1296,9 @@ void Optimizer::optimize_integer_constraints(Hierarchy& mRes, std::map<int, int>
|
|||||||
solver = std::make_unique<GurobiFlowHelper>();
|
solver = std::make_unique<GurobiFlowHelper>();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
solver->resize(initial.size() + 2, arc_ids.size());
|
/* This used to be arc_ids.size() which is wrong, the loop below adds
|
||||||
|
* exactly arcs.size() edges. */
|
||||||
|
solver->resize(initial.size() + 2, arcs.size());
|
||||||
|
|
||||||
std::set<int> ids;
|
std::set<int> ids;
|
||||||
for (int i = 0; i < arcs.size(); ++i) {
|
for (int i = 0; i < arcs.size(); ++i) {
|
||||||
|
|||||||
Reference in New Issue
Block a user