Optimization of the 3D asset is the key to making photo-realistic real-time 3D models for the web and handheld devices and is an inevitable operation for making assets interoperable. CAD models or models made for high-end renderings are too detailed and too large and are typically not suitable for the purpose.
The optimized (smaller) models are typically faster to render, use less device battery power, and use less memory.
The 3D asset optimization engine at artlabs relies on inputs with the right material, texture maps, and geometry data based on glTF2.0 standards. This engine can preserve visual fidelity by simplifying mesh information and baking proper maps based on a physically based rendering (PBR) pipeline. Therefore properly prepared input data is key for a smooth optimization process.
Rules of Thumb for Input Validation
Before using the optimization engine, we highly recommend verifying the following points:
- Can the asset be loaded (imported) into any digital content creation (DCC) tool like Blender?
- Does it contain polygonal data?
- Make sure all materials and maps are assigned correctly.
- Using a single file to share multiple assets should be avoided.
All real-time assets exported by any DCC tool work properly within all pipelines. Here you can find the guideline for real-time assets:
Some commonly used DCC programs are unsuitable for exporting real-time assets.
The following guides will help you correctly export a real-time asset from different DCC tools.
3D Data Types & Formats
Supported 3D Formats:
glTF 2.0 (.glb)
- Our engine supports the following KHR materials extensions:
- KHR_texture_transform is supported.
- KHR_materials_clearcoat is supported.
- KHR_materials_transmission is supported.
- Any other required extensions will result in an error.
- All other optional extensions are ignored.
DRACO compressed glb USDZ FBX
Supported 2D Formats:
JPEG (.jpg, .jpeg) PNG (.png)
Deep Dive into 3D Operations
The Reduction operation takes an input scene and reduces the number of triangles and vertices in the scene in a heuristic manner by gradually removing vertices and triangles from the scene. In this pipeline, we can provide the target triangle count and the resolution of baked maps.
This pipeline does not create a single mesh and preserves the original structure of the scene. Therefore, this pipeline is suitable for scenes with transparent materials. Furthermore, using an automated script, the reduction pipeline uses the original model’s material info and only bakes the required maps.
Comparison of Original, AR-ready, and metaverse-ready 3D assets.
The maps corresponding to the original asset. As you can see, five different materials and 15 images are in the original asset (Unoptimized asset).
The new maps correspond to the optimized model. As you can see, the engine separates the transparent and opaque materials and creates two different materials with six images in total.
The Remeshing operation takes an input scene and replaces it with a lightweight proxy geometry that resembles the original, but does not share vertex data or separate parts of the original mesh data. The remeshed object is created and optimized for a specific on-screen pixel size. In the remeshing pipeline, the same visual as the original asset is served by utilizing and baking base color, normal map, occlusion map, roughness map, and metallic map. Users can define the on-screen pixel size value and the resolution of baked maps as input.
The proxy mesh is assumed to be viewed from the outside at default settings. It helps us to secure design files since any interior mesh that cannot be seen is removed.
The Aggregation pipeline reduces the number of draw calls by taking a scene with multiple objects and materials and converting them to a single object with a single material. It will not produce any geometric changes. The original UV charts are preserved but repacked into a new unified texture atlas.
The task of the Compress block is to control the texture resolution (i.e., 512, 1K, 2K, 4K) and texture quality (1-100). The default value for the quality of the texture is set to 80. You can reduce the file size by simply reducing the quality factor, in the price of texture quality loss.
The export block allows you to adjust the dimension (the extend of the object in x-axis, meters) and/or scale (constant) of the 3D asset and export the asset in the desired format. The supported export formats are .glb, .glb (with DRACO compression&KTX), .usdz, and .fbx.