- Why Spatial?
- Developer District
A major benefit of constructing a building virtually is the cost savings gained by identifying errors in the design before they are found on site. One of the more common errors that can be avoided is when two objects overlap in space or clash. For
When implementing geometric algorithms on a BIM dataset, it is worth remembering that there is likely to be a lot of data. A function that works between two blocks in an experiment may be very slow when repeated for a whole block of flats with 10s of thousands of structural elements.
Figure: Clash Detection Identifies Overlapping Bodies
Figure: Boolean Intersection Calculates the Common Volume
Figure: Void Introduced to Remove Clashing
At a geometrical
Finding out how the bodies clash can be quite slow, but identifying that they don’t clash is very quick in most cases. The bounding box of a body is simply a cuboid that represents the minimum and maximum in each of the three ordinate directions. To check that the boxes do not clash, all that is needed is to check that each of these three ranges
In general geometric modelers have limits in their dynamic range: the lower end is the smallest distance between two points before they are considered coincident, and the upper end is the largest model size that the modeler can handle. These limits are imposed by the accuracy of floating point arithmetic in computers. Most BIM projects will be made up of a very large number of components, where each component is of a size easily modeled; however, those components can easily be placed kilometers apart, especially in multi-site projects. To avoid geometric errors from large coordinate values, applications create geometry in the component’s object space and keep associated transforms in the assembly data to position the models in the site coordinates.
An additional optimization that is often used with such an assembly structure is to keep the bounding box of each component in the assembly data. The bounding box consists of the range of the model in X, Y and Z, so it is very quick to check for a no-clash condition between two bounding boxes, and then do some additional checks if the boxes overlap. Performing a large number of these no-clash comparisons with such simple data objects is easy to parallelize in software.
To check clashes in a large BIM dataset, it is much faster to start by performing a simple no-clash check and then look in more detail at the cases that may have interactions. For working with large data sets, a scalable solution can be achieved by parallelizing the bounding box comparisons.