[vtkusers] Vector arrows form a solid patch. How to rectify??

John Platt jcplatt at dsl.pipex.com
Thu Jan 28 14:52:09 EST 2010


Hi Rakesh,

Have you considered adding an observer to the render window interactor for EndInteractionEvent? I use this event to redraw glyphs to a fixed screen scale so they do not get larger as you zoom in.

HTH

John.
  ----- Original Message ----- 
  From: Rakesh Patil 
  To: David Doria 
  Cc: vtkusers at vtk.org 
  Sent: Thursday, January 28, 2010 4:53 PM
  Subject: Re: [vtkusers]Vector arrows form a solid patch. How to rectify??



  i guess, the way i explained the problem was not correct.. here it goes,

  for a large area, if i draw vecot of actual size, it will be visible as a small dot. So i need to scale and make it 
  large enough that it is visible properly.. And as i zoom in, and go closer to them, they must slowly,
  shrink to their actual size... 

  As kaarthik said, i think i need to write my own actor . But how to do it, am not able to understand..
  can anyone guide me..??

  Thanks
  Regards


    ---------- Original message ----------
    From:David Doria< daviddoria+vtk at gmail.com >
    Date: 27 Jan 10 19:54:04
    Subject: Re: [vtkusers] Vector arrows form a solid patch. How to rectify??
    To: rakeshthp at in.com

    On Wed, Jan 27, 2010 at 8:56 AM, Rakesh Patil wrote:
    > Hello,
    >
    > I dont know mush about wrapping the code. It would be nice if anyone helps
    > me out. Here is my code to display vectors
    > 
    > unsigned int num_pts = x.size();
    >
    > vtkPoints *pts = vtkPoints::New();
    > pts->SetNumberOfPoints(num_pts);
    >
    > vtkDoubleArray *vecArr = vtkDoubleArray::New();
    > vecArr->SetNumberOfComponents(3);
    > vecArr->SetNumberOfTuples(num_pts);
    >
    > for( unsigned int i=0; i < num_pts; i++)
    > {
    > pts->InsertPoint(i, x(i), y(i), 0);
    > vecArr->InsertTuple2(i, vel_u(i), vel_v(i));
    > }
    >
    > unsigned int num_cells = elem.rows(); // elem is a matrix that contains the
    > index of nodes of elements in the mesh
    >
    > vtkCellArray *cellA = vtlCellArray::New();
    > cellA->SetNumberOfCells(num_cells);
    >
    > for (unsigned int i=0; i < num_cells; i++)
    > {
    > cellA->InsertNextCell(3);
    > cellA->InsertCellPoint( elem(i, 0) );
    > cellA->InsertCellPoint( elem(i, 1) );
    > cellA->InsertCellPoint( elem(i, 2) );
    > }
    >
    > vtkUnstructuredGrid *uGrid = vtkUnstructuredGrid::New();
    > uGrid->Allocate(num_cells, num_cells);
    > uGrid->SetCells( VTK_TRIANGLE, cellA);
    > uGrid->SetPoints(pts);
    > uGrid->GetPointData()->SetVector(vecArr);
    >
    > vtkGlyph2D *glyph = vtkGlyph2D::New();
    > glyph->SetInput(uGrid);
    > glyph->SetColorModeToColorByVector();
    > glyph->OrientOn();
    > glyph->SetScaleFactor(1);
    >
    > vtkGlyphSource2D *glyphSource = vtkGlyphSource2D::New();
    > glyphSource->FilledOff();
    > glyphSource->SetGlyphTypeToArrow();
    >
    > glyph->SetInputConnection(1, glyphSource->GetOutputPort());
    >
    > vtkPolyDataMapper *gMapper = vtkPolyDataMapper::New();
    > gMapper->SetInput( glyph->GetOutput());
    > gMapper->ScalarVisibilityOn();
    > gMapper->SetScalarRange(uGrid->GetScalarRange());
    >
    > vtkActor *gactor = vtkActor::New();< br>> gactor->SetMapper(gMapper);
    >
    > pRenderer->AddActor(gactor);
    >
    > pRenderer->Rese tCamera();
    >
    > Do i need to derive a class from vtkActor and override RenderOpaqueGeometry
    > code..?? If so, then how do i scale the glyphs..?? and which part will this
    > code come into picture. Am not that much expert in C++ but can manage with a
    > guidance.
    >
    > Thanks
    >
    > Regards
    >
    > ---------- Original message ----------
    > From:Karthik Krishnan< karthik.krishnan at kitware.com >
    > Date: 25 Jan 10 17:08:12
    > Subject: Re: [vtkusers] Vector arrows form a solid patch. How to rectify??
    > To: Rakesh Patil
    >
    > You'll have to write your own actor wrapping around your existing code
    > and overriding RenderOpaqueGeometry. Its not hard. See several actors
    > in VTK/Rendering that scale their font size based on the size of the
    > viewport etc. Yo u may have to do something similar scaling your glyphs
    > based on the parallel scale / view angle.
    >
    > On Sat, Jan 23, 2010 at 12:49 PM, Rakesh Patil wrote:
    >> hello,
    >>
    >> When i display a vector plot using vtk, it is shown very small like a dot.
    >> And when i zoom into it, it gets more visible and big. But, i want it in
    >> such a way, that when i display it, at the initial stage itself, the
    >> vectors
    >> must be big enough that can be seen. And when we zoom into it, then the
    >> arrow size must proportionately become small. I Used setscalefactor for
    >> glyph object and got the arrow size increased.
    >>
    >> But where the data is very dense, there a solid patch is formed due to
    >> which
    >> i cannot make out whats the length of the arrow. So as we zoom in, the
    >> arrow
    >> size must be reduced so that at the denser location, i ca n differentiate
    >> among two vectors. How can i do this..??
    >>
    >> Thanks in advance
    >>
    >> Regards
    >> Rakesh
    >>
    >> Get Yourself a cool, short @in.com Email ID now!
    >> _______________________________________ ________
    >> 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
    >
    > _________________________________
    > Karthik Krishnan

    This is only a very partial answer, but you can scale an arrow using
    the vtkTransformFilter like this:

    http://www.vtk.org/Wiki/VTK/Examples/TransformFilter

    Thanks,

    David
    _______________________________________________
    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
    < /blockquote> 


    Get Yourself a cool, short @in.com Email ID now!


----------------------------------------------------------------------------


    _______________________________________________
    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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100128/2e2d9479/attachment.htm>


More information about the vtkusers mailing list