[vtkusers] Occlusion
Cory Quammen
cquammen at cs.unc.edu
Wed Dec 3 10:49:06 EST 2008
Markus,
I'm not sure why you need to render everything first. It sounds like you are
trying to accomplish a preprocessing step on the geometry that is view
independent, that is, you want to know what parts of skin the needle
shouldn't go through to avoid hitting organs. I could see the possibility of
using graphics hardware to accelerate computation of the occluded skin from
a point (say, the center of the tumor) by using a shadow mapping algorithm,
but how to do this for the full tumor geometry is not immediately clear to
me.
In any case, I don't know of anything in VTK can be used to solve your
problem easily. I think you are going to have to use a computational
geometry toolkit, but I'll defer to those with more computational geometry
experience than me.
Good luck,
Cory
On Wed, Dec 3, 2008 at 8:37 AM, Engel Markus <m.engel at dkfz-heidelberg.de>wrote:
> Hi Cory,
>
>
>
> Thanks for the help!
>
> Sounds good, however there's a problem. As I will have to check the
> occlusion from every border-voxel of the tumor,
>
> this is going to take ages because I'll have to render everything first and
> then start the excessive ray-casting.
>
>
>
> I had hoped that there is a way to get the renderer to tell me whether he
> drew the triangle or not, respectively if he drew it completely.
>
>
>
> Greets Markus
>
>
>
>
>
> *Von:* cquammen at gmail.com [mailto:cquammen at gmail.com] *Im Auftrag von *Cory
> Quammen
> *Gesendet:* Dienstag, 2. Dezember 2008 20:04
>
> *An:* Engel Markus
> *Cc:* vtkusers at vtk.org
> *Betreff:* Re: [vtkusers] Occlusion
>
>
>
> Markus,
>
> It sounds like an application for a ray tracing program, but not one with a
> standard camera model. Instead, you would cast rays from the tumor center
> out into the organs and skin using some uniform sampling of the unit sphere.
> You can mark the rays that intersect the organs and then check which of the
> skin triangles intersect one or more "organ" rays.
>
> Alas, I don't know of any class in VTK that does this for you, but you
> should be able to code something up manually quite easily. The vtkTriangle
> class has a method IntersectWithLine() that should prove useful if you
> decide to iterate over all triangles for all the rays you cast. For better
> performance, you could use vtkCellLocator or vtkOBBTree. It also has an
> IntersectsWithLine() method that gives you a list of triangles (vtkCells,
> really) that the line intersects. You could have two vtkOBBTrees, one for
> the organs and one for the skin. If IntersectsWithLine() called on the
> vtkOBBTree with the organ data returns a non-empty list of triangles, then
> all the skin triangles the ray intersects are occluded, and you can mark
> them as such.
>
> Good luck with your project,
> Cory
>
> On Tue, Dec 2, 2008 at 12:02 PM, Engel Markus <m.engel at dkfz-heidelberg.de>
> wrote:
>
> Hi Cory!
>
>
>
> I'm sorry. I should have described the goal in more detail.
>
>
>
> The program I'm writing is supposed to compute the optimal trajectory to
> insert a needle to a tumor. This is going to be part of the planning for an
> operation using percutaneous radiofrequency ablation.
>
> When the needle has hit the center of the tumor its tip is heated and thus
> burns the tumor.
>
>
>
> The first step of the program is to determine the so called 100%zones. Only
> in these zones I can insert the needle safely, because otherwise I could hit
> a bone, vessel or another organ.
>
> That's why, as a first step, I have to find all triangles of the skin that
> are totally visible, respectively not occluded , when looking from the
> tumors "point of view".
>
> After this step I'd like to have two lists of triangles. One containing
> all visible triangles and the other containing all the occluded triangles.
>
>
>
> I hope this helps understanding my problem.
>
>
>
> Greets
>
>
>
> Markus
>
>
>
>
>
> *Von:* cquammen at gmail.com [mailto:cquammen at gmail.com] *Im Auftrag von *Cory
> Quammen
> *Gesendet:* Dienstag, 2. Dezember 2008 14:28
> *An:* Engel Markus
> *Cc:* vtkusers at vtk.org
> *Betreff:* Re: [vtkusers] Occlusion
>
>
>
> Hi Markus,
>
> I don't have a VTK-based solution for you based on your problem
> description, but I am curious why you want to eliminate triangles of the
> vtkPolyData representing the skin. What is the ultimate goal you are trying
> to accomplish? Are you worried about performance? If so, you probably
> shouldn't. Modern GPUs can render triangles very quickly, especially with
> features like early z culling. Are you trying to eliminate them from the
> scene? If they are occluded from your view point, you won't see them.
>
> Just curious,
> Cory
>
> On Tue, Dec 2, 2008 at 7:37 AM, Engel Markus <m.engel at dkfz-heidelberg.de>
> wrote:
>
> Hi!
>
>
>
> I'm currently looking for a possibility to check whether a certain triangle
> of my vtkPolyData is visible or occluded by another PolyData.
>
>
>
> I'm writing a program that eliminates triangles of the PolyData,
> representing the patients skin, that are not visible from the barycenter of
> a tumor,
>
> because they are occluded by other organs. All organs, the tumor and the
> skin are vtkPolyDatas.
>
> So I basically need to check if there is an Object, in this case a
> PolyData, between a point and a tringle.
>
>
>
> As the program is going to be based on VTK, I'm searching for a native VTK
> solution.
>
> I already stumbled upon the OpenGL occlusion_query, however I afraid it
> won't be easy to integrate this into the existing rendering-pipeline. That's
> another reason for looking for some VTK-stuff.
>
>
>
> Thanks a lot!
>
>
>
> Markus
>
>
>
>
>
>
>
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>
>
>
> --
> Cory Quammen
> Center for Computer Integrated Systems for Microscopy and Manipulation
> (CISMM)
> Department of Computer Science
> University of North Carolina at Chapel Hill
> http://www.cs.unc.edu/~cquammen <http://www.cs.unc.edu/%7Ecquammen>
>
>
>
>
> --
> Cory Quammen
> Center for Computer Integrated Systems for Microscopy and Manipulation
> (CISMM)
> Department of Computer Science
> University of North Carolina at Chapel Hill
> http://www.cs.unc.edu/~cquammen <http://www.cs.unc.edu/%7Ecquammen>
>
--
Cory Quammen
Center for Computer Integrated Systems for Microscopy and Manipulation
(CISMM)
Department of Computer Science
University of North Carolina at Chapel Hill
http://www.cs.unc.edu/~cquammen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20081203/de5c008c/attachment.htm>
More information about the vtkusers
mailing list