A new problem is bothering us. It’s about the data transmission of three.js. We hope to achieve the fastest speed when three.js saves the file. So if the model file in the scene changes or changes locally, what’s the best way to store it? The problem we are currently facing is that when we use the three.js editor to save the FBX model data, if we use the GLB storage method, the file will become very large, 2 times more than the FBX source file. Is there any way to minimize the scene file? It is hoped that the saved file can be smaller than the file bytes of the original FBX model. We want to use this way to quickly store and preview.
Currently, the editor saves the entire scene by serializing it to the engine’s custom JSON format. This process is not optimal since it performs bad for larger scenes. Using different 3D formats like FBX or glTF is no solution to this problem.
A similar problem was already discussed here, however there is no solution so far:
From my point of view, the most promising solution are change records which represent the changes to a scene per user modification (similar to the already existing history). In this way, you only have to save a small amount of data and the approach scales very well even for large scenes. However, you also have to write a more complex scene loader since it has to apply the single records incrementally until the scene is assembled.
Notice that such a specialized format is only intended for the editor. When loading an object or scene into an app, you want to use other formats like
three.js's JSON format.
Okay, thank you very much for your answers.
I looked at other websites like three.js editors, and they are the same things that are saved like records. I have some doubts about this and don’t know how to save them. Do you have a similar case? I want to see how they do it.
May I ask if it is a 50MB FBX model file, can GLB compress it to a smaller extent?
When converting FBX to glTF, you might want to use glTF Pipeline to further optimized your asset (e.g. add Draco compression).