Advertisement
Guest User

Untitled

a guest
Apr 28th, 2016
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.17 KB | None | 0 0
  1. import bpy
  2.  
  3. #Variables
  4.  
  5.  
  6. cframe = "Current Frame String"
  7. lenframe = "0"
  8. water_filepath_directory = "C:\\cygwin64\\home\\Ryan\\fluidsim\\bakefiles\\"
  9. water_file_name = ""
  10. diffuse_file_name = "diffuse"
  11. water_filepath = "water_filepath"
  12. water_object_name = "Water Object"
  13. water_material = bpy.data.materials.get('Water')
  14.  
  15. diffuse_filepath = "diffuse_filepath"
  16. diffuse_object_name = "Diffuse Object"
  17. diffuse_material = bpy.data.materials.get('blank')
  18.  
  19.  
  20. def removeMeshFromMemory(passedObjectName):
  21.     mesh = bpy.data.meshes[passedObjectName]
  22.     mesh.user_clear()
  23.     bpy.data.meshes.remove(mesh)
  24.  
  25.  
  26. def RunPerFramePre(scene):
  27.    
  28.     bpy.ops.object.select_all(action='DESELECT')
  29.    
  30.     if water_object_name == "Water Object":
  31.         print("No object matches that name")
  32.     else:
  33.         obj = bpy.data.objects[water_object_name]
  34.         bpy.data.scenes[0].objects.unlink(obj)
  35.         bpy.data.objects.remove(obj)
  36.         removeMeshFromMemory(water_object_name)
  37.  
  38.     if diffuse_object_name == "Diffuse Object":
  39.         print("No object matches that name")
  40.     else:
  41.         obj = bpy.data.objects[diffuse_object_name]
  42.         bpy.data.scenes[0].objects.unlink(obj)
  43.         bpy.data.objects.remove(obj)
  44.         removeMeshFromMemory(diffuse_object_name)
  45.  
  46. def RunPerFramePost(scene):
  47.    
  48.     cframe = str(bpy.data.scenes["Scene"].frame_current)
  49.     lenframe = len(cframe)
  50.    
  51.     #Correct Frame Padding
  52.     if lenframe == 1:
  53.         cframe = "00000" + cframe
  54.     if lenframe == 2:
  55.         cframe = "0000" + cframe
  56.     if lenframe == 3:
  57.         cframe = "000" + cframe  
  58.        
  59.     ######################################################################
  60.    
  61.     #Get File Path
  62.     diffuse_filepath = water_filepath_directory + diffuse_file_name + cframe + ".ply"
  63.  
  64.     #Import Mesh
  65.     bpy.ops.import_mesh.ply(filepath=diffuse_filepath)
  66.    
  67.     #Append Material
  68.     global diffuse_object_name
  69.     diffuse_object_name = diffuse_file_name + cframe
  70.     diffuse_mesh = bpy.data.objects[diffuse_object_name]
  71.     diffuse_mesh.data.materials.append(diffuse_material)
  72.     diffuse_mesh.rotation_euler = (3.14159265/2, 0, 3.14159265)
  73.     diffuse_mesh.location = (0, 0, 0)
  74.    
  75.     parent = diffuse_mesh
  76.     child = bpy.data.objects['particle']
  77.     child.parent = parent
  78.    
  79.     parent.dupli_type = 'VERTS'
  80.    
  81.     bpy.ops.object.select_all(action='DESELECT')
  82.    
  83.     ############################################################################
  84.        
  85.     #Get File Path
  86.     water_filepath = water_filepath_directory + water_file_name + cframe + ".ply"
  87.  
  88.     #Import Mesh
  89.     bpy.ops.import_mesh.ply(filepath=water_filepath)
  90.    
  91.     #Append Material
  92.     global water_object_name
  93.     water_object_name = water_file_name + cframe
  94.     water_mesh = bpy.data.objects[water_object_name]
  95.     water_mesh.data.materials.append(water_material)
  96.    
  97.     water_mesh.rotation_euler = (3.14159265/2, 0, 3.14159265)
  98.     water_mesh.location = (0, 0, 0)
  99.    
  100.     for p in water_mesh.data.polygons:
  101.         p.use_smooth = True
  102.    
  103.     #Change Draw Type Depending on Vertex Count
  104.    
  105.     if 25000 < len(bpy.data.objects[water_object_name].data.vertices):
  106.         bpy.data.objects[water_object_name].draw_type = "WIRE"
  107.     if 50000 < len(bpy.data.objects[water_object_name].data.vertices):
  108.         bpy.data.objects[water_object_name].draw_type = "BOUNDS"
  109.        
  110.     bpy.ops.object.select_all(action='DESELECT')
  111.    
  112.    
  113.     print(cframe)
  114.    
  115. def RunPerSavePre(scene):
  116.     if water_object_name == "Water Object":
  117.         print("No object matches that name")
  118.     else:
  119.         obj = bpy.data.objects[water_object_name]
  120.         bpy.data.scenes[0].objects.unlink(obj)
  121.         bpy.data.objects.remove(obj)
  122.        
  123.     if diffuse_object_name == "Diffuse Object":
  124.         print("No object matches that name")
  125.     else:
  126.         obj = bpy.data.objects[diffuse_object_name]
  127.         bpy.data.scenes[0].objects.unlink(obj)
  128.         bpy.data.objects.remove(obj)
  129.    
  130. #Frame Change / Saving Function Triggers
  131. bpy.app.handlers.frame_change_pre.append(RunPerFramePre)
  132. bpy.app.handlers.frame_change_post.append(RunPerFramePost)
  133. bpy.app.handlers.save_pre.append(RunPerSavePre)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement