Using Augmented Reality is a great way to engage your audience and also let them experience your products or designs inside their own spaces.
To make sure the AR experience functions properly, follow these simple tips and tricks.
Use correct sizing
Be aware of your model's scale. AR render engines on mobile are in cm (centimetres), but glTF specifications define units in metres.
You can use the reference avatar in BRIO to check your model's scale against human height. (The avatar is hidden by default - toggle its visibility ON in the objects panel).
Position & orient your model to face forward in AR
The positive z-axis is the default forward-facing direction in AR. Orient your model so that the front faces this axis so that it is visible when the user places your model in space.
Moving the positive X axis (right-handed orientation) moves to the right, and the positive Y axis moves up.
Keep your poly counts between 30,000 to 50,000
This will provide the best performance in the scene viewer on all mobile devices. The recommended polygon limit for AR is 100,000 triangles, but only the latest mobile devices can load AR scenes exceeding 50,000 without significant performance issues.
Importing multiple objects & textures
Use a supported file format
3D Formats supported in BRIO AR include:
- glTF 2.0 or glb, using these extensions: - KHR_materials_unlit - KHR_texture_transform
Supported texture formats:
- PNG format: PNG-24, indexed PNG-8.
- JPG - recommended when there is no transparency, to reduce size.
- Color space: sRGB
Keep your object count to a minimum
No more than 7 separate object transforms are recommended. This may seem difficult at first, but unless an object is moving most items can be combined (unless it requires a separate shader).
For example, a tree with many leaves should have all leaves combined under one object transform. In Blender, this can be done using the Join command, Ctrl+J. In Maya, you would use the Combine Objects command.
Use PBR textures
BRIO supports PBR (physically based rendering) textures. You can upload your own textures or select from the BRIO library.
The overall performance of assets depends on setting constraints and making tradeoffs between vertices, materials, texture resolution, mesh per material, and other factors.
Use the following guidelines to optimize what works best for your assets:
Number of materials: 10 [2 of which can be alpha]
Scenes with fewer materials will load faster. While 10 is the limit, aim for the lowest amount possible to keep the asset performing well.
Mesh per material: 1
Max texture resolution: 2048 × 2048
Bone (including non-weighted joints): 254 (hard limit)
Bone weights per vertex limit: 4 (hard limit)
UV: 1 UV per mesh (hard limit)
Model size: 10 MB (bigger models may result in poor user experience)
BRIO scenes load in HTTPS
Optimizing your scene for faster performance
Reduce the number of textures & shaders
If your scene requires multiple textures, you can reduce their size by creating a texture sheet:
A texture sheet is a single image that may define multiple areas of roughness for various parts of your models. Consider using a single texture sheet to define the surface appearance of multiple objects within your scene. This reduces the number of shaders in the AR scene and improves load times and performance for your viewer. You can use popular tools like Substance Painter, Quixel Suite, Mudbox, Maria or paint these in Photoshop or Gimp.
Don’t assign multiple materials to a single mesh. Instead, use a texture sheet to define areas with shading differences. The AR render engine works best this way.
Be aware of automatic shadow rendering in AR
Hard shadows are automatically rendered by Scene Viewer when placing an object, so we recommend against baking shadows into your model.
Shadows from real-time lights are ignored in AR.
Make sure the model has a clean topology in quads or triangles
Do not import non-manifold geometry. Floating vertices will cause Augmented Reality to fail.
Good models will ensure good results. Check your models prior to import.
Keep UVs for meshes within 0-1 texture space.
You may get errors in AR conversion for UVs that sit outside of the 0-1 texture space for your mesh.
Make sure that all of the points of your model have a UV coordinate defined.
Otherwise the mesh conversion to AR will not work properly.
Preparing Animations for AR
BRIO supports looping skeletal animations, looping rigid animation, and looping transform animation.
Animations should be under 1 chain
The animation will be played on loop. If the glTF file contains multiple animations, Scene Viewer plays only the first animation.
Use GLB models for for joint-based animation
When importing a skeleton animation with textures it's best to use a binary glTF (GLB). Use GLB as this will enable you to import the PBR material properties for Color, Roughness, Normal, and Metalness at the same time. Blender is a great way to set up the glb files before import into BRIO. The glb can contain the mesh, animated skeleton, textures, and the correct pbr shading values.
Skinned animated FBX files will work in BRIO but only will retain the diffuse color texture since the PBR shading values are not read from the file.
For skinned skeletal animations, assign only one material to the mesh
You should only have one material assigned to the mesh, otherwise the AR conversion will not work. To define the appearance of multiple materials use a texture sheet instead.
Resolve skeletal animation errors in iOS
Certain complex skeletal animation rotations may fail for iOS. For example, a flat pattern that needs to fold in a spherical way to close and form a 3d shape such as a cardboard box.
This action of rotating in multiple axis may twist skinned points in a spherical manner. You may notice your mesh having artifacts in AR on iOS.
To resolve this for iOS use a ridged bind instead of skinned points. (Andriod devices do not have this error). Parent separate objects to your joints and model in a way that there are segments to bend parts of your model. This is due to limitations from Apple with their AR rendering.
Following these rules will ensure great Augmented Reality scenes in BRIO every time.
Features unsupported in AR on iOS
- Vertex colors.
- Morph targets and vertex animation.
- Texture filter modes. All textures are sampled linearly, with mipmapping.
- Clamp and mirror texture wrap modes. All textures use repeat mode.
- Shadow animation. Shadows are generated from the first frame.
- Transparent shadows. This is particularly noticeable for transparent geometry near the ground, which will appear very dark due to shadow falloff.
- Multiple UV sets. The converter works around this by disabling textures using secondary UV sets, which works best for the most common-use case: AO.
- Multiple animations. The converter just exports a single animation.
- Multiple scenes. The converter just exports a single scene.
- Transparency sorting. Overlapping transparent surfaces are likely to look incorrect.
- Skinned animation for vertex normals. Lighting will look incorrect for skinned models, which is especially noticeable for highly reflective surfaces (it will have a painted-on appearance). The converter attempts to mitigate this by baking normals to the first frame of animation, but it will still look incorrect.