diff --git a/01_extract_surfaces.py b/01_extract_surfaces.py index c4d7e0c..ef89f0b 100644 --- a/01_extract_surfaces.py +++ b/01_extract_surfaces.py @@ -52,7 +52,7 @@ class mesh_maker: verts, faces, _, _ = measure.marching_cubes_lewiner(water.data) watermesh = trimesh.Trimesh(vertices = verts, faces = faces) stl = trimesh.exchange.stl.export_stl_ascii(watermesh) - stlpath = os.path.join(self.out_path, ''.join(['water_ts_',str(ts),'.stl'])) + stlpath = os.path.join(self.out_path, ''.join(['water_ts_',f'{ts:05}','.stl'])) with open(stlpath, 'w+') as file: file.write(stl) diff --git a/02_adjust_variable_frame_rate.py b/02_adjust_variable_frame_rate.py index 397bb37..d102454 100644 --- a/02_adjust_variable_frame_rate.py +++ b/02_adjust_variable_frame_rate.py @@ -14,7 +14,7 @@ import shutil nc_path = r"Z:\Robert_TOMCAT_3_combined_archives\unmasked\dyn_data_T3_025_3_III.nc" -timestep_folder = r"Z:\anim_test_full_png" +timestep_folder = r"Z:\anim_test_full_png2" time_folder = r"R:\Scratch\305\_Robert\time_test" if not os.path.exists(time_folder): @@ -26,30 +26,42 @@ pfx = len(fileprefix) filesuffix = '.png' sfx = len(filesuffix) -time_array = np.arange(0,1600,1) #s - dyn_data = xr.open_dataset(nc_path) exp_time = dyn_data['time'].data dyn_data.close() -for t in time_array: - ts = np.argmax(exp_time>t)-1 - - step_file = ''.join([fileprefix,str(ts),filesuffix]) - prev_step_file = ''.join([fileprefix,str(ts-1),filesuffix]) - - step_path = os.path.join(timestep_folder, step_file) - prev_path = os.path.join(timestep_folder, prev_step_file) - - time_file = ''.join(['{:.2f}'.format(t),'_s.png']) - time_path = os.path.join(time_folder, time_file) - - if os.path.exists(step_path): - shutil.copyfile(step_path, time_path ) - - # TODO: allow to go back more than one step ; probably unnecessary, noise should cause all time steps to render - elif os.path.exists(prev_path): - shutil.copyfile(prev_path, time_path ) - + +# temporary solution: manually define time steps and framerate + +def move_file(ts, folder): + filename = ''.join([fileprefix,str(ts), filesuffix]) + filepath = os.path.join(timestep_folder, filename) + if os.path.exists(filepath): + shutil.move(filepath, os.path.join(folder,filename)) + +# part1 6s per scan +part1_steps = np.arange(101) + +part1_folder = os.path.join(timestep_folder, 'part1') +if not os.path.exists(part1_folder): + os.mkdir(part1_folder) + +for ts in part1_steps: + move_file(ts, part1_folder) +# part2 1s per scan +part2_steps = np.arange(101,220) +part2_folder = os.path.join(timestep_folder, 'part2') +if not os.path.exists(part2_folder): + os.mkdir(part2_folder) +for ts in part2_steps: + move_file(ts, part2_folder) + +# part3 7s per scan +part3_steps = np.arange(220, len(exp_time)) +part3_folder = os.path.join(timestep_folder, 'part3') +if not os.path.exists(part3_folder): + os.mkdir(part3_folder) +for ts in part3_steps: + move_file(ts, part3_folder) diff --git a/README.md b/README.md index f36479d..644ba4c 100644 --- a/README.md +++ b/README.md @@ -20,4 +20,4 @@ required packages: xarray, scikit-image, trimesh, numpy ```bash blender.exe blend-file.blend --background --python animationscript.py ``` -1. (optional) adjust frame and sampling rate \ No newline at end of file +1. (optional) adjust frame and sampling rate, better option: create separate avi-files, merge and convert to mkv, e.g. combining ImageJ and ffmpeg \ No newline at end of file diff --git a/testanimscriptfull.py b/testanimscriptfull.py index e69474e..46f5b78 100644 --- a/testanimscriptfull.py +++ b/testanimscriptfull.py @@ -1,13 +1,11 @@ import bpy import os -baseFolder=r"A:\anim_test_full" -outfolder=r"A:\anim_test_full_png" +baseFolder=r"A:\anim_test_full" #for stl +outfolder=r"A:\anim_test_full_png2" #for png if not os.path.exists(outfolder): os.mkdir(outfolder) -# bpy.context.scene.render.filepath = r"Z:\users\firo\blender\test\test_water3.png" -# bpy.ops.render.render(write_still=True) # print('Warning: this is a crude hack. Make sure the names are capturing the correct objects') @@ -18,15 +16,7 @@ bpy.data.objects[name].select_set(True) bpy.ops.object.delete(confirm=False) -# #import new mesh -# name = 'watertest' -# bpy.ops.import_mesh.stl(filepath=r"A:\watertest.stl") - mat = bpy.data.materials['water'] -# bpy.data.objects[name].data.materials.append(mat) - -# bpy.context.scene.render.filepath = r"Z:\users\firo\blender\test\test_water_not_smooth.png" -# bpy.ops.render.render(write_still=True) def load_and_render_stl(filename, baseFolder=baseFolder, mat=mat, outfolder=outfolder): name = filename[:-4]