@TooCalm I, too, almost always default to the glTF format for two reasons. The first is that the file format works in many different engines and has the support of many companies like Google, Microsoft, IKEA, Target, Amazon, and many more. A format that all of those companies agree upon and support means that you won’t find many places where the format can’t be used.
The other is the work the glTF working groups are putting into rendering consistency. It’s one thing to say that a file can be used in many different places, but if they all render differently when which is right? Rendering consistency is a large topic that will continue to evolve, but even the initial efforts here will really help especially in 3D commerce where you may see a product on several different online stores. Any inconsistency in representing the material properties of the asset can affect the buying decision and/or result in returns which lessens the customer experience.
That said, there are several benefits to the .babylon file format. The biggest one is that the Babylon file format supports most of the features of the Babylon engine so you can save a scene and keep data surrounding cameras, lights, shadows, meshes, animations, particle systems, and more. You can save a scene in the .babylon format right from the inspector:
This means you could set up a scene using the inspector and then save out to the .babylon format and just load that back in. However, that pipeline does come with some challenges in terms of iterating on a scene. Since most of your scene elements would be stored in the .babylon file, making changes would mean loading the file, making changes in the inspector, and then saving the file out again. If the code is exposed, iterating and creating more complex state management becomes much easier.
I think one of the best uses of the .babylon format would be if you had a template that several experiences all drew from. Say you have a set of node materials that all of your scenes use or a specific lighting or camera setup. You could create a scene with all of these parameters set and then save it out as a .babylon file. You could then load this file into any new scene and you would have all of your common parameters/assets already set up for your new scene.
Another reason to choose the .babylon format would be to make it harder for people to lift your assets. It’s not a silver bullet for protecting your assets on the web, but we all know how easy it is to grab any image from a website to reuse it. If your assets are saved with the .babylon format, there are no DCC tools that will be able to open up the format because it’s a scene format. You can open the .babylon file into a sandbox and then export to glTF to then be opened in Blender, but that process will be lossy. The glTF format does not support all of the features available in .babylon so you would be losing some data around the scene on that export.
And then opening it in another DCC tool does come with the problems that any glTF file being opened in a DCC tool has. Things like vertices on UV seams will be unwelded (this is an optimization for glTF) and no custom shaders will be present. So It will take some specialized knowledge to take a .babylon file and be able to use it to recreate your asset in another experience. Like I say, it’s not impossible, but may be enough of a deterrent to make someone looking to swipe assets look somewhere else.
But it really depends on your use case. We built our release demo Space Pirates using glTF entirely, even though we added custom node materials to parts of the assets. A lot of the assets could be used with the standard PBRMaterial so using the glTF format meant we could just export the asset to glTF and only need to touch parts of the asset to assign custom shaders. It really does depend on your pipeline and what you see as the important parts of that pipeline.