[vtkusers] How to construct polygon?

rakesh patil prakeshofficial at gmail.com
Mon Apr 17 00:28:08 EDT 2017


Hi,

I thought that vtkTriangleFilter does the tessellation of polygon by
triangulating. Correct me if I am wrong. Let me try your suggestion and
come back.

Thanks

On Mon, Apr 17, 2017 at 7:34 AM, kenichiro yoshimi <rccm.kyoshimi at gmail.com>
wrote:

> Hi,
>
> It looks like the issue of rendering concave polygons by OpenGL included
> in the past mailing list, and it is concluded that OpenGL doesn't render
> concave polygons properly and needs tessellation:
> http://public.kitware.com/pipermail/vtkusers/2010-May/059784.html
> http://vtk.1045678.n5.nabble.com/problems-rendering-
> concave-polygon-td5007789.html
> (I'm sorry I don't know the details of this problem.)
>
> I suggest using vtkDelaunay3D for tessellating and then using
> vtkGeometryFilter that extracts the external faces.
>
> Thanks,
> yoshimi
>
> 2017-04-17 3:30 GMT+09:00 rakesh patil <prakeshofficial at gmail.com>:
>
>> Hi,
>>
>> Well, I would like to know how polygon loop being non-planar leads to
>> such output. Because, the image shown in expectedOutput is also built of
>> similar polygon loop. Its just that for few curved surfaces are rendered
>> properly and few don't. I just want to know why is there such inconsistent
>> behavior and how do I overcome this?
>>
>> Thanks
>>
>> On Sat, Apr 15, 2017 at 10:56 AM, kenichiro yoshimi <
>> rccm.kyoshimi at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> Your polygon loop is non-planar.
>>>
>>>>>> Howerver, the triangulate method used by vtkPolygon assumes that polygon
>>> points lie in a plane. I recommend to use vtkCylinderSource or
>>> vtkStructuredGrid to represent the side of surface of a cylinder.
>>>
>>> Thanks,
>>> yoshimi
>>>
>>> 2017-04-14 0:38 GMT+09:00 Rakesh Patil <rakesh.p at tataelxsi.co.in>:
>>>
>>>> Hi,
>>>>
>>>>
>>>> This question seems to be simple, but I am not able to get any output
>>>> for this. I am not able to understand what is happening in this case:
>>>>
>>>>
>>>> vtkSmartPointer<vtkPoints> tpoints = vtkSmartPointer<vtkPoints>::New();
>>>>
>>>> vtkSmartPointer<vtkPolygon> poly = vtkSmartPointer<vtkPolygon>::New();
>>>>
>>>> vtkSmartPointer<vtkCellArray> carr = vtkSmartPointer<vtkCellArray>::New();
>>>>
>>>> vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
>>>>
>>>>
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.39116, -2.39117, 4.5));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.39116, -2.39117, 3));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.39116, -2.39117, 1.5));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.39116, -2.39117, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 4.08748, -2.87967, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 3.05391, -3.95899, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 1.74755, -4.68466, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( 0.28509, -4.99187, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -1.20284, -4.85316, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.58332, -4.28094, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -3.73305, -3.32631, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.54931, -2.07456, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.95919, -0.637487, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.92609, 0.856528, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.45295, 2.27403, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -3.58205, 3.4884, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 0));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 1.5));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 3));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 4.5));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -2.39117, 4.39116, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -3.58205, 3.4884, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.45295, 2.27403, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint( -4.92609, 0.856528, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-4.95919, -0.637487, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-4.54931, -2.07456, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-3.73305, -3.32631, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-2.58332, -4.28094, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(-1.20284, -4.85316, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(0.28509, -4.99187, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(1.74755, -4.68466, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(3.05391, -3.95899, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(4.08748, -2.87967, 6));
>>>>
>>>> poly->GetPointIds()->InsertNextId(tpoints->InsertNextPoint(4.39116, -2.39117, 6));
>>>>
>>>> carr->InsertNextCell(poly);
>>>>
>>>>
>>>>     polyData->SetPoints(tpoints);
>>>>
>>>>     polyData->SetPolys(carr);
>>>>
>>>>
>>>>     vtkSmartPointer<vtkTriangleFilter> tfilter = vtkSmartPointer<vtkTriangleFilter>::New();
>>>>
>>>>     tfilter->SetInputData(polyData);
>>>>
>>>>     tfilter->Update();
>>>>
>>>>
>>>>
>>>>     vtkSmartPointer<vtkPolyDataMapper> pmapper = vtkSmartPointer<vtkPolyDataMapper>::New();
>>>>
>>>>     pmapper->SetInputConnection(tfilter->GetOutputPort());
>>>>
>>>>
>>>>     vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
>>>>
>>>>     actor->SetMapper(pmapper);
>>>>
>>>>     actor->GetProperty()->SetRepresentationToSurface();
>>>>
>>>>     actor->GetProperty()->EdgeVisibilityOn();
>>>>
>>>>     actor->GetProperty()->SetEdgeColor(1.0, 0.0, 0.0);
>>>>
>>>>
>>>>     renderer->AddActor(actor);
>>>>
>>>>     renderer->ResetCamera();
>>>>
>>>>
>>>>
>>>> I am not able to view the output if I use vtkTriangleFilter. I have
>>>> attached two screenshots. One is to show how the expected output should
>>>> come. Another is the vtk's output without applying vtkTriangleFilter. How
>>>> do I get the curved surfaces based on the above geometry (points)?
>>>>
>>>>
>>>> Am I missing anything there?
>>>>
>>>>
>>>>
>>>> Thanks & Regards
>>>>
>>>> Rakesh Patil
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>>>
>>>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://public.kitware.com/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
>>>
>>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://public.kitware.com/mailman/listinfo/vtkusers
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170417/c4ff52d5/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: non_planar_polygon.png
Type: image/png
Size: 92659 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170417/c4ff52d5/attachment.png>


More information about the vtkusers mailing list