With our project we scan parts with a laser scanner at different angles and transform back the data to the correct place. We can mesh the individual scans but when it comes to complete as a whole closed mesh, we are unsure how to do this and looking for ideas or suggestions.
I'm uploading a mesh with 2 scans in so you can get an idea of what were trying to do. With more scans the scan would be more full
here is link https://db.tt/WrNPqJks
Joining meshes/pointsets
Re: Joining meshes/pointsets
Hi Atrev
Correct me if I am wrong. It looks like you scan the object from different sides, but some areas are not accessible for scanning so you get those gaps and the problem is to construct the complete surface
One trivial and not very useful observation is that you could merge the point clouds and generate a surface from it. In your case it would produce nearly flat ragged patches, which is not good
The problem is not straightforward. You will need a relatively sophisticated processing. There are generic methods to extrapolate or interpolate or do patch fitting, but they all expect that the data is suitable for each specific method. Patch fitting is relatively powerful, but it also expects data to be more or less regularity spaced along some not too badly distorted rectangle
This should be expected because this is basically process of cognition for which computers are not very good.
There are expensive packages, which can do good work of converting 3d scans into parametric surfaces, but they almost always involve human interaction
You can automate processing by making assumption about your object. If you know that the object consists of a single pipe and a bunch of flat surfaces it can be completely automated after fair amount of coding
In rough steps the processing would look like that:
1. Detect the pipe, fit a parametric pipe (KernelCAD has that), remove points which are on surface of the pipe from your data. After that you will know that the remaining data consists of flat surfaces
2. In a loop: Detect a flat area. Fit a plane into it. Remove points inside the plane from the data. Go to the start of the loop. This will produce a set of planes. Using their intersections and the data you can construct flat polygons from that. It is easy to build a KC BRep Section (for example) from that
Detecting and fitting a pipe will take some coding, but not too bad
The good thing is that after that the resulting surface will be perfect for rendering and any geometric analysis. The data also does not have to be very dense
We could start a custom project for you. It would be a combination of built in functionality like detection and fitting a pipe or plane and an application with source code for the high level processing (steps 1,2 etc). The later can be a skeleton, on which you can build on yourself
Best regards
Nick
Correct me if I am wrong. It looks like you scan the object from different sides, but some areas are not accessible for scanning so you get those gaps and the problem is to construct the complete surface
One trivial and not very useful observation is that you could merge the point clouds and generate a surface from it. In your case it would produce nearly flat ragged patches, which is not good
The problem is not straightforward. You will need a relatively sophisticated processing. There are generic methods to extrapolate or interpolate or do patch fitting, but they all expect that the data is suitable for each specific method. Patch fitting is relatively powerful, but it also expects data to be more or less regularity spaced along some not too badly distorted rectangle
This should be expected because this is basically process of cognition for which computers are not very good.
There are expensive packages, which can do good work of converting 3d scans into parametric surfaces, but they almost always involve human interaction
You can automate processing by making assumption about your object. If you know that the object consists of a single pipe and a bunch of flat surfaces it can be completely automated after fair amount of coding
In rough steps the processing would look like that:
1. Detect the pipe, fit a parametric pipe (KernelCAD has that), remove points which are on surface of the pipe from your data. After that you will know that the remaining data consists of flat surfaces
2. In a loop: Detect a flat area. Fit a plane into it. Remove points inside the plane from the data. Go to the start of the loop. This will produce a set of planes. Using their intersections and the data you can construct flat polygons from that. It is easy to build a KC BRep Section (for example) from that
Detecting and fitting a pipe will take some coding, but not too bad
The good thing is that after that the resulting surface will be perfect for rendering and any geometric analysis. The data also does not have to be very dense
We could start a custom project for you. It would be a combination of built in functionality like detection and fitting a pipe or plane and an application with source code for the high level processing (steps 1,2 etc). The later can be a skeleton, on which you can build on yourself
Best regards
Nick