some mods to blender scripts, formatted TODO in README
This commit is contained in:
12
README.md
12
README.md
@@ -3,10 +3,12 @@
|
||||

|
||||
|
||||
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
|
||||
<path_to_binary>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
|
||||
1. (optional) adjust frame and sampling rate, better option: create separate avi-files, merge and convert to mkv, e.g. combining ImageJ and ffmpeg
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
44
animscript_full_crack.py
Normal file
44
animscript_full_crack.py
Normal file
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user