From 8ea11c297e8980328bed04fa32b90d1fa7c31415 Mon Sep 17 00:00:00 2001 From: Fischer Robert Date: Wed, 8 Feb 2023 12:48:54 +0100 Subject: [PATCH] some mods to blender scripts, formatted TODO in README --- README.md | 12 ++++++----- animscript_full.py | 19 +++++++++++------ animscript_full_crack.py | 44 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 11 deletions(-) create mode 100644 animscript_full_crack.py diff --git a/README.md b/README.md index 2e72664..cb19f2d 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,12 @@ ![lstopo](img/tomcat_blender_logo_sketch.png) Scripts to automate TOMCAT data visualization in blender with python. -TODO: make cool logo from current sketch -TODO: build into python module with classes -TODO: maybe wrap system call of blender -TODO: add cupy/cucim support +TODO: +- [ ] make cool logo from current sketch +- [ ] build into python module with classes +- [ ] maybe wrap system call of blender +- [x] add cupy/cucim support (partly done) +- [ ] use openvdb for volume import in blender required packages: xarray, scikit-image, trimesh, numpy @@ -23,4 +25,4 @@ required packages: xarray, scikit-image, trimesh, numpy ```bash blender.exe blend-file.blend --background --python testanimscriptfull.py ``` -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 +1. (optional) adjust frame and sampling rate, better option: create separate avi-files, merge and convert to mkv, e.g. combining ImageJ and ffmpeg diff --git a/animscript_full.py b/animscript_full.py index 44f0c2f..c08f01f 100644 --- a/animscript_full.py +++ b/animscript_full.py @@ -2,10 +2,11 @@ import bpy import os baseFolder="/mpc/homes/fische_r/NAS/DASCOELY/processing/04_membrane_ML/3II/membrane_smaller_200_removed/" #for stl -outfolder="/mpc/homes/fische_r/NAS/DASCOELY/processing/04_membrane_ML/3II/membrane_cathode_camera_png/" #for png +baseFolder2 = "/mpc/homes/fische_r/NAS/DASCOELY/processing/04_membrane_ML/3II/crack_smaller_200_removed/" +outfolder="/mpc/homes/fische_r/NAS/DASCOELY/processing/04_membrane_ML/3II/membrane_crack_anode_camera_png/" #for png material = 'membrane' #'Crack' - +material2 = 'Crack' if not os.path.exists(outfolder): os.mkdir(outfolder) @@ -20,12 +21,17 @@ bpy.ops.object.delete(confirm=False) mat = bpy.data.materials[material] +mat2 = bpy.data.materials[material2] -def load_and_render_stl(filename, baseFolder=baseFolder, mat=mat, outfolder=outfolder): +def load_and_render_stl(filename, filename2, baseFolder=baseFolder, mat=mat, outfolder=outfolder): name = filename[:-4] - + name2 = filename2[:-4] + bpy.ops.import_mesh.stl(filepath=os.path.join(baseFolder, filename), axis_up='-Z') bpy.data.objects[name].data.materials.append(mat) + + bpy.ops.import_mesh.stl(filepath=os.path.join(baseFolder2, filename2), axis_up='-Z') + bpy.data.objects[name2].data.materials.append(mat2) outfile = os.path.join(outfolder, ''.join([name,'.png'])) bpy.context.scene.render.filepath = outfile @@ -37,8 +43,9 @@ def load_and_render_stl(filename, baseFolder=baseFolder, mat=mat, outfolder=outf bpy.ops.object.delete(confirm=False) filenames = os.listdir(baseFolder) +filenames2 = os.listdir(baseFolder2) -for filename in filenames: +for (filename, filename2) in zip(filenames,filenames2): if filename[-3:]=='stl': - load_and_render_stl(filename) + load_and_render_stl(filename, filename2) diff --git a/animscript_full_crack.py b/animscript_full_crack.py new file mode 100644 index 0000000..b8dae0a --- /dev/null +++ b/animscript_full_crack.py @@ -0,0 +1,44 @@ +import bpy +import os + +baseFolder="/mpc/homes/fische_r/NAS/DASCOELY/processing/04_membrane_ML/3II/crack_smaller_200_removed/" #for stl +outfolder="/mpc/homes/fische_r/NAS/DASCOELY/processing/04_membrane_ML/3II/crack_anode_camera_png/" #for png + +material = 'Crack' #'Crack' + + +if not os.path.exists(outfolder): + os.mkdir(outfolder) + +# print('Warning: this is a crude hack. Make sure the names are capturing the correct objects') + +#delete old reference object +name = 'reference' +bpy.ops.object.select_all(action='DESELECT') +bpy.data.objects[name].select_set(True) +bpy.ops.object.delete(confirm=False) + + +mat = bpy.data.materials[material] + +def load_and_render_stl(filename, baseFolder=baseFolder, mat=mat, outfolder=outfolder): + name = filename[:-4] + + bpy.ops.import_mesh.stl(filepath=os.path.join(baseFolder, filename), axis_up='-Z') + bpy.data.objects[name].data.materials.append(mat) + + outfile = os.path.join(outfolder, ''.join([name,'.png'])) + bpy.context.scene.render.filepath = outfile + bpy.ops.render.render(write_still=True) + + #clean up + bpy.ops.object.select_all(action='DESELECT') + bpy.data.objects[name].select_set(True) + bpy.ops.object.delete(confirm=False) + +filenames = os.listdir(baseFolder) + +for filename in filenames: + if filename[-3:]=='stl': + load_and_render_stl(filename) +