opensourceBIM / voxelization_toolkit

Voxelization Toolkit for (IFC) Building Models
MIT License
73 stars 14 forks source link

Documentation? #10

Open JoostGevaert opened 2 years ago

JoostGevaert commented 2 years ago

Hello, The title of the repository sounds very interesting, but unfortunately I'm not able to deduct from the README.md how exactly voxelization of IFC models works and how to apply it. Where can I find the documentation?

aothms commented 2 years ago

This has been applied mostly in building code compliance checking and analysis where you want configurable and robust procedural definition of geometric rules (no floating point rounding, no tolerances). We've used it for segmentation of interior/exterior, evacuation analysis, clearance checks, etc.

The main use is typically writing the procedures and have voxec execute them. Couple of .txt files here with examples https://github.com/opensourceBIM/voxelization_toolkit/tree/master/tests/fixtures There is also some examples here https://github.com/AECgeeks/ifc-pipeline/blob/voxels/application/worker.py#L669

I don't think there will be an effort soon to publish docs. But I can answer specific questions. All contributions welcome also :)

JoostGevaert commented 2 years ago

Thanks for the reply Thomas! Sorry, I'm only starting to get a grasp of IFC and the open source tools that have been built on top of it. What are "configurable and robust procedural definition of geometric rules"? Could you give an example of a workflow in which you used the voxelization toolkit with a little less jargon? 😇

aothms commented 2 years ago

Good example is the 2nd link in the post above: Using IFC element types and geometric operations to form volumes of where users can walk, obstructions and calculate height of free passage. That's the configurable bit. For the robustness it helps to understand that floating point operations are inherently difficult, you need carefully constructed algorithms to deal with rounding errors and imprecision. IFC uses various local coordinate systems which also causes small precision errors. Solving this in the geometry library is error prone, fuzziness and tolerance of algorithms only work up to a certain extent. Voxels only deal with integer math: simpler and robust (at the expense of some well-understood initial discretization/approximation step).