-
Notifications
You must be signed in to change notification settings - Fork 13
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
Add support for BigVolumeViewer #415
Comments
Hi @ekatrukha, It would be amazing if you could give it a shot to integrate BVV into MoBIE. This is the place where the current volume viewing could be replaced by the new one:
And this is the class where the current volume viewer is defined; the constructor just needs a Collection of SourceAndConverter and a handle on the current instance of the volume viewer:
Thanks a lot for your interest! |
Hello @tischi et al., I've started to play around with it. For now, I am stuck with just running it. |
Ok, I figured it out |
Actually, I am curious, what did you need to do? |
...and @ekatrukha the web address is wrong in the OpenPlatyBrowser.java. Please use: |
I saw recently a similar issue on zulip. and after that debug worked. |
Here is a first attempt on using BVV to render 3D images (that works). I use your trick to convert a specific resolution of the source to RAI, but it should be possible |
That is very strange, I would think the having the multiple resolutions should help...
|
No, not yet, it is more fun to figure it out. |
And I think we should for now not replace the old way of showing volumes but rather add another Another consideration is that I already have a |
For now, I am going to try experimenting and writing things in a clean way, so it is not important. Some extra questions, does Mobie work with 32bit/float data? My preliminary plan is to make things work in 'classic' |
MoBIE: Float data: Yes, for instance the X-Ray tomography data that we deal with is float. Everything else: Sounds awesome! Thanks so much! This is exciting!! |
Ok, I finally figured out, I think, what was wrong. Your Btw, if it is a 'true' time data, should we load just a single time point or allow user to change it? This wrapping also should take care of the 8-bit data, since BVV natively shows only 16-bit. And in principle, float too. Maybe you can point me in the direction of the float data? This |
Good question about the BTW: this reminds me that Nico Chiaruttini shared a link with me how he is doing things in bdv-playground: https://github.com/search?q=repo%3Abigdataviewer%2Fbigdataviewer-playground%20bvv&type=code Probably it would be useful to see how he does it.... I will look for publicly accessible float data. |
Yes, I saw and tried the way Nicolas is doing it, but it After a couple of days reading code I am coming to the conclusion that to show them in BVV via Spimdata seems to provide control over cache, which is important for BVV, probably because of the way it uploads things to GPU cache. While 'regular' caching (via It is exciting problem to work on. I thought it will be super easy and quick, but here we go. But I learned a lot about 'internals' behind. Nicolas definitely should know a lot about it, he does reflection cache substitutions and other things I do not understand yet in BDV playground. Probably he knows how to expose cachecontrols, so no need to recache. Worse case scenario, instead of RGB copy of resulution level loaded to 3DViewer we can load 'raw' RAI to BVV. |
Hi @ekatrukha, Nice! Thanks for all the exploration! In the end, if wrapping into SpimData works, why not. Maybe it is even useful that it is re-caching there, because for the 3-D display very different data will need to be loaded than for the 2-D display? In general though, I have no clue about BVV, but I am very surprised that one cannot simply add a SourceAndConverter to it, which, as you probably know, exposes the cached Regarding the 16-bit: We could do something like
We would then have to do this for the whole sourceAndConverter, i.e. all resolution levels, both volatile and non-volatile. But before implemeting this it would be good to check with Nico, because chances are that he has something for this already in bdv-playground. |
Hi, Here's a link to a float image:
Metadata of highest resolution is:
|
Hello @tischi, yoohoo, the first milestone, BVV version works, take a look at this branch. In this branch, I am overriding the same checkbox as for 3DViewer. If you make a branch with a new extra checkbox, I can plug the code there. The next step is to include At some point I was doing debug for 16-bit images using DebugAngelikaOMEZarrIssue, but I think something is wrong with that source/transforms. Since it is jumping both in BVV and BDV when switching between different mipmap levels. |
Great 🥳 ! I am travelling this week and will probably not get around trying it..
I do this here, but this is specifically for 2-D. I think for 3-D we may better copy the code from LabKit.
I made a new branch, based on the current master, which also contains a couple of other changes as I was working on it the last couple of days: https://github.com/mobie/mobie-viewer-fiji/tree/bvv
No worries, there is no timeline! I am just super happy that this will happen at all! Maybe for a nice X-mas release 🎄 |
I've added BVV Manager to handle additions of different sources without BVV restart and I also figured checkbox thing (I see you also added it in the new branch, thank youuuu). Now the only thing that is left is
For now, just for convenience, I will still be working on this branch in my fork. At least until the top two parts are finished. |
Hello again, @tischi I've finished the points from the previous comment.
I've moved everything to a new package for convenience. For a BVV there is a set of parameters that needs to be defined. I've put some values there, but potentially there should be some window/dialog/settings somewhere in Mobie that is gonna change them. In short, I think it is a workable version. If it passes your tests, I will update everything to |
Dear @ekatrukha, Thanks a lot again! I am on a conference this week. But I will try to squeeze in a quick test! Could you please update the bvv branch? I think it will be easier. |
Mmm, the upd: I will do minor fixes to work with 3.0.4 and then you can revert it back. |
I fixed the |
Yep, I've pushed all the recent changes, it should be ok to test if you |
Do you also get that error (it does not seem to affect anything):
|
Niiice.
Yeah, that error I also have, not sure how to shut down BVV properly. I tried many things, but I think we need to ask Tobias. Indeed, it does not affect things, but it is not nice. |
Awesome! Before shipping, I would wait a couple of weeks to see whether we can get also some label mask rendering working, because then we can announce both in one go. If that turns out to be a show-stopper we could decide to only ship the volume rendering. |
So I think one last thing before the final minimal BVV 'alpha' version, in my opinion is BVV settings. Some of them can be changed 'on-the-fly' (projection matrix, camera position) and some (render quality, GPU cache size) will require BVV restart and reloading of data. You mentioned that it can be done at the 'source settings wheel', if I remember correctly. Are there maybe some 'general Mobie settings' somewhere? It is just that BVV settings are kind of global (like projection matrix details), not sure it is convenient to add them to the each source settings. |
Good point. I think the easiest (and many only option) right now would be to add another Command here: This Command could be then be made accessible to the user as another entry in the Context menu that one sees upon right-click in the BDV window. We could call it "BigVolumeViewer Settings". I can add a skeleton of this for you to the bvvpg branch, shall I? |
Yes, please, that would be very helpful. |
The question would be where to store those global settings.... I think the easiest right now would be to make all the fields in Would that be OK for now? |
...then, if we want changes to be immediate, once the user changed any of those values we would need to do something like
In the Or, if those changes are too massive, maybe we actually need a new |
...and could you please give me one example of a setting that you would like to put there? |
Hello @tischi, yes, we can make them I am in favor of
|
BTW, I've caught this annoying exception upon closing of BVV, I need to add it to a new version of I've talked to Tobias and indeed, as you mentioned, It needs to be tested, I will work on it soon. Cheers, |
Do you have somewhere 'in the cloud' |
I added Note that you'll also have to rebuild the project, because I merged the latest version of the main branch, which depends on a newer version of mobie-io. |
Thank youuu! I will work on it next week and keep you updated! |
I forgot to mention one thing: Since However, what is missing is that we would automatically apply the recent settings of |
I've implemented parameters that do not require BVV restart, |
I think killing it could be OK, if necessary. The data needed for rendering should hopefully still be cached in the |
I have a trouble. |
Does this work?
|
Since it seems to be harder than I though, I moved the discussion on BVV restart to a new issue. |
Hello @tischi, In my opinion, we are done with a minimal implementation, what do you think? |
I would be happy to ship this with MoBIE 🐳 ! |
Shipping BVV with Mobie to FIJI update site you would need to add three jars: |
I will try to publish this on the update site today or tomorrow. |
@ekatrukha I hope I uploaded everything could you try? |
I've tried on a fresh Fiji install and it works great! |
Awesome! I will close this thread now in favour of smaller issues. |
Hello @tischi and happy new 2025! Should we merge |
Hi, Happy new year! It is merged, afaik... |
Add support for scenery / BigVolumeViewer (to potentially replace the current 3d viewer?!).
This can be done via BDV-playground, relevant links:
https://github.com/bigdataviewer/bigdataviewer-playground/tree/master/src/main/java/sc/fiji/bdvpg/bvv
https://github.com/bigdataviewer/bigdataviewer-playground/tree/master/src/main/java/sc/fiji/bdvpg/scijava/command/bvv
This was first discussed in #237.
The text was updated successfully, but these errors were encountered: