VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

classic Classic list List threaded Threaded
15 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

VTK - Users mailing list
Hi everyone,

I am using vtkBooleanOperationPolyDataFilter, and it works fine except after the operation it smoothes the polydata, which I dont want. Is there a way to stop that? Or is there another library for boolean operations on polydata?

Thanks.


_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

Cory Quammen-2
What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:

> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFilter, and it works fine except after
> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> _______________________________________________
> 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
>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.
_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

VTK - Users mailing list
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

">




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:

> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFilter, and it works fine except after
> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> _______________________________________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.


_______________________________________________
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

Untitled-8.jpg (349K) Download Attachment
Untitled-8.jpg (349K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

Cory Quammen-2
There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:

> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFilter, and it works fine except after
> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> _______________________________________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

VTK - Users mailing list
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:

> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after
> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

Cory Quammen-2
What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

VTK - Users mailing list
Dear Cory,

All you said was exactly what I have done. I tested your method to check the data and I could see only one of the objects. So If I understand right, during the boolean operation the vtkPolyDataNormals are recalculated and that is the reason the polydata is shown smoothed. Is there a way not to let boolean recalculate it? Or more generally is there a way to keep the bumps. That kind of is the norm in the medical field and some doctors might not feel very good about the smooth data.

Thanks.





On Monday, July 17, 2017, 7:33:19 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

Cory Quammen-2
Hmm, now I wonder if the boolean operations filter is simply removing the normals filter. The code has changed from the original, which did preserve normals. It looks like the current code should preserve normals as well, but I'm not 100% sure if that is the case.

In the output of the boolean operation filter, could you check that there is a normals array in the pointdata?

vtkDataArray* normals = output->GetPointData()->GetNormals();

If "normals" is NULL, then the normals are not being copied to the output.

Thanks,
Cory



On Mon, Jul 17, 2017 at 11:47 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

All you said was exactly what I have done. I tested your method to check the data and I could see only one of the objects. So If I understand right, during the boolean operation the vtkPolyDataNormals are recalculated and that is the reason the polydata is shown smoothed. Is there a way not to let boolean recalculate it? Or more generally is there a way to keep the bumps. That kind of is the norm in the medical field and some doctors might not feel very good about the smooth data.

Thanks.





On Monday, July 17, 2017, 7:33:19 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

VTK - Users mailing list
Dear Cory,

!normals returns true, so as you said there is no normal array. Is there a way to copy that before the operation and apply it afterwards? But I think that wont work because part of the data is changed in the boolean operation. So how can we keep the normals?

Thanks,


On Tuesday, July 18, 2017, 4:21:45 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Hmm, now I wonder if the boolean operations filter is simply removing the normals filter. The code has changed from the original, which did preserve normals. It looks like the current code should preserve normals as well, but I'm not 100% sure if that is the case.

In the output of the boolean operation filter, could you check that there is a normals array in the pointdata?

vtkDataArray* normals = output->GetPointData()-> GetNormals();

If "normals" is NULL, then the normals are not being copied to the output.

Thanks,
Cory



On Mon, Jul 17, 2017 at 11:47 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

All you said was exactly what I have done. I tested your method to check the data and I could see only one of the objects. So If I understand right, during the boolean operation the vtkPolyDataNormals are recalculated and that is the reason the polydata is shown smoothed. Is there a way not to let boolean recalculate it? Or more generally is there a way to keep the bumps. That kind of is the norm in the medical field and some doctors might not feel very good about the smooth data.

Thanks.





On Monday, July 17, 2017, 7:33:19 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

Cory Quammen-2
Okay, let's try one more thing. Does

vtkDataArray* normals = output->GetPointData()->GetArray("Normals");

return NULL? Perhaps the normals array is being copied but not being set as the active normals.

Thanks,
Cory

On Tue, Jul 18, 2017 at 9:03 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

!normals returns true, so as you said there is no normal array. Is there a way to copy that before the operation and apply it afterwards? But I think that wont work because part of the data is changed in the boolean operation. So how can we keep the normals?

Thanks,


On Tuesday, July 18, 2017, 4:21:45 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Hmm, now I wonder if the boolean operations filter is simply removing the normals filter. The code has changed from the original, which did preserve normals. It looks like the current code should preserve normals as well, but I'm not 100% sure if that is the case.

In the output of the boolean operation filter, could you check that there is a normals array in the pointdata?

vtkDataArray* normals = output->GetPointData()-> GetNormals();

If "normals" is NULL, then the normals are not being copied to the output.

Thanks,
Cory



On Mon, Jul 17, 2017 at 11:47 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

All you said was exactly what I have done. I tested your method to check the data and I could see only one of the objects. So If I understand right, during the boolean operation the vtkPolyDataNormals are recalculated and that is the reason the polydata is shown smoothed. Is there a way not to let boolean recalculate it? Or more generally is there a way to keep the bumps. That kind of is the norm in the medical field and some doctors might not feel very good about the smooth data.

Thanks.





On Monday, July 17, 2017, 7:33:19 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

VTK - Users mailing list
Dear Cory,

It is still Null. Can we recalculate normals on the output of boolean operation?

Thanks,


Majid Mohammad Sadeghi
PhD Candidate
Mechatronics Engineering Department
Istanbul Technical University



On Tuesday, July 18, 2017, 5:26:05 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Okay, let's try one more thing. Does

vtkDataArray* normals = output->GetPointData()->GetArray("Normals");

return NULL? Perhaps the normals array is being copied but not being set as the active normals.

Thanks,
Cory

On Tue, Jul 18, 2017 at 9:03 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

!normals returns true, so as you said there is no normal array. Is there a way to copy that before the operation and apply it afterwards? But I think that wont work because part of the data is changed in the boolean operation. So how can we keep the normals?

Thanks,


On Tuesday, July 18, 2017, 4:21:45 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Hmm, now I wonder if the boolean operations filter is simply removing the normals filter. The code has changed from the original, which did preserve normals. It looks like the current code should preserve normals as well, but I'm not 100% sure if that is the case.

In the output of the boolean operation filter, could you check that there is a normals array in the pointdata?

vtkDataArray* normals = output->GetPointData()-> GetNormals();

If "normals" is NULL, then the normals are not being copied to the output.

Thanks,
Cory



On Mon, Jul 17, 2017 at 11:47 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

All you said was exactly what I have done. I tested your method to check the data and I could see only one of the objects. So If I understand right, during the boolean operation the vtkPolyDataNormals are recalculated and that is the reason the polydata is shown smoothed. Is there a way not to let boolean recalculate it? Or more generally is there a way to keep the bumps. That kind of is the norm in the medical field and some doctors might not feel very good about the smooth data.

Thanks.





On Monday, July 17, 2017, 7:33:19 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

VTK - Users mailing list
Any solution or idea for this yet?

Thanks,



On Wednesday, July 19, 2017, 11:19:51 AM GMT+3, Majid Mohammad sadeghi via vtkusers <[hidden email]> wrote:


Dear Cory,

It is still Null. Can we recalculate normals on the output of boolean operation?

Thanks,


Majid Mohammad Sadeghi
PhD Candidate
Mechatronics Engineering Department
Istanbul Technical University



On Tuesday, July 18, 2017, 5:26:05 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Okay, let's try one more thing. Does

vtkDataArray* normals = output->GetPointData()->GetArray("Normals");

return NULL? Perhaps the normals array is being copied but not being set as the active normals.

Thanks,
Cory

On Tue, Jul 18, 2017 at 9:03 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

!normals returns true, so as you said there is no normal array. Is there a way to copy that before the operation and apply it afterwards? But I think that wont work because part of the data is changed in the boolean operation. So how can we keep the normals?

Thanks,


On Tuesday, July 18, 2017, 4:21:45 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Hmm, now I wonder if the boolean operations filter is simply removing the normals filter. The code has changed from the original, which did preserve normals. It looks like the current code should preserve normals as well, but I'm not 100% sure if that is the case.

In the output of the boolean operation filter, could you check that there is a normals array in the pointdata?

vtkDataArray* normals = output->GetPointData()-> GetNormals();

If "normals" is NULL, then the normals are not being copied to the output.

Thanks,
Cory



On Mon, Jul 17, 2017 at 11:47 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

All you said was exactly what I have done. I tested your method to check the data and I could see only one of the objects. So If I understand right, during the boolean operation the vtkPolyDataNormals are recalculated and that is the reason the polydata is shown smoothed. Is there a way not to let boolean recalculate it? Or more generally is there a way to keep the bumps. That kind of is the norm in the medical field and some doctors might not feel very good about the smooth data.

Thanks.





On Monday, July 17, 2017, 7:33:19 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.
_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

Cory Quammen-2
You should be able to use vtkResampleWithDataSet [1] to sample the Normals array from the input bone data to the boolean operation output. You will get invalid normals for the indented region, though.

That's all I've got for suggestions other than someone figuring out in the boolean operations code why the normals aren't getting copied.

Thanks,
Cory


On Thu, Jul 20, 2017 at 7:20 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Any solution or idea for this yet?

Thanks,



On Wednesday, July 19, 2017, 11:19:51 AM GMT+3, Majid Mohammad sadeghi via vtkusers <[hidden email]> wrote:


Dear Cory,

It is still Null. Can we recalculate normals on the output of boolean operation?

Thanks,


Majid Mohammad Sadeghi
PhD Candidate
Mechatronics Engineering Department
Istanbul Technical University



On Tuesday, July 18, 2017, 5:26:05 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Okay, let's try one more thing. Does

vtkDataArray* normals = output->GetPointData()->GetArray("Normals");

return NULL? Perhaps the normals array is being copied but not being set as the active normals.

Thanks,
Cory

On Tue, Jul 18, 2017 at 9:03 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

!normals returns true, so as you said there is no normal array. Is there a way to copy that before the operation and apply it afterwards? But I think that wont work because part of the data is changed in the boolean operation. So how can we keep the normals?

Thanks,


On Tuesday, July 18, 2017, 4:21:45 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Hmm, now I wonder if the boolean operations filter is simply removing the normals filter. The code has changed from the original, which did preserve normals. It looks like the current code should preserve normals as well, but I'm not 100% sure if that is the case.

In the output of the boolean operation filter, could you check that there is a normals array in the pointdata?

vtkDataArray* normals = output->GetPointData()-> GetNormals();

If "normals" is NULL, then the normals are not being copied to the output.

Thanks,
Cory



On Mon, Jul 17, 2017 at 11:47 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

All you said was exactly what I have done. I tested your method to check the data and I could see only one of the objects. So If I understand right, during the boolean operation the vtkPolyDataNormals are recalculated and that is the reason the polydata is shown smoothed. Is there a way not to let boolean recalculate it? Or more generally is there a way to keep the bumps. That kind of is the norm in the medical field and some doctors might not feel very good about the smooth data.

Thanks.





On Monday, July 17, 2017, 7:33:19 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.
_______________________________________________
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



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

VTK - Users mailing list
Thank you so much Cory for the time and effort. Can I submit this as a bug, or do you know to whom should I ask this directly?


Majid Mohammad Sadeghi
PhD Candidate
Mechatronics Engineering Department
Istanbul Technical University



On Thursday, July 20, 2017, 4:26:53 PM GMT+3, Cory Quammen <[hidden email]> wrote:


You should be able to use vtkResampleWithDataSet [1] to sample the Normals array from the input bone data to the boolean operation output. You will get invalid normals for the indented region, though.

That's all I've got for suggestions other than someone figuring out in the boolean operations code why the normals aren't getting copied.

Thanks,
Cory


On Thu, Jul 20, 2017 at 7:20 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Any solution or idea for this yet?

Thanks,



On Wednesday, July 19, 2017, 11:19:51 AM GMT+3, Majid Mohammad sadeghi via vtkusers <[hidden email]> wrote:


Dear Cory,

It is still Null. Can we recalculate normals on the output of boolean operation?

Thanks,


Majid Mohammad Sadeghi
PhD Candidate
Mechatronics Engineering Department
Istanbul Technical University



On Tuesday, July 18, 2017, 5:26:05 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Okay, let's try one more thing. Does

vtkDataArray* normals = output->GetPointData()-> GetArray("Normals");

return NULL? Perhaps the normals array is being copied but not being set as the active normals.

Thanks,
Cory

On Tue, Jul 18, 2017 at 9:03 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

!normals returns true, so as you said there is no normal array. Is there a way to copy that before the operation and apply it afterwards? But I think that wont work because part of the data is changed in the boolean operation. So how can we keep the normals?

Thanks,


On Tuesday, July 18, 2017, 4:21:45 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Hmm, now I wonder if the boolean operations filter is simply removing the normals filter. The code has changed from the original, which did preserve normals. It looks like the current code should preserve normals as well, but I'm not 100% sure if that is the case.

In the output of the boolean operation filter, could you check that there is a normals array in the pointdata?

vtkDataArray* normals = output->GetPointData()-> GetNormals();

If "normals" is NULL, then the normals are not being copied to the output.

Thanks,
Cory



On Mon, Jul 17, 2017 at 11:47 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

All you said was exactly what I have done. I tested your method to check the data and I could see only one of the objects. So If I understand right, during the boolean operation the vtkPolyDataNormals are recalculated and that is the reason the polydata is shown smoothed. Is there a way not to let boolean recalculate it? Or more generally is there a way to keep the bumps. That kind of is the norm in the medical field and some doctors might not feel very good about the smooth data.

Thanks.





On Monday, July 17, 2017, 7:33:19 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.
______________________________ _________________
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



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: VTKboolean smoothes the results! Any other libraries for boolean operation on polydata?

Cory Quammen-2
Sure, feel free to submit a bug (https://gitlab.kitware.com/vtk/vtk). If you can include a self-contained code sample with either VTK source objects (e.g., vtkSphereSource) or small data files, that would greatly aid whoever takes on the bug in the future.

On Thu, Jul 20, 2017 at 8:33 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Thank you so much Cory for the time and effort. Can I submit this as a bug, or do you know to whom should I ask this directly?


Majid Mohammad Sadeghi
PhD Candidate
Mechatronics Engineering Department
Istanbul Technical University



On Thursday, July 20, 2017, 4:26:53 PM GMT+3, Cory Quammen <[hidden email]> wrote:


You should be able to use vtkResampleWithDataSet [1] to sample the Normals array from the input bone data to the boolean operation output. You will get invalid normals for the indented region, though.

That's all I've got for suggestions other than someone figuring out in the boolean operations code why the normals aren't getting copied.

Thanks,
Cory


On Thu, Jul 20, 2017 at 7:20 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Any solution or idea for this yet?

Thanks,



On Wednesday, July 19, 2017, 11:19:51 AM GMT+3, Majid Mohammad sadeghi via vtkusers <[hidden email]> wrote:


Dear Cory,

It is still Null. Can we recalculate normals on the output of boolean operation?

Thanks,


Majid Mohammad Sadeghi
PhD Candidate
Mechatronics Engineering Department
Istanbul Technical University



On Tuesday, July 18, 2017, 5:26:05 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Okay, let's try one more thing. Does

vtkDataArray* normals = output->GetPointData()-> GetArray("Normals");

return NULL? Perhaps the normals array is being copied but not being set as the active normals.

Thanks,
Cory

On Tue, Jul 18, 2017 at 9:03 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

!normals returns true, so as you said there is no normal array. Is there a way to copy that before the operation and apply it afterwards? But I think that wont work because part of the data is changed in the boolean operation. So how can we keep the normals?

Thanks,


On Tuesday, July 18, 2017, 4:21:45 PM GMT+3, Cory Quammen <[hidden email]> wrote:


Hmm, now I wonder if the boolean operations filter is simply removing the normals filter. The code has changed from the original, which did preserve normals. It looks like the current code should preserve normals as well, but I'm not 100% sure if that is the case.

In the output of the boolean operation filter, could you check that there is a normals array in the pointdata?

vtkDataArray* normals = output->GetPointData()-> GetNormals();

If "normals" is NULL, then the normals are not being copied to the output.

Thanks,
Cory



On Mon, Jul 17, 2017 at 11:47 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

All you said was exactly what I have done. I tested your method to check the data and I could see only one of the objects. So If I understand right, during the boolean operation the vtkPolyDataNormals are recalculated and that is the reason the polydata is shown smoothed. Is there a way not to let boolean recalculate it? Or more generally is there a way to keep the bumps. That kind of is the norm in the medical field and some doctors might not feel very good about the smooth data.

Thanks.





On Monday, July 17, 2017, 7:33:19 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What I think you are seeing with the rough surface is surface normals generated from an image volume. I am assuming a lot here, so please correct me if I am wrong. It looks like you have a geometry of a bone extracted from a CT scan. The extraction algorithm was probably a variant of marching cubes or a similar algorithm. The surface normals estimated from the surface extraction algorithm were probably computed from the intensity gradient of the CT scan. This is a reasonable approach, but noise in the CT scan will affect the gradient calculation and may perturb the surface normals in the geometry a little. When this happens, you can get a rough appearing surface from the surface lighting calculation. Google "bump mapping" for how this can be used for a nice graphics effect - I think roughly the same thing is happening with your original data.

When you use vtkPolyDataNormals, the normals are computed from the surface data, which was smooth to begin with. Hence, the normals are not perturbed, so you don't get a bumpy appearance.

In any case, the measurements you want to take are not dependent on the surface normals. As long as the points on the surface are not smooth, which they should not be, your measurement procedure should be fine.

To convince yourself the geometry is the same, you can display both the original "bumpy" surface and the smoothed surface at the same time with different colors. You should see just one surface or the other, probably the one you added to the vtkRenderer last. If the geometry is different, you will see some of one surface color and some of the other depending on which geometry is closer to the camera. I suspect you will see just one surface.

HTH,
Cory

On Mon, Jul 17, 2017 at 11:22 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

As I applied vtkPolyDataNormals to the polydata before the boolean operation I got the smoothed object, so you were right. But I dont understand exactly what is happening here? Since the geometry dimentions are very important for my application, Can I have the noisy version? Is there any way I do not get it smoothed?

Thanks,




On Monday, July 17, 2017, 6:48:58 PM GMT+3, Cory Quammen <[hidden email]> wrote:


There shouldn't be any geometry smoothing going on in this filter. Can you verify that the geometry has changed in the smoothed version?

This is speculation, but one possibility is that the surface normals in your original surface come from a gradient computation in the volume from which the surface was extracted and noise in the volume result in the bumpy appearance. You can check this by applying the vtkPolyDataNormals filter to your original surface and looking at the result.

HTH,
Cory

On Mon, Jul 17, 2017 at 10:21 AM, Majid Mohammad sadeghi <[hidden email]> wrote:
Dear Cory,

Thanks for the reply, I set the actors property to  SetInterpolationToFlat(); as you said, but the result is the same I put a picture before and after boolean operation here. Any suggestion? Are you familier with any other library? Current boolean operation takes about 150 seconds on my system, do you think this is normal?

Inline image




On Monday, July 17, 2017, 6:00:50 PM GMT+3, Cory Quammen <[hidden email]> wrote:


What do you mean by smooth? The lighting is smooth? I think the filter
may be adding surface normals, in which case any actor for the data
will turn on Gouraud shading (or maybe Phong) by default, which will
make your surface look smooth. You can turn off smooth lighting as
shown in this example:

http://www.vtk.org/Wiki/VTK/ Examples/Cxx/Visualization/ FlatShading

On Mon, Jul 17, 2017 at 9:49 AM, Majid Mohammad sadeghi via vtkusers
<[hidden email]> wrote:
> Hi everyone,
>
> I am using vtkBooleanOperationPolyDataFil ter, and it works fine except after

> the operation it smoothes the polydata, which I dont want. Is there a way to
> stop that? Or is there another library for boolean operations on polydata?
>
> Thanks.
>
>
> ______________________________ _________________
> 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

>



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.




--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.
______________________________ _________________
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



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.



--
Cory Quammen
Staff R&D Engineer
Kitware, Inc.

_______________________________________________
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
Loading...