Advertisement
Guest User

Untitled

a guest
May 3rd, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.36 KB | None | 0 0
  1.  
  2. import bpy
  3. import pickle
  4. import bmesh
  5. from mathutils import Vector
  6.  
  7. try:
  8.     path =  bpy.path.abspath("//")
  9.     file = "Planet_data.txt"
  10.     with open(path+file, 'rb') as f:
  11.         MasterList = pickle.load(f)
  12.     print('loaded patch data from disk')
  13. except:
  14.     print('failed to load')    
  15.  
  16. scn = bpy.context.scene
  17.  
  18. #print(MasterList[0])
  19. patch = bpy.data.objects['Patch']
  20. X = {}
  21. for vert in patch.data.vertices:
  22.     #print(type(vertex))
  23.     #print(vert.index)
  24.     x = round(vert.co.x*16)/16
  25.     if x not in X:
  26.         X[x] = [(vert.index, round(vert.co.y*16)/16)]
  27.     else:
  28.         X[x].append((vert.index,round(vert.co.y*16)/16))
  29.        
  30. for entry in X:
  31.     X[entry].sort(key=lambda i: i[1])    
  32.     list1 = []
  33.     for item in X[entry]:
  34.         list1.append(item[0])
  35.         #print(item[0])
  36.     X[entry]=list1  
  37.          
  38. #sort x_keys and strip out the X data
  39. listA = []
  40. for entry in X:
  41.     listA.append((entry,X[entry]))
  42. listA.sort(key=lambda i: i[0])
  43. listB=[]
  44.  
  45. for entry in listA:
  46.     listB.append(entry[1])  
  47.  
  48. print(str(listB))
  49.  
  50. #listB[x][y] = vert_index                  
  51.            
  52. #MasterList = {}
  53. #print(MasterList)
  54.  
  55.    
  56. for entry in MasterList:
  57.     new_obj = patch.copy()
  58.     new_obj.data = patch.data.copy()
  59.     new_obj.name ="Gen_Patch_"+str(entry)
  60.     scn.objects.link(new_obj)
  61.     new_obj.location = MasterList[entry]["Pos"]
  62.     new_obj.rotation_euler  = MasterList[entry]["Rot"]
  63.     #print('added a mesh')
  64.     bpy.context.scene.objects.active = new_obj
  65.     bpy.ops.object.mode_set(mode = 'EDIT')
  66.     bm = bmesh.from_edit_mesh(new_obj.data)
  67.     colors = bm.loops.layers.color.active
  68.    
  69.     bm.verts.ensure_lookup_table()
  70.     if not colors:
  71.         colors = bm.loops.layers.color.new("Col")
  72.     for x in range(len(listB)):
  73.         for y in range(len(listB[x])):
  74.             data = MasterList[entry][(x,y)]
  75.             bm.verts[listB[x][y]].select = True
  76.             verts = [ v for v in bm.verts if v.select ]
  77.        
  78.             if verts:
  79.                
  80.                 for v in verts:
  81.                     for loop in v.link_loops:
  82.                         loop[colors] = data[1]
  83.                     v.normal = data[2]
  84.                     v.co = Vector(data[0])
  85.    
  86.        
  87.                    
  88.                    
  89.     bmesh.update_edit_mesh(new_obj.data)
  90.     bpy.ops.object.mode_set(mode = 'OBJECT')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement