[vtkusers] Occlusion

Engel Markus m.engel at dkfz-heidelberg.de
Wed Dec 3 08:37:22 EST 2008


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20081203/bd8bc485/attachment.htm>


More information about the vtkusers mailing list