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

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Oeser <info@graphics-engineer.com>2012-06-19 20:41:25 +0400
committerPhilipp Oeser <info@graphics-engineer.com>2012-06-19 20:41:25 +0400
commit1f3490adaf35946fa507c97b5312656d3136b65f (patch)
tree715619b37da5122c21c1518b2f07239571c59034 /io_scene_obj
parent4ba80e489434d0e85c6b235f874b1f84b2f58a32 (diff)
This should fix [#31801] "OBJ importer doesn't import smoothing groups as sharp edges" reported by Tom Penn.
There was code to mark edges as sharp but it was disabled as being too slow. Found a quicker way using bmesh. Reviewed by Campbell.
Diffstat (limited to 'io_scene_obj')
-rw-r--r--io_scene_obj/import_obj.py24
1 files changed, 21 insertions, 3 deletions
diff --git a/io_scene_obj/import_obj.py b/io_scene_obj/import_obj.py
index b60cb907..23e28913 100644
--- a/io_scene_obj/import_obj.py
+++ b/io_scene_obj/import_obj.py
@@ -644,6 +644,27 @@ def create_mesh(new_objects,
def edges_match(e1, e2):
return (e1[0] == e2[0] and e1[1] == e2[1]) or (e1[0] == e2[1] and e1[1] == e2[0])
+ me.validate()
+ me.update(calc_edges=use_edges)
+
+ if unique_smooth_groups and sharp_edges:
+ import bmesh
+ bm = bmesh.new()
+ bm.from_mesh(me)
+ # to avoid slow iterator lookups later / indexing verts is slow in bmesh
+ bm_verts = bm.verts[:]
+
+ for sharp_edge in sharp_edges.keys():
+ vert1 = bm_verts[sharp_edge[0]]
+ vert2 = bm_verts[sharp_edge[1]]
+ if vert1 != vert2:
+ edge = bm.edges.get((vert1, vert2))
+ if edge is not None:
+ me.edges[edge.index].use_edge_sharp = True
+
+ bm.free()
+ del bm
+
# XXX slow
# if use_ngons and fgon_edges:
# for fgon_edge in fgon_edges.keys():
@@ -672,9 +693,6 @@ def create_mesh(new_objects,
# me_edges[ed].flag |= SHARP
# del SHARP
- me.validate()
- me.update(calc_edges=use_edges)
-
ob = bpy.data.objects.new(me.name, me)
new_objects.append(ob)