[vtkusers] 3D Slicing | vtkImageResliceMapper | No motion of cutplane in one of 3 axes (yaw)

David Gobbi david.gobbi at gmail.com
Fri Feb 14 19:00:28 EST 2014


What version of VS?  I've been working solely on OS X for a while,
so my Windows set-up is very old and very slow.  I have the express
editions of VS2008 and VS2005, but VS2003 is the latest version for
which I have the full commercial edition.

If you want, you can put everything on dropbox or google drive, I might
not be able to run the program but at least I could see the code.

  David

On Fri, Feb 14, 2014 at 4:14 PM, Debjit Ghosh <dghosh at chla.usc.edu> wrote:
> Hi David,
>
> In the meantime, I have recreated the problem, isolating it, using keyboard
> keys to increase/decrease the values of roll, pitch and yaw which controls
> the movement of the slice plane. Through this you would be able to see how I
> have used your class to slice through a 4D volume and how the slice plane
> works beautifully in the axes of roll, pitch but does nothing when changed
> in the axis of yaw.
>
> I would like to send you the code/executable along with the volumes for you
> to see what it all looks like if you could tell me how you would like me to
> send it to you.
>
> I have programmed it in VS. The volumes are in the order of 127MB.
>
> Hoping this would be a quick and easy way for you to take a look at the
> problem.
>
> Regards,
> Debjit
>
> On Feb 6, 2014, at 17:55, "David Gobbi [via VTK]" <[hidden email]> wrote:
>
> Hi Debjit,
>
> I've been too busy with work-related projects and haven't been able
> to keep up with the VTK lists lately.  If I have time this weekend, I'll
> read through the emails that you have sent and prepare a reply.
>
>   David
>
>
> On Thu, Feb 6, 2014 at 1:34 PM, Debjit Ghosh <[hidden email]> wrote:
>
>> Hi David,
>>
>>
>>
>> It struck me that perhaps by replying on the thread, you aren't receiving
>> the emails but I am sending them to myself. Please look at this link where
>> I
>> had responded with diagrams to make clear the axes that we were
>> discussing:
>>
>>
>>
>>
>> http://vtk.1045678.n5.nabble.com/3D-Slicing-vtkImageResliceMapper-No-motion-of-cutplane-in-one-of-3-axes-yaw-tp5725426p5725433.html
>>
>>
>>
>> Warm regards,
>>
>> Debjit
>>
>> From: Ghosh, Debjit
>> Sent: Wednesday, January 15, 2014 3:12 PM
>> To: David Gobbi [via VTK]
>>
>>
>> Subject: Re: 3D Slicing | vtkImageResliceMapper | No motion of cutplane in
>> one of 3 axes (yaw)
>>
>>
>>
>>
>>
>> So does this mean that your software has two views, one 3D view and one 2D
>> view?  Where the 2D view shows whatever the plane is slicing through in
>> the
>> 3D view?
>>
>>
>>
>> No it does not. The attached image was to merely show how the system
>> functions. There is the 3D volume the software reads, and only the 2D
>> slice
>> is rendered on the screen ie. the 2D slice is internally what the cut
>> plane
>> slices in the 3D volume.
>>
>>
>>
>> Now you have to explain exactly what axis the "yaw" angle rotates around.
>> In terms of 3D graphics, a "yaw" generally means rotation around the Y
>> axis
>> of the display coordinate system, i.e. around the vertical axis of the
>> camera.  Also, whenever you say "x axis", "y axis", or "z axis" make sure
>> you are clear about whether you are talking about the axes of the data set
>> vs. the axes of the camera vs. the axes of the sensor.  Please don't use
>> terms like "yaw out" because I have no idea what that is supposed to mean.
>>
>>
>>
>> Knowing the confusion of the usage of axes (sensor, camera or data) is why
>> I
>> created a representation of the 3 axes in the attached image and based on
>> that roll is in the Y axis, pitch is in Z and yaw is in X.
>>
>>
>>
>> Pardon my use of "yaw out". If the plane is centered at the tip of the
>> cone,
>> and the plane was to have a yaw motion, it would move like the dial of the
>> pendulum from the inside to the outside of the bounding box.
>>
>>
>>
>>
>>
>> On Wed, Jan 15, 2014 at 3:45 PM, Debjit Ghosh <[hidden email]> wrote:
>>
>> David,
>>
>>
>>
>> I definitely understand.
>>
>>
>>
>> I have attached an image to this email which depicts what I mean by cut
>> plane and what is produced by the positioning of the cut plane. Now, based
>> on the axes drawn in the image, Y would be the axis of Roll, Z would be
>> the
>> axes of Pitch and X would be the axes of Yaw. Now you can imagine the cut
>> plane which is positioned at the tip of the cone to be rolling, pitching
>> and
>> yawing.
>>
>>
>>
>> Now the orientation of the plane is controlled by a 6DOF sensor. So when
>> the
>> sensor rolls, the plane rolls and the image is rendered correspondingly.
>> Similar for pitch. Now when the sensor is yawed, the plane remains
>> stationary - that's the issue at hand. The plane needs to ideally leave
>> the
>> bounds of the box ie. yaw out. As far as pitch is concerned, I have
>> observed
>> the plane moves all the way to the top surface of the box.
>>
>>
>>
>> Does this make sense?
>>
>>
>>
>> From: David Gobbi [via VTK] [mailto:[hidden email][hidden email]]
>>
>> Sent: Wednesday, January 15, 2014 1:24 PM
>> To: Ghosh, Debjit
>> Subject: Re: 3D Slicing | vtkImageResliceMapper | No motion of cutplane in
>> one of 3 axes (yaw)
>>
>>
>>
>> Hi Debjit,
>>
>> Your question is of the sort that is very difficult to understand without
>> some
>> sort of visual aid.  Do you have any diagrams that illustrate exactly what
>> you want to achieve?  Do you have screenshots to demonstrate what the
>> system is doing right now?
>>
>>   David
>>
>> On Wed, Jan 15, 2014 at 12:26 PM, Debjit Ghosh <[hidden email]> wrote:
>>
>>
>>> I have been using the vtkImageResliceMapper to slice through a 3D volume
>>> using the following logic (thanks to David Gobbi) where I am able to
>>> slice
>>> in 2 out of 3 axes only. When I change the orientation of the slice in
>>> the
>>> yaw direction there is no movement of the cut plane. I am not sure what I
>>> am
>>> doing incorrectly here or whether this is a limitation of the system.
>>>
>>> Here is the code snippet which implements the slicing using the camera
>>> and
>>> I
>>> wonder if it has to do with the default_norm that I have set to [0,0,1]:
>>>
>>> matrix_= imageslice->GetMatrix();
>>> matrix_->MultiplyPoint(default_viewup, this->view_up);
>>>
>>> //matrix is a 3x3 rotation matrix which defines the orientation of the
>>> cutplane
>>> matrix->MultiplyPoint(this->default_norm, this->normal);
>>>
>>> double focalPt[] = {0,0,0};
>>> double centerofvol[] = {dimX/2, dimY/2, dimZ/2}; double origin[] =
>>> {dimX/2,
>>> dimY/2, 0};
>>>
>>> vtkSmartPointer<vtkPlane> plane = vtkSmartPointer<vtkPlane>::New();
>>> plane->ProjectPoint( centerofvol, focalPt );
>>>
>>> position[0] = focalPt[0] + distfromcam * this->normal[0]; position[1] =
>>> focalPt[1] + distfromcam * this->normal[1]; position[2] = focalPt[2] +
>>> distfromcam * this->normal[2];
>>>
>>> cam->SetPosition(position);             //Orientation of the slice plane
>>> cam->SetFocalPoint(focalPt);    //Point at which my plane is fixed
>>> cam->SetViewUp(this->view_up);
>>> cam->SetWindowCenter(win_center_x, win_center_y);


More information about the vtkusers mailing list