GLTF upload checklist
In order to ensure the quality, scalability and performance of the Floor Plan Builder, all GLTFs uploaded to our system should meet our quality standards. Please avoid pushing any model to the platform unless all next points are met:
1. Fix all transparency problems
3D Studio Max bug
A known issue in 3DSMax is leading the Babylon gltf exporter to wrongly set the value for the alpha source to transparent in those meshes with a textured material. This is producing some transparency glitches in our models, as three.js is rendering some opaque materials as transparent from some camera angles.
Moreover, in our last release we introduced a new feature to set a transparent background on texts. For those texts placed over textured floors, the 3D engine assumes the floor is transparent as well (due to the 3DSMax bug) and shows the black background of the Builder.
As the official docs of the Babylon exporter say, the way to fix this is by selecting the buggy mesh and open its base color/diffuse color texture settings.
Just by showing this settings, 3DSMax take the correct value for the alpha source (Opaque), then the bug is fixed and the model can be exported.
Online model checker
Since it’s easy to forget to fix the bug in textured materials, we now have an online model checker which reveals all buggy meshes on a model, so they can be fixed before pushing them to production.
These are the urls for the model checker:
2. Reduce the number of draw calls
Merge meshes as much as possible
Each mesh in a model requires a draw call to render it in the Builder, the larger the number of draw calls to show a model, the less frames per second the Builder will be able to render. That’s why it’s highly important to reduce the overall number of draw calls required to show a model.
The best way to reduce the amount of draw calls in a model is to merge meshes that share the same material. For instance, if our model includes 8 times the same white chair, instead of using one mesh per chair we could merge them into a single mesh, this way the Builder can render all 8 chairs with a single call and we’d get same result but saving 7 calls.
We could also merge different textures into a single one, so we could create one single material for all textures, and therefore require one single call to draw it.
Ensure there’s at least one mesh for each kind of material
Although reducing the number of draw calls is crucial, different kinds of materials will still need one call to draw them. That means we can’t just merge all meshes in the model into a single one without loosing all transparencies, metallic effects, etc.
Anyway, what we can do is to reduce as much as possible the number of different materials in the model. Say, if we are adding 8 chairs like in the previous example, and they are not all-white but are composed of a metallic frame plus textured cushions, we can create one textured material for all the cushions in all 8 chairs, and one metallic material for all frames. This way we could have 8 chairs with cool metallic reflections with only 2 calls.
Online draw calls checker
Same way as with the transparency bug, our model checker also shows us how many draw calls does it cost for the Builder to draw the object.
Further info about how to reduce draw calls can be found here.
3. Cabaret, Banquet and Classroom: give the table its own mesh
The Builder includes a feature to automatically create some complicated layouts like Boardrooms or U-Shapes.
In order to do this, the Builder needs to know which part of the object is the table, so it can place the objects properly to form the requested shape without overlapping or leaving gaps between tables.
Since the Builder relies on the physical attributes of the table to identify it over the rest of the model, it needs the table to be rendered separately, this means, to have its own mesh.
Automatic layout templates are not the only reason tables need to have its own mesh. The Builder is also committed to met Visrez layout guidelines, such as setting distances between chair backs for banquets, but between tables for cabarets or classrooms.
That’s the reason why the Builder needs cabarets and banquets to give its own mesh to their tables, just as in the classroom above.