To quote the Polygonica brochure, “It’s been a good century so far for scanning. From a slow start now everything is being scanned, from teeth to countries.”
Underground tunnels are one of the many things that are now being regularly scanned, which is great if you are the organisation paying for the tunnel, but less good if you’re the person responsible for making sense of all the data that such long-range scans generate.
Of course Polygonica has many useful algorithms that can help, including
- filtering and decimating point clouds,
- converting scans to polygon meshes,
- reducing mesh data within a given tolerance,
- mesh smoothing using advanced denoising algorithms.
But this blog isn’t about that. This blog is about one specific problem.
Underground tunnels are scanned from the inside.
So why is that a problem? Well, it might not be. But in many cases the purpose of scanning the tunnel is not to find out what’s in the tunnel, but to perform measurements on the tunnel walls. For example:
- to determine key dimensions;
- to calculate how much material has been removed from the tunnel, performing Boolean differences on scans from different dates and analysing the resulting solids;
- to check access conditions e.g. can this equipment be manoeuvred to this point in the tunnel.
It’s worth noting that Polygonica’s mesh Boolean, sweep, gap thickness and collision check operations can help with this type of analysis.
However the big problem is that the tunnels are not necessarily empty when the scan takes place. People, equipment, train tracks and other scanners will all get picked up during the scan, creating internal noise that needs to be removed in order to get an accurate model of the tunnel's walls.
Also, most scanners operate by line of sight, so if the scanner “sees” internal geometry in front of the wall, it won’t record an accurate measurement for the wall, and there will be a gap in the data. In order to make sense of the mesh in downstream operations it would be very useful to close that gap to create a watertight solid.
How can Polygonica help?
The Polygonica libraries include a useful function called shrinkwrap – well, PFSolidCreateShrinkWrap to be exact.
The Polygonica documentation concisely summarises shrink wrapping as “the process of shrinking the surface of one object onto another. In Polygonica a sphere can be shrink wrapped onto the surface of any PTSolid object. Thus, by default, shrink wrapping returns a closed solid that is homeomorphic to a sphere. It is a closed manifold solid with no tunnels or through holes, but possibly with self-intersections. However, options allow arbitrary geometry to be represented in the shrinkwrap including tunnels. Within the given limits, the shrinkwrap solid will be as close to the original geometry as possible. The shrink wrapping can be used for removing internal details, simplification, fixing badly orientated geometry and closing holes. The wrap geometry can be forced to be completely outside the original solid, which may be useful for clash detection applications.”
So what does that concise summary actually mean?
Well PFSolidCreateShrinkWrap will take the badly formed noisy mesh created from your scan data and create a tight external boundary mesh whilst
- Excluding or removing all internal noise data
- Closing large holes
- Staying within a specified distance of the original, if required
How about the actual results? How do they look?
The image on the left shows a transparent rendering of a simplified version of a typical mesh generated from a typical scan. The green lines are the boundaries of holes in the mesh caused by scanner occlusion. The image on the right shows a transparent rendering of the shrinkwrap – you can see there are no green lines, which means all those holes have been closed and the model is now watertight.
Note that this mesh isn’t from a real scan. Since our customers generally won’t allow us to share their customers’ data, we generated fake data using a virtual laser scan process and a fractal-based noise generator. I digress.
Below are two cross sections taken from the above tunnel model. The cross section images below show both original scan and wrap together (left) and just the wrap (right).
You can see that the internal noise in the left image above has been removed in the right image above. If you look at the red and blue profiles, you can see they are very close, and well within the tolerances typically used within this type of analysis.
Tolerance Control
Like many operations within Polygonica, shrink wrap comes with a tolerance control. If the user specifies a tighter tolerance, then the wrap will be closer to the original and will probably contain more polygons; if the user specifies a looser tolerance the wrap is further from the original and fewer polygons will be created.
Using a looser tolerance can be useful for providing the user with preview operations to check that everything looks good, before running a the final operation on the full scan in a batch operation.
Live Demonstration
You can find a video of shrinkwrap in action on Polygonica’s YouTube channel. This also includes a short section about the virtual scanning process we used to create the data.
Get in touch
If you’ve any questions or would like to know more, please don’t hesitate to get in touch via the contact form on the website.