[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4254] trunk/py/scripts/addons/ io_scene_obj/import_obj.py: add NGon importer support
Campbell Barton
ideasman42 at gmail.com
Sun Feb 10 14:17:07 CET 2013
Revision: 4254
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4254
Author: campbellbarton
Date: 2013-02-10 13:17:07 +0000 (Sun, 10 Feb 2013)
Log Message:
-----------
add NGon importer support
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 2013-02-10 12:58:02 UTC (rev 4253)
+++ trunk/py/scripts/addons/io_scene_obj/import_obj.py 2013-02-10 13:17:07 UTC (rev 4254)
@@ -39,6 +39,25 @@
from bpy_extras.image_utils import load_image
+def mesh_untessellate(me, fgon_edges):
+ import bmesh
+ bm = bmesh.new()
+ bm.from_mesh(me)
+ verts = bm.verts[:]
+ get = bm.edges.get
+ edges = [get((verts[key[0]], verts[key[1]])) for key in fgon_edges]
+ try:
+ bmesh.ops.dissolve_edges(bm, edges=edges, use_verts=False)
+ except:
+ # Possible dissolve fails for some edges
+ # but dont fail silently unless this is a real bug.
+ import traceback
+ traceback.print_exc()
+
+ bm.to_mesh(me)
+ bm.free()
+
+
def line_value(line_split):
"""
Returns 1 string represneting the value for this line
@@ -453,7 +472,7 @@
context_smooth_group_old = -1
# Split ngons into tri's
- fgon_edges = {} # Used for storing fgon keys
+ fgon_edges = set() # Used for storing fgon keys
if use_edges:
edges = []
@@ -537,7 +556,7 @@
for key, users in edge_users.items():
if users > 1:
- fgon_edges[key] = None
+ fgon_edges.add(key)
# remove all after 3, means we dont have to pop this one.
faces.pop(f_idx)
@@ -679,20 +698,8 @@
bm.free()
del bm
- # XXX slow
-# if use_ngons and fgon_edges:
-# for fgon_edge in fgon_edges.keys():
-# for ed in me.edges:
-# if edges_match(fgon_edge, ed.vertices):
-# ed.is_fgon = True
+ mesh_untessellate(me, fgon_edges)
-# if use_ngons and fgon_edges:
-# FGON= Mesh.EdgeFlags.FGON
-# for ed in me.findEdges( fgon_edges.keys() ):
-# if ed is not None:
-# me_edges[ed].flag |= FGON
-# del FGON
-
# XXX slow
# if unique_smooth_groups and sharp_edges:
# for sharp_edge in sharp_edges.keys():
More information about the Bf-extensions-cvs
mailing list