-
Notifications
You must be signed in to change notification settings - Fork 50
add ImageVolumeGraphic
#791
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
ce9c197
to
b2b9b10
Compare
took some 3d movie gen code from caiman to generate a 3d movie: 3d-2025-04-12_03.09.08.mp4 |
File [~\repos\fastplotlib\fastplotlib\graphics\features\_image.py:147](http://localhost:8888/lab/tree/demos/notebooks/~/repos/fastplotlib/fastplotlib/graphics/features/_image.py#line=146), in TextureArray._fix_data(self, data)
145 def _fix_data(self, data):
146 if data.ndim not in (2, 3):
--> 147 raise ValueError(
148 "image data must be 2D with or without an RGB(A) dimension, i.e. "
149 "it must be of shape [rows, cols], [rows, cols, 3] or [rows, cols, 4]"
150 )
152 # let's just cast to float32 always
153 return data.astype(np.float32)
ValueError: image data must be 2D with or without an RGB(A) dimension, i.e. it must be of shape [rows, cols], [rows, cols, 3] or [rows, cols, 4] data = np.random.randn(50, 2, 448, 448)
data.shape
>> (50, 2, 448, 448) The ability to view a time-series with a 4th dimension would be nice here |
nevermind :) volume.world_object.world.scale_z = 15.0 Some other helpful tidbits: hlut = fpl.HistogramLUTTool(volume.data.value, volume)
volume.interpolation = "linear"
volume.cmap = "gnuplot2"
fig[0, 0].docks["right"].add_graphic(hlut)
fig[0, 0].docks["right"].size = 80 fig[0, 0].docks["right"].controller.enabled = False
fig[0, 0].docks["right"].camera.maintain_aspect = False
fig[0, 0].docks["right"].auto_scale(maintain_aspect=False) |
Yes, looks like it is; it uses the same logic (in the shader) as the image. I have never encountered it in the wild though. |
actually going to merge it this time
TextureArrays
supports 3D texturesImageVolumeGraphic
make this work with, image widget is a mess, need to refactor iw before adding volume supportImageWidget
graphics.image
scripts/generate_add_graphic_methods.py
is better, removedGraphic.type
attribute which was only used in the generate mixin script and use regex instead to create theadd_<graphic>
method names.@almarklein are RGB volumes supported? Is it even a thing?
selector tools for slicing, cube slicing, etc., non-orthogonal slicing to come later
note: implementing
ImageVolumeGraphic
as a subclass ofImageGraphic
wasn't a good idea because the__init__
gets messy. Might make aBaseImageGraphic
class which just has properties which are almost identical betweenImageGraphic
andImageVolumeGraphic
, but not a big deal right now.