3D Model Delivery Requirements

To be re-processed across a range of platforms with differing features, your model needs to meet these requirements.

GLTF Export Checklist

The checklist below will help you avoid making multiple revisions when delivering models for AR Quicklooks on the Variant platform. Please review it carefully when starting to model, and before uploading

A GLTF (not GLB) file that comprises the following separate files:

  • 1 GLTF file

  • 1 BIN file

And for each standard material, or material variant, these textures are optional:

  • 1 base color texture

  • 1 normal map texture

  • 1 texture with ambient occlusion, roughness, and metalness mapped to the RGB channels ( Red: AO, Blue: Roughness, Green: Metalness)

  • 1 emissive map

In exporters this is sometimes referred to as ‘GLTF Separates’. The important thing is that it is not a GLB, or an embedded GLTF (where textures are all packed in a single .gltf file).

Avoid spaces and special characters except - and _ in filenames

Valid GLTFs don’t use spaces or special characters (e.g. []\|}{!@#$%^&*()=`) in their filenames, so the converter will fail if they are used. Rename textures and your project files to avoid them. E.g. wood (red!).png should become wood_red.png.


The mesh does not use Draco compression.

The USDZ creation process does not support GLTF Draco compression.​

The scale of the mesh is accurate when viewed in AR.

Use a workflow based on metres as a unit if possible. Check the model scale with the Variant CMS Preview.

The origin is at the base of the mesh.

This is vital to avoid the model hovering above the ground, or misaligned rotation. The origin point will be placed on the floor where the user taps, so make sure its the lowest point of the model, and at the center point.

Normals are not inverted, and no objects have negative scale values (e.g. -1.0, -1.0, -1.0).

The mesh uses the smallest number of polygons needed to give the model an accurate outline.

Small items like screws, plates, etching etc. should use textures instead of polygons.

No tagged meshes have multiple materials.

You can split any meshes that require multiple materials, but each tagged mesh must only have one material referenced.

Materials & Textures

JPGs are used for any texture that isn’t a flat colour, and doesn’t require an alpha channel.

Variant will recompress your textures to jpg/png. We advise uploading 90-100% compressed JPEGs for best visual results and fast iteration times. 4k PNGs should be avoided unless the alpha channels are needed

The color texture is treated as an ‘albedo’ texture, creating accurate colours in AR.

The iOS and Android renderers assume the colour texture is ‘albedo’ which is the pure color of the surface, with no shadow or shading added (these are added when AO, normals and lighting are applied).

If your texture was created with the a 'diffuse' workflow, including some shading and shadows in the texture, the colours will seem dull, desaturated and too dark in AR, as shadows are being applied twice.

Color is the highest-resolution texture, with others at half resolution or lower

To keep file-sizes down, and to ensure the compressed file data isn’t being spread over too many pixels (resulting in JPG artifacts), non diffuse files should be lower resolution. E.g. it is better to have fewer, more accurate pixels in a normal texture, than big JPG artifacts that change the appearance of the surface.

Only colour textures will be preserved at 4k, so uploading other textures in 2k will speed up your uploads with no visual impact.

All materials using alpha are set to 'Blend' mode, not 'Cutoff' or 'Mask'

USDZs cannot use alpha modes other than Opaque or Blend, and all Variant models must be convertible to USDZ.

UV Mapping

Each mesh only has a single UV channel applied.

Last updated