[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3510] trunk/py/scripts/addons/ io_scene_obj/import_obj.py: This should fix [#31801] "OBJ importer doesn' t import smoothing groups as sharp edges" reported by Tom Penn.

Philipp Oeser info at graphics-engineer.com
Tue Jun 19 18:41:32 CEST 2012


Revision: 3510
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3510
Author:   lichtwerk
Date:     2012-06-19 16:41:25 +0000 (Tue, 19 Jun 2012)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/py/scripts/addons/io_scene_obj/import_obj.py

Modified: trunk/py/scripts/addons/io_scene_obj/import_obj.py
===================================================================
--- trunk/py/scripts/addons/io_scene_obj/import_obj.py	2012-06-19 13:21:28 UTC (rev 3509)
+++ trunk/py/scripts/addons/io_scene_obj/import_obj.py	2012-06-19 16:41:25 UTC (rev 3510)
@@ -644,6 +644,27 @@
     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 @@
 #                 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)
 



More information about the Bf-extensions-cvs mailing list