[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