oanegros / tif2blender Goto Github PK
View Code? Open in Web Editor NEWLoading and handling microscopy data in blender
License: MIT License
Loading and handling microscopy data in blender
License: MIT License
In the current folders the vdb files are next to the tif, which is annoying for large volumes with chunked vdbs, might be nice to reintroduce a tmp folder for vdbs
Try to create a LUT-like interface for shaders by piping from white shader -> shader to RGB -> LUT and use Node tools in Blender 4 to create an Apply LUT.. interface.
How will this work for selecting channels?
vdb loading by frame is supported in blender, currently the addon only handles single frames. Might be good to move to a frame-by-frame folder with all chunks per frame.
Note: this may also change orders of chunk loading.
Currently, we need to load in separate volumes for large microscopy datasets, where the volume to mesh operators only work on a single mesh. So a requirement is some form of operator for making multiple, linked meshes with volume to mesh operators.
This might be easiest by adding the same GN modifier to all linked meshes, and then doing some magic with volume to mesh
nodes in there. this would need to be tested, though.
Hi Oane!
Amazing package! It also works with our cryoET data despite it being intrinsically noisy! (I had some minor issues with LZW compressed TIFs, but it worked nicely for non-compressed ones. I guess it's only a matter of some additional libraries I was missing to be able to read it).
I wanted to ask if you have implemented (or know) an easy solution to display and render only one selected slice (as one would do in the Data> Viewport display > Slice)
The issue is that whenever I go to render/shading mode, it displays the full volume and not only the selected slice (as in viewport)
.
Best,
Higor
with maybe a force remake checkbox.
copying over into the right subfolder of Contents
worked to fix this - find out why this didnt work
have in import options a checkmark for 'mask':
this gives a channel selector which channel the mask is in
The mask can then be loaded as mesh (marching cubes per unique integer value)
pyopenvdb is accessible if running blender from cli
Need to figure this out soon, has anybody else seen similar behaviour?
might be related to deprecation of pkg_resources
API
In the scale bounding box geometry node I would add a node from "um per tick" to a "value to string" and then "string to curve" and "curve to mesh" so that the length corresponding to a single tick is displayed at 0,0,0
Supporting extra image formats should be very doable, as the only thing this needs is a python library to import file to numpy array and reading metadata, the only issue in this is making Blender have optional dependencies for each of these files. And that then load and metadata functions need to be dynamically assigned based on file type.
To be clear, tif2blender would then still rewrite to (uncompressed) .vdb files, this is only about the input format into tif2blender.
Data types to support:
ome-zarr-py
)h5py
), although this may have require some UI tuning because metadata names (even of the data) are not standardizedimagecodecs
with currently required tifffile
) as noted in #35 by @hvdrosaPlease comment with formats you'd want, or if you think you can help write a load script!
do separate subgroup for crosshatch tick, selector for grid axes as inputs for scalebar group
otsu is slow, is nice to be able to turn off for large volumes
will be for a version 0.0.2 before moving to blender 4, together with tests created in #29, to have a 3.5/3.6 version of tif loader that is functional
and remove this from tick instance gen
time support is now done, guide people to how to change scale bars and what new import options do
a lot more is possible there but some of the syntax (around group input/output for example) has changed.
Target FPS could probably be set if you do time stretching upon load
will be weird for multiple imports, but that can be a warning
There is an inherent issue with scale bars for data visualization with perspective cameras, where a scale bar only works as long as the perspective can be accurately assessed by the human viewer, which can be hard with microscopy as normal landmarks do not exist.
options:
This could also all be optional inside a single GN node. I'm very open to other suggestions for this.
As this is built on tifs, and fiji/imagej has such dominance, i think trying to read imagej_metadata for pixel size and axes order would be a nice QoL improvement.
This could be under a separate infer
operator in the tif loader
window
currently the first actions we do upon load are the same, adding Attribute > Map Range > Principled Volume
with maybe Mix Shader
of multiple for multiple channels, to make a first visualization of the data.
It would be nice to have this automatically upon load of a new tif, to also handle automatic linking of chunked volumes.
Should this automatically threshold? Maybe Otsu thresholding upon load would be good, and make you immediately capable of looking at your data.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.