Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/carve/patches/mesh_simplify_dissolve_edges.patch')
-rw-r--r--extern/carve/patches/mesh_simplify_dissolve_edges.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/extern/carve/patches/mesh_simplify_dissolve_edges.patch b/extern/carve/patches/mesh_simplify_dissolve_edges.patch
new file mode 100644
index 00000000000..bd671bfcbcf
--- /dev/null
+++ b/extern/carve/patches/mesh_simplify_dissolve_edges.patch
@@ -0,0 +1,46 @@
+diff -r e82d852e4fb0 include/carve/mesh_simplify.hpp
+--- a/include/carve/mesh_simplify.hpp Wed Jan 15 13:16:14 2014 +1100
++++ b/include/carve/mesh_simplify.hpp Mon Feb 24 18:02:07 2014 +0600
+@@ -32,8 +32,6 @@
+ #include <algorithm>
+ #include <vector>
+
+-#include "write_ply.hpp"
+-
+
+ namespace carve {
+ namespace mesh {
+@@ -1184,6 +1182,33 @@
+ return modifications;
+ }
+
++ void dissolveMeshEdges(mesh_t *mesh, std::unordered_set<edge_t *> dissolve_edges) {
++ while (dissolve_edges.size()) {
++ MeshSet<3>::edge_t *edge = *dissolve_edges.begin();
++ if (edge->face == edge->rev->face) {
++ dissolve_edges.erase(edge);
++ continue;
++ }
++
++ MeshSet<3>::edge_t *removed = edge->mergeFaces();
++ if (removed == NULL) {
++ dissolve_edges.erase(edge);
++ } else {
++ MeshSet<3>::edge_t *e = removed;
++ do {
++ MeshSet<3>::edge_t *n = e->next;
++ dissolve_edges.erase(std::min(e, e->rev));
++ delete e->rev;
++ delete e;
++ e = n;
++ } while (e != removed);
++ }
++ }
++
++ removeRemnantFaces(mesh);
++ cleanFaceEdges(mesh);
++ mesh->cacheEdges();
++ }
+
+
+ size_t improveMesh(meshset_t *meshset,