Skip to content
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

ami vs xtk #213

Open
nmarkowitz opened this issue Jan 11, 2020 · 4 comments
Open

ami vs xtk #213

nmarkowitz opened this issue Jan 11, 2020 · 4 comments

Comments

@nmarkowitz
Copy link

Hi,

I'm trying to build a purely client-side application using javascript. It's unique in that it's initially not meant to be deployed to the web but meant to be run locally by double-clicking a html file and reading data from local files. I've been going back and forth between xtk and ami.js deciding which to use. It seems three.js (used by ami.js) may not be the best for this usage. Any suggestions? Any plans to stop supporting xtk in the near future and switch to ami.js? Please let me know when you get the chance and thanks for making both great libraries.

@haehn
Copy link
Member

haehn commented Feb 1, 2020

Hi there, I am of course biased but I can tell you that in the CS460.org computer graphics course a final project involved volume rendering and it turned out that XTK was much faster and more robust than current ami.js. That is the most recent (from December) experience I had when comparing the two.

@nmarkowitz
Copy link
Author

Thanks for the response. I'm consistently playing around with both of them but that's really good to keep in mind as neuroimaging data takes a lot of memory. Looking forward to seeing ami.js develop further and thanks again for these libraries (and posting the CS460 course)

@NicolasRannou
Copy link
Member

NicolasRannou commented Feb 3, 2020

Yep I'd say it really depends on your use case and the functionalities you want to add.

Agreed with @haehn that is slower at loading/parsing because there is some uncesseray data packing happening.

Regarding volume rendering, it can be improved in ami by getting rid of the fancy packing (that may mean losing some precision in some cases, which is probably acceptable) and leveraging webgl2 texture 3d or array of 2d textures. There are some basic implementations at: https://threejs.org/examples/?q=webgl2#webgl2_materials_texture2darray and https://threejs.org/examples/?q=webgl2#webgl2_materials_texture3d

It'd go this way now that webgl2 is well supported and use XTK's super fast one for webgl1 only devices.

Keep in mind that the volume rendering XTK (Shear wrap) and AMI (ray casting) are using is fundamentally different

@nmarkowitz
Copy link
Author

nmarkowitz commented Feb 3, 2020

Thanks for such a detailed response. There's a possibility of some users using ie11 (which seems to not support webgl2) so using xtk may be the better option for now (also because I'm a bit of a newbie in js and xtk seems to require less code written out to create a rendering). I'm looking to have many surfaces loaded as well as volumes and additional objects such as spheres (foci). As I progress I'm sure I'll keep finding more advantages in either. Thanks again for all the help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants