tested and working
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user