Model break views are views of a 3D model which split (“break”) the model into multiple segments for easier viewing. These are commonly implemented on long parts when the details in between both ends are not relevant for viewing.
HOOPS Communicator does not currently support model break views. However, the flexibility of the HOOPS Communicator SDK allows for a high degree of customization when building 3D applications. Here is an example of a “model break manager” library to demonstrate one approach to enabling this capability: Model Break Manager Demo | Tech Soft 3D Labs
This sample code also demonstrates integration of Communicator with csg.js, an open source JavaScript library for CSG operations such as Boolean union, subtraction, and intersection.
The model break manager allows the user to activate cutting planes (leveraging Communicator’s cutting manager) to position where a break in the model shall occur.
Then, the user can “break” the model, creating two broken sections of the model entirely on the client (no server side required). This is accomplished by:
- Converting the Communicator mesh to a CSG object.
- Performing intersections of the CSG mesh object with a CSG “break tool” for each section.
- Converting the resulting CSG object to a Communicator mesh using createMesh and createMeshInstance methods.
- Translating one of the new sections closer to the other section to reduce the overall size of the geometry.
Check out the README and source code here for more information on how this works.
Also, a very simple custom operator was created to demonstrate a way to take measurements that account for the break views, so measurements across the break remain accurate.
Please note, this library is a basic sample and is not an officially supported part of the HOOPS Communicator SDK. It has not been extensively tested and there are several known limitations and issues:
- Only one broken out section is possible (the model cannot be broken into multiple sections).
- The code is not optimized; for example, the Boolean intersection is performed on every node (there is no collision detection implemented between the break tool and model to prevent unnecessary operations).
- Breaking may not work as expected - with at least one model tested, unexpected mesh artifacts were produced (bnc model included in the Communicator package).
If you have any questions about this sample, feel free to post them here or message me directly.