Hi, i’m developing a grap`hical simulator of the criogenical process in the prostate’s cancer.
This is a new technique that removes cancer by freezing the specified zone.
My program visualizes the prostate, which is a voxel-based structure, and shows how the ice is propagating through
the prostate, forrming a cloud around the needle.
In order to visualize the cloud correctly , the prostate has to be translucid or almost transparent. I’ve tried with GL_BLENDING and all its issues
but I believe that exist other more sophisticated techniques that achieve more realistic results.
If you didn’t understand, please look at these two snapshots:
I would be very thanked if someone could suggest me some other possible choices
to achieve the desired result.
Thank you very much and sorry for my obtuse language.
Well, the first screenshot seems nice, the only problem I see is that each slice of prostate is quite dull and pixelated.
I don’t know how the voxel data was acquired (realistic or drawn by hand) but it should be possible to enhance it : maybe some blur, enlarging the edges, this sort of stuff.
Looks like you are doing fine as it is… but I
would recommend a non-voxel approach. It will take
some serious coding, so be aware of the fact.
Construct an isosurface of the prostate’s tissue
or tissues. Use the voxel data to do this. Once you
have the capability of generating triangles from the
isosurface, simply plot those isosurfaces as clusters
of triangles. If you are not going to navigate
around the prostate, and you will always be looking
at some transparent tissues from the outside, you
can simply draw each cluster of tissues in “outward”
order from the center of the prostate.
You can probably find a way to extract isosurfaces
from the voxel data by some sort of scientific
visualization package, and then dump the list of
triangles into OpenGL. I did a similar thing for
some artistic work. Also, this would be the approach
I would take if I were to visualized 3D data from
a “cat-scan”. Good luck.
You can get a sort of fake surface rendered appearance from volume data by using the DOT3 blending mode, and putting light direction in the vertex color. Also, some transfer function might help the appearance when you want the raycast appearance.
You could look into texture based volume rendering. This involves texture mapping polygons with your voxel data, enabling blending, and drawing them back to front.
Here’s what I was able to do:
My volume rendering
Here’s where you can find more information:
Klaus Engel’s website
Joe Kniss’ website