Help ~ 3D visulisation of 2D slices

Started by
10 comments, last by cool_xo 21 years, 7 months ago
quote:
I''m using the ATI RAGE Mobility 128 AGP4x card, and the client is currently using the same labtop as I''m now. Soo... I''m just a bit worried that it maybe too slow to display it.

Whoa, sorry, but forget it. It simply is impossible to display a high resolution volumetric dataset on such a chip. On a Rage128 you have to make a (big) trade off, there is no choice. Either reduce the quality (resolution) of your 3D dataset, or drop interactivity (realtime visualization).

I would suggest an adaptive approach. At startup, detect the type of graphics chipset. Run some tests, eg. maximum fillrate, largest texture size, available memory, etc. Then, choose an appropriate resolution for your dataset, and scale it down. Also try to use texture compression, wherever possible.

* On low end HW, you could try a resolution of eg. 256*256*80 compressed, displayed using splatting or similar. Give the user an option to display a still frame at full quality (which will take a few seconds for one frame).

* On medium level HW, you can use an adaptive degradation system: create two datasets, one at reduced resolution and one at full resolution. If the volume is in motion (ie. the user moves it around), then use the reduced dataset for fluid realtime visualization. When movement stops (ie. the user wants to contemplate a detail), the rerender the current frame at full resolution. This approach is often used in scientific / military visualization systems, when the datasets get to big to handle in full realtime.

* On highend HW, just use the full resolution dataset for interactive rendering.

quote:
If it''s not too much trouble, would u happen to know how DirectX can be used to make my life easier? Which part can I use DX to do it for me..... and which part do I need to write myself??

If you want to use marching cubes, you''ll have to code this algorithm yourself. Rendering the result is merely a simple standard 3D engine, since this algorithm will give you a trimesh as output.

As for the 3D datafield rendering, it depends on the technique you want to use. A basic volumetric renderer is not that hard to code, since normally there is not very much geometry involved. Your limit will almost always be fillrate, AGP bandwidth for texture swapping and VRAM (video memory). Try to use texture compression (DXTC), if you can. Try to avoid texture swaps. Optimizing for geometry performance, on the other hand, won''t be too interesting in your case.

/ Yann
Advertisement
The shear-warp factorization that was developed by Phil Lacroute, is a pretty fast way to render entire volumes. I don't think it will give you interactivity, but it will certainly be faster than a generic splatting algorithm. It's a pretty clever but complicated algorithm to describe. His phd dissertation is online though.

[edited by - yellowjon on September 3, 2002 10:24:14 AM]

This topic is closed to new replies.

Advertisement