[vtkusers] vtkDataSet::FindPoint, vtkExtractVOI and world coordinates?

Elvis Stansvik elvis.stansvik at orexplore.com
Sun Sep 4 08:28:06 EDT 2016


2016-09-04 14:25 GMT+02:00 Elvis Stansvik <elvis.stansvik at orexplore.com>:

> Hi all,
>
> I have multiple volumes in a renderer, positioned above/below each other
> (like a "string" of volumes) along the Z axis, none of them are
> intersecting. As the user clicks+drags the mouse in the viewport, I need to
> capture the mouse position at the start/end positions of the drag operation
> and convert them to world coordinates. I think I have these parts figured
> out.
>
> Then, I need to search through the list of my volumes (sorted by their end
> positions in world coordinates), and construct a series of vtkExtractVOI
> that will extract the selected segments. For volumes that are completely
> inside the selected area, the vtkExtractVOI will extract the full volumes,
> but for the start/end volume (which may be the same volume), it will only
> extract a portion of it.
>
> I looked at the vtkDataSet::FindPoint, which I think will give me a linear
> point ID (not familiar with that from before) for a point given in world
> coordinates. But how can I convert that to a structured point position that
> I can use when setting up the extent to use for my vtkExtractVOI?
>
> Is the static vtkStructuredData::ComputePointStructuredCoords helper the
> function I'm looking for? Or is there some other easier way to extract an
> area of a volume when the area is expressed in world coordinates?
> (specifically, as a start/end Z position in world coordinates).
>
> Here's an ASCII drawing that perhaps explains better what I want to do,
> the rectangular areas are my volumes:
>
> ^  +-----+
> |  |     |
> |  | P1  |  <--- User clicks here (world coordinate X, Y, Z)..
> |  |     |
> Z  +-----+
>    +-----+
>    |     |
>    |     |
>    +-----+
>    +-----+
>    |     |
>    |     |
>    |  P2 |  <--- ..and drags to here (world coordinate A, B, C).
>    |     |
>    |     |
>    |     |
>    +-----+
>
> From this I want to create three vtkExtractVOI, that when combined gives a
> list of vtkImageData that represents the selected area along the Z axis (in
> the X and Y direction, everything from the volumes should be included).
>

To clarify, the X and Y coordinate of the click/release position are
irrelevant here. I'll only capture the Z positions (Z0 and Z1), and from
that I want to extract all voxels from my volumes that are between Z0 and
Z1.


> Thanks in advance,
> Elvis
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160904/fe592c91/attachment.html>


More information about the vtkusers mailing list