[vtkusers] Changing the direction of Z

Jim Peterson jimcp at cox.net
Sun Oct 17 12:09:13 EDT 2010


My apologies for sticking my nose into this conversation, but I feel 
there is a miscommunication regarding coordinate systems going on here. 
In my opinion, Bill is a master of these nuances, and speaks 
knowledgeably regarding ITK, Paraview and VTK. A right handed system is 
represented by extending your thumb, index finger and middle finger of 
your right hand at 90 degrees to each other. A left handed system by 
doing the same with your left hand, exactly which finger is point up is 
irrelevant, the difference is whether the rotation to the next axis is 
clockwise or counter clockwise. The default view of the right handed 
system in vtk is with index finger pointing up, and palm visible, in 
other medical presentations, the typical initial view is with your index 
finger point down and palm pointing away.  In my experience with vtk, 
and medical data, both treat the image data as a right handed coordinate 
system, the difference being where the origin is relative to the rest of 
the object, and which direction Z increases. what I have noticed is 
medical data generally appears "upside down and from the back", so a 
simple 180 degree transform around the X axis results in the expected 
image appearance and orientation. That is, the origin is in the upper 
left of the view and z increases away from the viewer.

In my opinion the easiest way to attain this view is to position the 
camera in the world space to get this view, not transform the points.

I hope this helps, again, I apologize for jumping in.
Jim

Paul Harris wrote:
> The models and other data points are usually in a East,North,Elevation 
> coordinate system, but often some datasets will be in a 
> West,South,Depth or some variant in between, due to legacy reasons.
>
> I would like to be able to just flick a switch and have everything 
> displayed the "right way" around, however if its going to involve 
> vtkTransformPolyData, what I might be forced to do is flip everything 
> around at the point of importing/loading the data, and then flip the 
> numbers around again when I display grids, coordinates and stuff in 
> tables...
>
> However it would be ideal if I could just tell VTK which way around 
> the world coordinates are, without worrying about normals pointing the 
> wrong way etc.
>
> On 17 October 2010 11:11, Bill Lorensen <bill.lorensen at gmail.com 
> <mailto:bill.lorensen at gmail.com>> wrote:
>
>     The vtk coordinate system is right-handed. Are your models in a left
>     handed system?
>
>     On Sat, Oct 16, 2010 at 11:10 PM, Bill Lorensen
>     <bill.lorensen at gmail.com <mailto:bill.lorensen at gmail.com>> wrote:
>     > Yes, user matrix should work. But a negative scale will mess up the
>     > shading calculation. The user matrix is used by opengl. Not sure why
>     > reverse sense did not work.
>     >
>     > Try the same thing (as an experiment) with vtkTransformPolyData.
>     >
>     > On Sat, Oct 16, 2010 at 7:46 PM, Paul Harris
>     <harris.pc at gmail.com <mailto:harris.pc at gmail.com>> wrote:
>     >> On 16 October 2010 21:25, Bill Lorensen
>     <bill.lorensen at gmail.com <mailto:bill.lorensen at gmail.com>> wrote:
>     >>>
>     >>> You can use the vtkTransformPolyDataFilter
>     >>>
>     >>
>     >> That will make a copy of the points and then adjust all the
>     values, right?
>     >>
>     >> There is quite a lot of points to plot, I was hoping to use an
>     approach that
>     >> wouldn't involve using more memory.
>     >>
>     >> Earlier, I tried this approach:
>     >> vtkTransform * flipform = vtkTransform::New();
>     >> flipform->Identity();
>     >> flipform->Scale(1,1,-1);
>     >> actor_flip->SetUserMatrix( flipform->GetMatrix() );
>     >>
>     >> And that worked find *except* that all of the surfaces look
>     dark, as if they
>     >> are facing away from the camera.
>     >>
>     >> I looked around and tried adding vtkReverseSense to the chain,
>     but that
>     >> didn't make any difference at all.
>     >>
>     >> Should I be able to use SetUserMatrix?
>     >>
>     >>
>     >>
>     >>>
>     >>> On Sat, Oct 16, 2010 at 9:06 AM, Paul Harris
>     <harris.pc at gmail.com <mailto:harris.pc at gmail.com>> wrote:
>     >>> > The models themselves.   Flipping the ViewUp seems to be the
>     same as
>     >>> > turning
>     >>> > the monitor upside down, but that is not the result I want.
>     >>> > The problem is that Z in model coordinates is "downwards",
>     but vtk seems
>     >>> > to
>     >>> > insist that Z is "upwards".
>     >>> > This problem is not just for Z either,
>     >>> > I also have the situation where in some circumstances, the Y
>     should
>     >>> > point
>     >>> > the other way.   ie, Y means South rather than North.
>     >>> >
>     >>> >
>     >>> > On 16 October 2010 03:32, Bill Lorensen
>     <bill.lorensen at gmail.com <mailto:bill.lorensen at gmail.com>> wrote:
>     >>> >>
>     >>> >> Do you want the models flipped, or just the view of the models?
>     >>> >>
>     >>> >> If it is the latter, you can set the ViewUp of the camera
>     to 0,0,-1.
>     >>> >>
>     >>> >>
>     >>> >> On Fri, Oct 15, 2010 at 3:17 PM, Paul Harris
>     <harris.pc at gmail.com <mailto:harris.pc at gmail.com>>
>     >>> >> wrote:
>     >>> >> > Hi all,
>     >>> >> >
>     >>> >> > I have a VTK scene with some vtkPolyDataMappers and
>     actors, plus an
>     >>> >> > orientation widget.
>     >>> >> >
>     >>> >> > I want to change the fundamental direction of the Z axis,
>     so that it
>     >>> >> > points
>     >>> >> > down rather than up.  I want all of the models, the
>     orientation
>     >>> >> > widget,
>     >>> >> > etc
>     >>> >> > to flip, so that they point down instead of up.
>     >>> >> >
>     >>> >> > I've tried lots of things but have gotten nowhere...
>     >>> >> >
>     >>> >> > how do I make this happen?
>     >>> >> >
>     >>> >> > thanks
>     >>> >> > Paul
>     >>> >> >
>     >>> >> >
>     >>> >> >
>     >>> >> > _______________________________________________
>     >>> >> > Powered by www.kitware.com <http://www.kitware.com>
>     >>> >> >
>     >>> >> > Visit other Kitware open-source projects at
>     >>> >> > http://www.kitware.com/opensource/opensource.html
>     >>> >> >
>     >>> >> > Please keep messages on-topic and check the VTK FAQ at:
>     >>> >> > http://www.vtk.org/Wiki/VTK_FAQ
>     >>> >> >
>     >>> >> > Follow this link to subscribe/unsubscribe:
>     >>> >> > http://www.vtk.org/mailman/listinfo/vtkusers
>     >>> >> >
>     >>> >> >
>     >>> >
>     >>> >
>     >>
>     >>
>     >
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>   




More information about the vtkusers mailing list