-
Notifications
You must be signed in to change notification settings - Fork 175
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improvements to XbimTessellator #299
base: develop
Are you sure you want to change the base?
Improvements to XbimTessellator #299
Conversation
marked simple volumes as nullable, if not closed and set having an additional prop to identify partially closed volumes
Improves the mesh validation and a more stable alignment of orientation
In case of an empty IfcTriangulatedFaceSet
Here's some more context of the change: First, sorry for this heavy PR! Additionally, a flag is delivered to propagate issues easily. If an already triangulated face set is marked as closed, orientation alignment and reverse-orientation-detection is done, too. If not, the mesh is wrapped as it is (since alignment of intentionally non-closed meshes makes no sense). There's also a nullable volume flag shipped with this PR. If null, the geometry engine (OCC) isn't able to close the body geometrically. If it holds some value, it's the volume in model units. For sets, two values exist. A nullable wich is handled the same way: if there's an unclosed body in the collection, nullify the whole volume. The other flag named "VolumeValid" will only return the volume of closed volumes (and therefore might be only a portion of the "real" volume). |
Is there a chance to get this fix into develop? |
@martin1cerny would be good to review this PR |
This merge needs to be aligned with PR in geometry engine. @SteveLockley, can you handle both? |
@SteveLockley , can you check this? |
I've got the same trouble as mentioned in xBimTeam/XbimGeometry#96. So I've started to investigate the problem and found the reason. The former orientation alignment / reverse algorithm wasn't stable for all types of bodies (especially with concave shapes near the boundaries).
Improves the tessellation and especially the orientation alignment algorithm of the triangulations. It now computes the approximated tetrahedral volume and reverse the mesh orientation, if the volume is negative. It also refactors the implementation. It also adds a volume value to the shape data holder for validation purpose.
Will also require a PR on geometry side.