[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14951] branches/apricot/release/scripts/ mesh_poly_reduce_grid.py: added uvlayer and material support for grid reduction, (for apricot
Campbell Barton
ideasman42 at gmail.com
Sun May 25 00:38:02 CEST 2008
Revision: 14951
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14951
Author: campbellbarton
Date: 2008-05-25 00:38:02 +0200 (Sun, 25 May 2008)
Log Message:
-----------
added uvlayer and material support for grid reduction, (for apricot
terrain)
Modified Paths:
--------------
branches/apricot/release/scripts/mesh_poly_reduce_grid.py
Modified: branches/apricot/release/scripts/mesh_poly_reduce_grid.py
===================================================================
--- branches/apricot/release/scripts/mesh_poly_reduce_grid.py 2008-05-24 18:43:02 UTC (rev 14950)
+++ branches/apricot/release/scripts/mesh_poly_reduce_grid.py 2008-05-24 22:38:02 UTC (rev 14951)
@@ -90,7 +90,7 @@
verts_used[grid_data_ls[0][0]] = 1 # start touching 1!
# From the corner vert, get the 2 edges that are not the corner or its opposing vert, this edge will make a new face
- quad_edge_mapping = (3,1), (2,0), (1,3), (0,2)
+ quad_edge_mapping = (1,3), (2,0), (1,3), (0,2) # hi-low, low-hi order is intended
tri_edge_mapping = (1,2), (0,2), (0,1)
done_somthing = True
@@ -104,7 +104,6 @@
grid_data_dict[vi] = face_ls
grid_data_ls.pop( grid_data_ls_index )
break
-
elif len(face_ls) == 4:
# print vi
if verts_used[vi] == 1:
@@ -206,6 +205,7 @@
for vi, face_ls in grid_data_dict.iteritems():
if len(face_ls) == 4:
new_faces.append( faceCombine4(vi, face_ls) )
+ #pass
if len(face_ls) == 3: # 3 triangles
face = list(faces_set_verts(face_ls))
face.remove(vi)
@@ -225,11 +225,72 @@
faces_remove.extend(face_ls)
'''
+ orig_facelen = len(me.faces)
+
+ orig_faces = list(me.faces)
me.faces.extend(new_faces, ignoreDups=True)
+ new_faces = list(me.faces)[len(orig_faces):]
+
+
+
+
+
+ if me.faceUV:
+ uvnames = me.getUVLayerNames()
+ act_uvlay = me.activeUVLayer
+
+ vert_faces_uvs = []
+ vert_faces_images = []
+
+
+ act_uvlay = me.activeUVLayer
+
+ for uvlay in uvnames:
+ me.activeUVLayer = uvlay
+ vert_faces_uvs[:] = [None] * len(me.verts)
+ vert_faces_images[:] = vert_faces_uvs[:]
+
+ for i,f in enumerate(orig_faces):
+ img = f.image
+ fv = f.v
+ uv = f.uv
+ mat = f.mat
+ for i,v in enumerate(fv):
+ vi = v.index
+ vert_faces_uvs[vi] = uv[i] # no nice averaging
+ vert_faces_images[vi] = img
+
+
+ # Now copy UVs across
+ for f in new_faces:
+ fi = [v.index for v in f.v]
+ f.image = vert_faces_images[fi[0]]
+ uv = f.uv
+ for i,vi in enumerate(fi):
+ uv[i][:] = vert_faces_uvs[vi]
+
+ if len(me.materials) > 1:
+ vert_faces_mats = [None] * len(me.verts)
+ for i,f in enumerate(orig_faces):
+ mat = f.mat
+ for i,v in enumerate(f.v):
+ vi = v.index
+ vert_faces_mats[vi] = mat
+
+ # Now copy UVs across
+ for f in new_faces:
+ print vert_faces_mats[f.v[0].index]
+ f.mat = vert_faces_mats[f.v[0].index]
+
+
me.verts.delete(grid_data_dict.keys())
# me.faces.delete(1, faces_remove)
+ if me.faceUV:
+ me.activeUVLayer = act_uvlay
+
+ me.calcNormals()
def main():
More information about the Bf-blender-cvs
mailing list