Hi
We have been using Boolean Operations to compare surfaces imported via vrml. The idea is to present visually deviation of a scanned object from the designed exact surface.
We get exceptions in Boolean operations regularly. Is there a better way to do this?
Thank You
Malcom
Visual Diff
Re: Visual Diff
Hi Malcom
To be brief, comparing surfaces like you do needs a specifically designed algorithm. Boolean Operations are too complicated and hence not robust enough for the purpose. See below. The diff on the other hand is not that complicated and can be very robust.
Most likely you are trying to compare objects which have close geometry, nearly coinciding. This is very difficult case because the first thing Boolops do is calculation of the intersection curve(s). When surfaces simply (nearly) touch one another the calculation becomes unreliable simply because the intersection is not well defined: very small change in angle can make them coinciding completely, where normal intersection does not work and another algorithm is executing.
This should be handled, but situation is very complicated and there are situation which we did not catch yet. If you see something happening consistently we would like to see it.
Generally Boolean Operations are very complicated to handle any arbitrary input. We have spent a lot of time handling the coplanar situation above and the case when intersection curves actually merge into a bunch. My guess is that to get it working without an error in say 1000 operations in a row in your satiation can take about two years. Will this investment pay off for us? I am not sure at the moment.
Nick
To be brief, comparing surfaces like you do needs a specifically designed algorithm. Boolean Operations are too complicated and hence not robust enough for the purpose. See below. The diff on the other hand is not that complicated and can be very robust.
Most likely you are trying to compare objects which have close geometry, nearly coinciding. This is very difficult case because the first thing Boolops do is calculation of the intersection curve(s). When surfaces simply (nearly) touch one another the calculation becomes unreliable simply because the intersection is not well defined: very small change in angle can make them coinciding completely, where normal intersection does not work and another algorithm is executing.
This should be handled, but situation is very complicated and there are situation which we did not catch yet. If you see something happening consistently we would like to see it.
Generally Boolean Operations are very complicated to handle any arbitrary input. We have spent a lot of time handling the coplanar situation above and the case when intersection curves actually merge into a bunch. My guess is that to get it working without an error in say 1000 operations in a row in your satiation can take about two years. Will this investment pay off for us? I am not sure at the moment.
Nick