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:
authorCampbell Barton <ideasman42@gmail.com>2006-07-02 00:26:07 +0400
committerCampbell Barton <ideasman42@gmail.com>2006-07-02 00:26:07 +0400
commit577494dc05241df82099e55aa73b9e4390e54a6b (patch)
tree32ac80cf4a388fe12b751ce5ee84b8e8e145820a /release
parent51f0717a783f1120884ad6a648ee9ec1d3da04c1 (diff)
Further tweaking to the scanfill stuff
Diffstat (limited to 'release')
-rw-r--r--release/scripts/bpymodules/BPyMesh.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/release/scripts/bpymodules/BPyMesh.py b/release/scripts/bpymodules/BPyMesh.py
index 545d44b00be..8e93a51916f 100644
--- a/release/scripts/bpymodules/BPyMesh.py
+++ b/release/scripts/bpymodules/BPyMesh.py
@@ -571,7 +571,107 @@ def getUvPixelLoc(face, pxLoc, img_size = None, uvArea = None):
type_tuple= type( (0,) )
type_list= type( [] )
+
+
+def draw_loops(loops):
+
+ me= Blender.Mesh.New()
+ for l in loops:
+
+ i= len(me.verts)
+ me.verts.extend([v[0] for v in l])
+ try:
+ me.verts[0].sel= 1
+ except:
+ pass
+ me.edges.extend([ (j-1, j) for j in xrange(i+1, len(me.verts)) ])
+ # Close the edge?
+ #me.edges.extend((i, len(me.verts)-1))
+
+ # Fill
+ #fill= Blender.Mathutils.PolyFill(loops)
+ #me.faces.extend(fill)
+
+
+ ob= Blender.Object.New('Mesh')
+ ob.link(me)
+ scn= Blender.Scene.GetCurrent()
+ scn.link(ob)
+ ob.Layers= scn.Layers
+ ob.sel= 1
+
+"""
+def ngon(from_data, indices, PREF_FIX_LOOPS= True):
+ Vector= Blender.Mathutils.Vector
+
+ def rvec(co): return round(co.x, 5), round(co.y, 5), round(co.z, 5)
+ def vert_treplet(v, i):
+ return v, rvec(v), i
+
+ if type(from_data) in (type_tuple, type_list):
+ verts= [vert_treplet(Vector(from_data[i]), ii) for ii, i in enumerate(indices)]
+ else:
+ verts= [vert_treplet(from_data.verts[i].co, ii) for ii, i in enumerate(indices)]
+
+ if PREF_FIX_LOOPS:
+
+
+ len_verts= len(verts)
+ loop_list= []
+ vert_dict= {}
+ i= 1
+ while i<len(verts):
+
+ vertkey= verts[i][1]
+
+ loop_idx= 0
+ try: # is this a loop back on one of the last edges?
+ loop_idx= vert_dict[vertkey]
+
+ except:
+ vert_dict[vertkey]= i
+
+ if loop_idx and abs(loop_idx-i)>2:
+
+ # print 'Found loop', i-loop_idx
+ loop_list.append(verts[loop_idx:i])
+ #print loop_list
+ verts[loop_idx:i+1]= [] #verts[loop_idx:i+1]= []
+ i= loop_idx+1
+
+ for v in loop_list[-1]:
+ try:
+ del vert_dict[v[1]]
+ except:
+ pass
+
+
+ i+=1
+
+ loop_list.append(verts)
+
+
+
+
+ # vert mapping
+ vert_map= [None]*len(indices)
+ ii=0
+ for verts in loop_list:
+ for i, vert in enumerate(verts):
+ vert_map[i+ii]= vert[2]
+
+ ii+=len(verts)
+
+ fill= Blender.Mathutils.PolyFill([ [v[0] for v in loop] for loop in loop_list])
+ #draw_loops(loop_list)
+ #raise 'loopy'
+ # map to original indicies
+
+ return [[vert_map[i] for i in reversed(f)] for f in fill]
+"""
+
def ngon(from_data, indices, PREF_FIX_LOOPS= True):
+ # print 'NGON', len(indices)
'''
takes a polyline of indices (fgon)
and returns a list of face indicie lists.