You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As an engineer, I'd like to be able to send incremental updates to a FragmentsGroup over a network.
I'm using this set of libraries to make a server-client BIM detailing application for steel wall framing. The basic flow of the application is as follows:
User uploads an IFC file
User specifies walls to frame and loading conditions for those walls
Server parses IFC file into fragments, generates new fragments for framing members
Frontend renders fragments with openbim-components
If model contains unbuildable conditions (e.g. clashes), GOTO 2
Unfortunately, it is quite wasteful to send the entire BIM down again every time a user has made a tiny little tweak to their project settings. Usually, I am only changing a very small percentage of all serialized data on each request. So I am wasting user bandwidth and CPU cycles by making them fetch the entire BIM once more and then parse it and stuff it into a THREE scene.
Suggested solution 💡
A FragmentsGroupDiff class representing mutation of FragmentsGroup
Methods to serialize/deserialize FragmentsGroupDiff
Method to apply a FragmentsGroupDiff to a FragmentsGroup
Alternative ⛕
I considered hacking this on my own by just computing a diff on the serialized bytes of FragmentsGroup. The binary diff would go over the network and the client would combine that diff and the previous FragmentsGroup serialization to get the new serialized bytes, which it would then parse to get the new FragmentsGroup.
It would save some bandwidth, but I don't think it's a good alternative:
I'm having trouble finding a good binary patch library for nodejs.
Computing the entire serialization on the backend just to diff it is wasteful since you need to walk the entire BIM again.
The client still has to build a whole new FragmentsGroup and swap it into the running THREE scene. This seems somewhat wasteful if all I need to do (for example) is change some instance matrices in a fragment.
Description 📝
As an engineer, I'd like to be able to send incremental updates to a
FragmentsGroup
over a network.I'm using this set of libraries to make a server-client BIM detailing application for steel wall framing. The basic flow of the application is as follows:
Unfortunately, it is quite wasteful to send the entire BIM down again every time a user has made a tiny little tweak to their project settings. Usually, I am only changing a very small percentage of all serialized data on each request. So I am wasting user bandwidth and CPU cycles by making them fetch the entire BIM once more and then parse it and stuff it into a THREE scene.
Suggested solution 💡
FragmentsGroupDiff
class representing mutation ofFragmentsGroup
FragmentsGroupDiff
FragmentsGroupDiff
to aFragmentsGroup
Alternative ⛕
I considered hacking this on my own by just computing a diff on the serialized bytes of
FragmentsGroup
. The binary diff would go over the network and the client would combine that diff and the previousFragmentsGroup
serialization to get the new serialized bytes, which it would then parse to get the newFragmentsGroup
.It would save some bandwidth, but I don't think it's a good alternative:
Additional context ☝️
No response
Validations ✅
The text was updated successfully, but these errors were encountered: