[vtkusers] plot a huge amount of spheres
curator
curator at gmx.de
Mon Sep 2 07:25:29 EDT 2013
Sry for disturbing again, but does noone have an idea about that?
regards,
curator
Am 26.08.2013 15:04, schrieb curator:
> Hi and thanks for your help.
>
> I read some pages about vtkGlyph3D and came up up with following solution.
>
> m_vtkCenterPoints = vtkPoints::New();
> m_vtkCenterPolyData = vtkPolyData::New();
> m_vtkSphereSource = vtkSphereSource::New();
> m_vtkGlyph3D = vtkGlyph3D::New();
>
> m_vtkCenterPolyData->SetPoints(m_vtkCenterPoints);
> m_vtkGlyph3D->SetSourceConnection(m_vtkSphereSource->GetOutputPort());
> m_vtkGlyph3D->SetInputData(m_vtkCenterPolyData);
> m_vtkGlyph3D->GeneratePointIdsOn();
>
> m_vtkMapper->SetInputConnection(m_vtkGlyph3D->GetOutputPort());
>
> ....
> addData(...)
> {
> m_vtkCenterPoints->InsertNextPoint(i_Position.x,i_Position.y,i_Position.z);
> m_Data.push_back("I am some information");
> }
> .....
> m_vtkGlyph3D->Update();
>
> So, this works. I have to point out that I have different vtkGlyphs
> plotted simultainiously. Nevertheless, I now would like to use a
> picker, which means that I would like give some text output of the
> current sphere.
>
> Therefore, during mouseover, I already managed to determine the
> current vtkActor and, hence, are already in the "correct" glyph. Now
> my idea is, that during the "addData" call, a stl::vector is filled
> with information. The number of elements should be identical to the
> number of points, as both is extended by one with each call. My aim is
> something like
>
> ...
> int ID = i_dont_know() // id of current sphere
> printf("Your information is %d\n",m_Data[ID]);
> ...
> I tried around with vtkCellPicker and vtkPointPicker, which seem to
> work in general, but are not very accurate, which means that some
> sometimes come up with wrong data as output.
> if ( m_PointPicker->Pick( i_X, i_Y, 0, i_Renderer ) )
> {
> // something is picked
> int ID2 =m_PointPicker->GetPointId();
>
> vtkDataArray *p_Array =
> m_vtkGlyph3D->GetOutput()->GetPointData()->GetArray("InputPointIds");
> int ID = int(p_Array->GetTuple1(p_ID2 ));
> }
> or
> if ( m_CellPicker->Pick( i_X, i_Y, 0, i_Renderer ) )
> {
> // something is picked
> int ID2 =m_CellPicker->GetCellId();
>
> vtkDataArray *p_Array =
> m_vtkGlyph3D->GetOutput()->GetPointData()->GetArray("InputPointIds");
> int ID = int(p_Array->GetTuple1(p_ID2 ));
> }
>
> Is there a more correct approach?
>
> regards,
> curator
> Am 22.08.2013 16:55, schrieb David E DeMarle:
>> Use a vtkPolyData with points on the locations, and a VTK_VERTEX cell
>> refering to each one.
>>
>> Then send that into vtkGlyph to have the CPU makes the spheres which
>> then get send to the card.
>>
>> Better yet, draw it with vtkGlyph3dMapper to make the spheres via
>> vertex programs on the GPU instead of the CPU.
>>
>> Better still, bring ParaView's point sprite plugin over, which will
>> draw the spheres via fragment programs on the GPU.
>>
>>
>> David E DeMarle
>> Kitware, Inc.
>> R&D Engineer
>> 21 Corporate Drive
>> Clifton Park, NY 12065-8662
>> Phone: 518-881-4909
>>
>>
>> On Thu, Aug 22, 2013 at 10:45 AM, Gib Bogle <g.bogle at auckland.ac.nz
>> <mailto:g.bogle at auckland.ac.nz>> wrote:
>>
>> You need only multiple actors, all using the same mapper.
>>
>>
>> On 23/08/2013 2:39 a.m., curator wrote:
>>
>> Hi all,
>>
>> I am able to draw a vtkSphere with its own vtkSphere,
>> vtkActor and vtkMapper equipped together. Now if I need
>> several spheres, I add multiple instances of this stuff for
>> each sphere and add them all up to the same renderer - so
>> far, so good.
>>
>> Now I need to draw a really huge amount of spheres, which are
>> all identical except the position. Is there any more
>> efficient way to to that than just creating N vtkActors, N
>> vtkMappers and N vtkSpheres?
>>
>> regards,
>> curator
>> _______________________________________________
>> 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
>>
>>
>>
>> --
>> Dr. Gib Bogle
>> Senior Research Fellow
>> Auckland Bioengineering Institute
>> University of Auckland
>> New Zealand
>>
>> http://www.bioeng.auckland.ac.nz
>>
>> g.bogle at auckland.ac.nz <mailto:g.bogle at auckland.ac.nz>
>> (64-9) 373-7599 Ext. 87030
>>
>>
>> _______________________________________________
>> 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 bywww.kitware.com
>>
>> Visit other Kitware open-source projects athttp://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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130902/37293072/attachment.htm>
More information about the vtkusers
mailing list