Augment is a mobile real-time 3D engine for augmented reality. Following are some recommendations for a 3D model to display correctly with the limitations implied, and to get as similar as possible to the original model or product. Let’s start by the stage of creation of the 3D model and its textures.
1. 3D MODEL CREATION GUIDELINES
- Polygons : aim for a “low poly” mesh
Augment can support around 1 000 000 polygons maximum, but to have a good, quick and light model that can be opened with several models at the same time, and on most devices, it needs to be as low as possible. 300 000 polygons is a nice aim, and 150 000 or less is perfect. The lighter a model is, the quicker Augment will load it.
Here is an example of very light display :
It contains around 22 000 polygons. Here this is enough to get the details needed on the products without over-damaging its shapes.
Optimizing a model can be dilatory, but some quick points can help. For example, if your 3D software allows it, you can remove the smoothing parameters that increase the mesh density (if you use some). If in your work organization you tend to merge the smoothing parameters in the history of the objects (for example collapsing the turbosmooth modifiers in 3DSMax, deleting the object’s construction history in Maya, or equivalent) it may be useful to prevent from it beforehand.
You can check if your model doesn’t have hidden polygons (inside opaque objects) that can be easily deleted, or overlapping polygons, which aren’t necessary and can also create display problems (Z-fighting).
Way more beforehand, while building your model, if importing objects in your software coming from a CAD software (Solidworks, Rhinoceros,...), you can check in the import parameters if your software allows you to reduce the mesh (or to produce a light mesh for NURBS), and to remove double sides of polygons (due to the import of double sided normals). It may, or may not be possible, depending on your software, and on the file format you’re importing.
Small details will most likely be done with textures rather than mesh when it is possible.
The number of meshes should be controlled too. As it increases the scene graph, it increases the loading time too. The number of meshes isn’t only the number of objects, it also considers the different combined elements of an object. Merging objects without having connections between the different the meshes won’t improve the performances (and it drastically increases the dae export time on some 3D softwares, depending on the complexity of the model). For complex models with a lot of objects, it is highly recommended to connect together meshes when possible.
The model should be clean from all angle, as users can rotate them in all angles in the 3D view of the app. Avoid elements that don’t fit together and gives a view inside the object, opened meshes that shows, and planes without thickness. These result in holes in the model because there is no two-sided materials.
The UV set or channel can’t be used for now in Augment, the only channel of UV that displays is the channel 1.
B. MATERIALS AND TEXTURES
Mainly due to export limitations of the 3D softwares, and to the variety of 3D softwares that can be used to produce models, the only materials working in Augment are the standard ones.
Avoid reflection on maximum level, prefer 99% or less. In Augment the 100% reflection has been set as an equivalent to 10% because on lots of 3D softwares, by default the model is exported with maximum reflection and users get 100% metallic models without understanding why.
Adding glossiness can create light artifacts on the model if the mesh is low, the elements with high glossiness need a mesh more dense. It also tends to bring to the eye stretched mesh by creating specular artifacts, the mesh needs to be wisely checked.
Specular level and color are merged in Augment, as in some 3D softwares. Depending on the 3D software used the behaving may be tested to avoid a divergence in the final appearance.
Please notice that ambient and emissive aren’t available for now in Augment.
The first recommendation for textures is to have less possible of them. It is important to merge textures when possible.
The maximum size required is 2048, but prefer 512 or 1024 when possible.
Prefer textures on optimized squared proportions (2048x2048, 1024x1024, 512x512, 256x256, 128x128).
Having the optimum sizes, dimensions and number of textures prevent from slow loading and lack of fluidity of your models.
The total size of all your textures should not exceed 25MB.
A model with few polygons allows a bigger number of textures with fluidity; and on the contrary a heavy model will allow a smaller number of textures before losing display fluidity.
When a texture contains details, like text, a bigger dimension will be needed to prevent from resolution loss, but very small textures can be quite enough in a lot of cases.
As a reference, the previous Coco Planet model contains 17 textures, for a total size of 1,67 Mo. Its products are all in 256x256, and the display elements are in 512x512, except the shelf which is a green hue, and doesn’t need much that a 128x128 texture.
You may add light baking and/or ambient occlusion baking to the texture, as it increases the realism of the model. The lights set should be natural, to help the integration of the model in AR in any situation, but it can be exaggerated to get more contrast, to provide the user with a strong visual effect.
Reflections informations can also be added to the textures of reflective parts, but it needs to be used carefully. As the model is made to be seen at any angle, it seems strange to the eye to have fixed reflections in the diffuse. There are two use cases that work in Augment. When it is on a very reflective object, the reflection map merged in the diffuse map at low/medium opacity helps getting a more accurate reflectivity, but it won’t move, so it needs to stay discreet.
2. EXPORT GUIDELINES
The model should be now ready for export, but this is the part that may bring most issues and asks some care.
A. THE MESH
Some differences in the mesh or its display may appear after export. You may avoid these with some simple steps.
In some 3D softwares, when duplicating an object in mirror, it is wise to reset the transformation values and check the normals afterward, which may be inverted.
Without a reset of those values, the mirrored objects will probably get transformation problems after export.
In a more general way, if your 3D software allows it, it is recommended to reset the transformation values by using the dedicated tool (Reset XForm in 3ds Max, Freeze Transform in Maya, or equivalent). It can prevent from potential export issues.
Please also check smoothing groups and normals direction, to avoid faceting and artifacts that may show or appear after export.
The corner of this model has faceting normals, the smoothing groups broke on export (left), two versions of the same object : the right one have some inverted normals (right).
In both cases, if you don’t manage to solve the problem manually, a reset of the normals should help.
B. FILE FORMAT
Augment allows several formats, but .obj (Wavefront) and .dae (Collada) files are the main recommendations. However, as in any export format, there are few points to check when exporting, to avoid a loss of informations.
For .obj format, a .mtl (Materials Library) linked to the related .obj is needed to connect the textures to the model. An option should be checked at export to enable the .mtl creation, and another option will enable the links of textures in the materials if applicable.
It has been reported that .obj format may not export correctly the reflection settings when generated by some 3D software, please check your materials after export.
Dimensions must be carefully checked when uploading an obj in Augment, as the units AND the dimensions may change during export from those in the original software. You can edit the units of a model in Augment Manager.
The .dae format has less specifications, but it can need a lot of time to export big models in some softwares.
A completed model export’s folder should contains :
- For .obj export : an .obj of the model, its .mtl, and the textures that are linked in the model.
/!\ The .mtl doesn’t embed the textures, it only includes the materials settings, and links that point to the textures in the related materials. The textures must be included in the folder).
- For .dae export : a .dae of the model, and the textures that are linked in the model. The materials are included in the .dae.
- MATERIALS AND TEXTURES
As the supported export formats don’t export materials that are native from a specific software, plugin or renderer, please remember that Augment uses standard materials. To prevent from losing materials and the linked textures, please check that all the materials used on your models are only standard materials.
Material adjustments play a big part in the model’s accuracy and it is particularly important in real-time for mobile devices, because the engine has less capacities than on a computer. It seems obvious at first, but the correct export of those settings can become an issue, depending on the export format.
It is highly recommended to deeply check the different materials behaving after export, as the interpretation of the materials settings varies a lot depending on the 3D software used. Some adjustments may be necessary.
Some textures may be lost if those are linked in materials settings that don’t export in the selected format or if the setting isn’t available in Augment.
Following those recommendations should get your models ready to import in Augment. Please let us know if you encounter any problem or need further advices.