Single Sided Meshing/Point Normal Generation

Support and discussion of Thinkbox Software's Point Cloud Meshing tool.
Mike3

Single Sided Meshing/Point Normal Generation

Postby Mike3 » Wed Nov 23, 2016 1:53 pm

Im trying to get a single sided mesh. My scan doesn't have normal information. So when I try to export my mesh with single sided - cull by normal enabled. I get this error cull_faces_by_normal_similarity: Input mesh is missing point normal channel (Mapping2).For help on how to fix this, please see "Single Sided Meshing" in the Online Help.
I'm guessing It's because my lack of normal information. Reading some documentation I see that sequoia can generat normal information......? via the Point Normal Generation.

Where is the Point Normal Generation located and how do I attach it to my point loader?

Thanks
Mike

User avatar
Bobo
Posts: 6128
Joined: Tue Nov 15, 2005 10:26 am
Location: Vancouver, Canada
Contact:

Re: Single Sided Meshing/Point Normal Generation

Postby Bobo » Wed Nov 23, 2016 5:34 pm

Hi Mike,

There are several ways to generate Point Normal information, and some work better than others, and some are very much work in progress.

The Point Normal Generation operator is supposed to generate normals just from neighboring information. However it is not quite ready for prime time, and is incredibly slow. It works best with aerial scans of terrain where most of the data is pointing mostly up anyway. If you try to use it on arbitrary clouds like a car or a building, it will have hard time figuring out "inside" and "outside", so while the normals might be mostly correct, they might be pointing exactly in the opposite direction... Improving this operator is on our To Do list. You can see a tutorial describing the steps of using it here:

http://docs.thinkboxsoftware.com/produc ... rrain.html

The Normal From Scanner Position operator uses the Scanner Position data (if any) to determine the "visibility vector" of each point - this is not the normal of the surface, but the vector connecting the point sample to the scanner's position. It is good enough for determining the "front" and "back". If a point cloud connects multiple Scanner Positions, each particle will use the value based on the ScannerIndex channel which describes which scanner took that sample.

http://docs.thinkboxsoftware.com/produc ... erpos.html

If you don't have a Scanner Position, you could still make it work by creating a reference point approximately where the scanner was placed, and picking it as the reference point in the Set Scanner Position operator (new in v1.1). Then you can add a Normal From Scanner Position below it on the Operators list, and it will use the manually specified position as the target of the visibility vectors. This will only work in limited number of cases where a single scanner was used to create the point cloud, and its position is obvious from the "empty circle" below the tripod usually seen in the point cloud...

Hope this helps!
Borislav "Bobo" Petrov
Product Specialist
Thinkbox Software Inc.

dylan

Re: Single Sided Meshing/Point Normal Generation

Postby dylan » Mon Nov 13, 2017 11:32 am

Hi There, I've been working on the normal workflow. I have added the Set Scanner Position and Normal from Scanner position but am still not seeing an update in Scanner Data. Also the Normals on all the meshes are still aligned to the world rather then to the scanner location. Perhaps I'm missing a step and am happy to try and troubleshoot this with you.

Thanks

Dylan

User avatar
Bobo
Posts: 6128
Joined: Tue Nov 15, 2005 10:26 am
Location: Vancouver, Canada
Contact:

Re: Single Sided Meshing/Point Normal Generation

Postby Bobo » Mon Nov 13, 2017 5:14 pm

dylan wrote:Hi There, I've been working on the normal workflow. I have added the Set Scanner Position and Normal from Scanner position but am still not seeing an update in Scanner Data. Also the Normals on all the meshes are still aligned to the world rather then to the scanner location. Perhaps I'm missing a step and am happy to try and troubleshoot this with you.

Thanks

Dylan


The Normals of the meshes should be perpendicular to the surface, that's what they are for.
The Mapping2 channel of the Mesher will contain the Normals data coming from the Point Loader if it was set up correctly as you described.

On the Point Loader, you should add a Set Scanner Position, create and pick a Marker as reference point, then add a Normal from Scanner Position operator to take that data and generate a Normals channel.
SQ_Normal_From_OriginMarker_01.jpg
SQ_Normal_From_OriginMarker_01.jpg (523.61 KiB) Viewed 643 times

You can display as Normal as Color in the viewport via the Display rollout of the Point Loader. It should look like a gradient centered at the Marker (negative values show as black):
SQ_Normal_From_OriginMarker_02.jpg
SQ_Normal_From_OriginMarker_02.jpg (418.13 KiB) Viewed 643 times

Meshing a region of the dataset with normal culling and 10% reduction should produce a mesh that has faces only on the side of the reference point:
SQ_Normal_From_OriginMarker_03.jpg
SQ_Normal_From_OriginMarker_03.jpg (309.22 KiB) Viewed 643 times

Looking from the opposite side, the backfaces would be culled as requested, because the Normal in the mesh is pointing in the opposite direction to what is stored in the Mapping2 channel coming from the Point Loader's Normals.
SQ_Normal_From_OriginMarker_04.jpg
SQ_Normal_From_OriginMarker_04.jpg (318.5 KiB) Viewed 643 times

Displaying backfaces tinted in red shows you the back side of the front-facing remaining polygons...
SQ_Normal_From_OriginMarker_05.jpg
SQ_Normal_From_OriginMarker_05.jpg (341.21 KiB) Viewed 643 times
Borislav "Bobo" Petrov
Product Specialist
Thinkbox Software Inc.


Return to “Thinkbox Software - Sequoia”

Who is online

Users browsing this forum: No registered users and 1 guest