tested and working

This commit is contained in:
2022-03-29 10:43:57 +02:00
parent 317b47b902
commit ecf394e64d
4 changed files with 38 additions and 36 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -20,4 +20,4 @@ required packages: xarray, scikit-image, trimesh, numpy
```bash
<path_to_binary>blender.exe blend-file.blend --background --python animationscript.py
```
1. (optional) adjust frame and sampling rate
1. (optional) adjust frame and sampling rate, better option: create separate avi-files, merge and convert to mkv, e.g. combining ImageJ and ffmpeg

View File

@@ -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]