[vtkusers] flipping the scene:(Parity Transform)
    David Gobbi 
    dgobbi at irus.rri.on.ca
       
    Wed Dec 13 16:42:28 EST 2000
    
    
  
On Wed, 13 Dec 2000, Fletcher, Bob (GEAE) wrote:
> I have a scene with many actors. I need to flip the whole scene around,
> replacing z with -z. (Parity Transform).
> 
> I tried 
> myactor  SetScale 1 1 -1
It is a more-or-less fundamental rule in OpenGL (and probably all other
graphics libraries) that parity transforms are not allowed (they don't
raise any error flags, they just screw things up).
 
> The geometry looks ok, but it's all rendered flat black. Without the
> Setscale it's colored by it's scalar value.  Is this some kind of normal
> vector problem? 
Yes.  When you do a flip, you end up turning your geometry inside-out.
The normals end up pointing inwards.  
> I can setScale -1 -1 1, and the colors are ok, but of course it doesn't
> change my geometry!
> 
> Is there a better approach? This seemed simplest.  Is ther a Left
> handed/righthanded corrdinate system flag hiding someplace?
I'm pretty sure that there isn't.  You will probably have to use
vtkTransformPolyDataFilter to transform your data, then use 
vtkPolyDataNormals to re-generate normals in the correct direction.
It would be possible to add code to VTK so that it automatically 
detects parity transformations and reverses the normals.  This 
would be a fair bit of work, though.
 - David
P.S. Parity transformations are evil.  Avoid them if you can.  Read
     "Alice's Adventures Through the Looking Glass" for further info,
     or perhaps watch a couple episodes of "Sailor Moon."
--
  David Gobbi, MSc                    dgobbi at irus.rri.on.ca
  Advanced Imaging Research Group
  Robarts Research Institute, University of Western Ontario
    
    
More information about the vtkusers
mailing list