Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import bpy
- #Variables
- cframe = "Current Frame String"
- lenframe = "0"
- water_filepath_directory = "C:\\cygwin64\\home\\Ryan\\fluidsim\\bakefiles\\"
- water_file_name = ""
- diffuse_file_name = "diffuse"
- water_filepath = "water_filepath"
- water_object_name = "Water Object"
- water_material = bpy.data.materials.get('Water')
- diffuse_filepath = "diffuse_filepath"
- diffuse_object_name = "Diffuse Object"
- diffuse_material = bpy.data.materials.get('blank')
- def removeMeshFromMemory(passedObjectName):
- mesh = bpy.data.meshes[passedObjectName]
- mesh.user_clear()
- bpy.data.meshes.remove(mesh)
- def RunPerFramePre(scene):
- bpy.ops.object.select_all(action='DESELECT')
- if water_object_name == "Water Object":
- print("No object matches that name")
- else:
- obj = bpy.data.objects[water_object_name]
- bpy.data.scenes[0].objects.unlink(obj)
- bpy.data.objects.remove(obj)
- removeMeshFromMemory(water_object_name)
- if diffuse_object_name == "Diffuse Object":
- print("No object matches that name")
- else:
- obj = bpy.data.objects[diffuse_object_name]
- bpy.data.scenes[0].objects.unlink(obj)
- bpy.data.objects.remove(obj)
- removeMeshFromMemory(diffuse_object_name)
- def RunPerFramePost(scene):
- cframe = str(bpy.data.scenes["Scene"].frame_current)
- lenframe = len(cframe)
- #Correct Frame Padding
- if lenframe == 1:
- cframe = "00000" + cframe
- if lenframe == 2:
- cframe = "0000" + cframe
- if lenframe == 3:
- cframe = "000" + cframe
- ######################################################################
- #Get File Path
- diffuse_filepath = water_filepath_directory + diffuse_file_name + cframe + ".ply"
- #Import Mesh
- bpy.ops.import_mesh.ply(filepath=diffuse_filepath)
- #Append Material
- global diffuse_object_name
- diffuse_object_name = diffuse_file_name + cframe
- diffuse_mesh = bpy.data.objects[diffuse_object_name]
- diffuse_mesh.data.materials.append(diffuse_material)
- diffuse_mesh.rotation_euler = (3.14159265/2, 0, 3.14159265)
- diffuse_mesh.location = (0, 0, 0)
- parent = diffuse_mesh
- child = bpy.data.objects['particle']
- child.parent = parent
- parent.dupli_type = 'VERTS'
- bpy.ops.object.select_all(action='DESELECT')
- ############################################################################
- #Get File Path
- water_filepath = water_filepath_directory + water_file_name + cframe + ".ply"
- #Import Mesh
- bpy.ops.import_mesh.ply(filepath=water_filepath)
- #Append Material
- global water_object_name
- water_object_name = water_file_name + cframe
- water_mesh = bpy.data.objects[water_object_name]
- water_mesh.data.materials.append(water_material)
- water_mesh.rotation_euler = (3.14159265/2, 0, 3.14159265)
- water_mesh.location = (0, 0, 0)
- for p in water_mesh.data.polygons:
- p.use_smooth = True
- #Change Draw Type Depending on Vertex Count
- if 25000 < len(bpy.data.objects[water_object_name].data.vertices):
- bpy.data.objects[water_object_name].draw_type = "WIRE"
- if 50000 < len(bpy.data.objects[water_object_name].data.vertices):
- bpy.data.objects[water_object_name].draw_type = "BOUNDS"
- bpy.ops.object.select_all(action='DESELECT')
- print(cframe)
- def RunPerSavePre(scene):
- if water_object_name == "Water Object":
- print("No object matches that name")
- else:
- obj = bpy.data.objects[water_object_name]
- bpy.data.scenes[0].objects.unlink(obj)
- bpy.data.objects.remove(obj)
- if diffuse_object_name == "Diffuse Object":
- print("No object matches that name")
- else:
- obj = bpy.data.objects[diffuse_object_name]
- bpy.data.scenes[0].objects.unlink(obj)
- bpy.data.objects.remove(obj)
- #Frame Change / Saving Function Triggers
- bpy.app.handlers.frame_change_pre.append(RunPerFramePre)
- bpy.app.handlers.frame_change_post.append(RunPerFramePost)
- bpy.app.handlers.save_pre.append(RunPerSavePre)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement