Normals of slices not appearing in the calculator filter

Hi - this might be a simple question but is it possible to get surface normals that are usable in calculator filters from slices?

Normally, for a 3D surface, I can do Extract Surface → Generate Surface Normal → Calculator and Normals_X, Normals_Y, and Normals_Z are available, but when I tried to first take a slice first, and then do the pipeline on the slice, I can’t seem to access normals any more.

Is this the expected behaviour? If so, what would the correct way to extract normals from a closed 2D slice? In my case, I have sliced a wing, so I have a aerofoil section.


Generate surface normals? The following works for me. Please give us the exact steps and a small dataset to try if this doesn’t work.

  • 5.10.0-RC1
  • Load disk_out_ref.exo from the Examples directory. Apply.
  • Slice. Apply. Turn off the plane tool visibility.
  • Generate Surface Normals.

The reason we probably need a dataset is there may be an incompatibility between your data type and generate surface normals?

Hi Walter. Where are the examples located? I searched for them in my Paraview directory paths but was able to find any .exo files.

In the meantime, please see attached for a PVSM state file slice_wing_no_normal.pvsm (360.2 KB)
and here for the flow surface: surface_flow_0.vtu

I’m running Paraview 5.8.1 and in the state file, I have done slice, generate surface normals, and opened a calculator to check if there are any normals. In my case, they are not present under the Vectors dropdown.

(The surface flow file was output from SU2.)

File/ Open / Upper left corner.

I did see you post that before but unfortunately, I don’t have it.

It’s because you have built your own ParaView., or are connected to a cluster.

Thanks for the hint - I downloaded the 5.9.1 binary for testing and I can confirm that using the .exo, the normals are present in the Calculator filter after calling Generate Surface Normals on a Slice, but not the .vtu geometry I had attached in the above post.

Would you be able to confirm if you are also unable to extract the normals on the .vtu geometry?

@mwestphal @cory.quammen Hi guys. This dataset, a vtu file (Unstructured Grid) doesn’t let us run the Generate Surface Normals filter. Any idea why? Shouldn’t it just natively run? The dataset is a 3d surface unstructured grid.

Hey Tim. The issue is that the dataset isn’t compatible with the input needs of the Generate Surface Normals filter. Run the Extract Surface filter on it (converting from Unstructured to Polygonal mesh), THEN the Generate Surface Normals filter.

Hi Walter - I did try that on the previous version. I just double checked on 5.9.1 and it still doesn’t work for me:

Did you see the normals on your installation?

I just experimented with clip instead of slice. If I set a very thin box clip, then I can extract surface normals but would this be a bad approach in terms of memory?

For example if I create several hundred cuts along the wing to integrate the pressures on each sectional cut, (since my end goal is to integrate each section), would this be better done with many slices or many very slim box clips?

To stay on thread - what makes slice behave differently from clip? Thanks.

Don’t do the slice. You already have your surface. Here is what I did.

Hi Walter - sorry, I don’t think I understood you (or I explained the target poorly). My goal is to get slices so that I can see the local cross-sectional pressures. Then would like to integrate each 2D slice for a local lift coefficient, so that I can produce a plot like this:

Did you mean that I could achieve the same thing without taking slices? Thanks.

so you want to produce slices like this one ? :

Hi Mathieu, thanks - yes, just in the the Y-normal axis! So Like this:

So that I can get something like this for each section:

Then I can integrate each section for the desired local lift.

So what is missing for you here ?

I can’t get the normals from a slice in the calculator filter!

Ok, got it, do as follows:

  • Open surface_flow.vtu, Apply
  • ExtractSurface, Apply
  • GenerateSurfaceNormals, Apply
  • Slice, Y axis, Apply
  • (Optinal, Glyph with normals, Apply)

Fantastic, that solved the issue. Thanks for your help Walter & Mathieu! So the solutions is to extract the surface and get the normals before slicing.

How come for a clip, we can still get the normals after clipping? Is this because slices loose surface information as they are ‘infinitely thin’? Thanks for your help.