Content Creation Guidelines
User experience is dependent on the quality of the 3D assets using augmented reality on mobile devices. The quality of the 3D assets displayed is in turn dependent on the geometry density and size of the maps used. As a general rule, the lower/smaller the assets then the better the performance. Try to aim for the sweet spot between performance and quality.
A generally good starting point for Unity content creation and how to export models specifically can be found on Unity’s Learning site.
PNG files are ideal to work with but most other formats work as well. The resolution should be 2048 x 2048 pixels maximum.
Unity works with bones when animating. Unfortunately vertex animations do not work in Unity. Ideally the number of bones should be low but it is not a must. Also, each model should use a single skinned Mesh Renderer. The final output should be 30fps. Do not animate visibility, that should be done inside Unity.
Unity prefers working with FBX files but can work with .dae (Collada), .3ds, .dxf, .obj, and .skp files.
Aim to keep the assets under 8k polygons per mesh for normal objects. Humanoid characters should be max 30k polygons, detailed animals 12k. If the characters are not the hero of the story for example, work with even less dense meshes. Keep in mind, this is designed to work on mobile devices. Trees and foliage should be full objects, not planes and should not exceed 3k polygons per object. Houses and other extra elements should be simple objects with good maps.
Try to use the metric system.
Avoid special character such as *()?”#$.
Only the data needed should be exported and always the latest version of FBX should be used. Normals distribution and smoothing group for 3D files should be checked.
Unwrapping and materials - all assets need to be unwrapped in order to work well in Unity. Use of PBR materials and Atlas mapping techniques are ideal to reduce the size of the meshes and number of diffuse maps.
As few materials as possible. Also the number of Materials on each mesh should be kept as low as possible. The only reason to have more than one Material on a character is when different shaders for different parts (eg, a special shader for the eyes) are required. However, two or three materials per character should be sufficient in almost all cases.
As a guideline the scans should be kept below 28.000 polygons especially if there will be more than 1 scan present in one AR scene. Assets that are present at the same time in a scene on the mobile device should not exceed 100.000 polys in total (for example four 3D scans with each 25k polygons each or two 3D scans with each 50k polygons each). These are not hard limits but performance drops due to the size of the assets, especially on low end devices will quickly become visible.
Devices like the Samsung Galaxy S9 or Huawei P20 Pro can display assets that are larger than the specifications mentioned above without any performance drops so the targeted devices should always be taken into account when deciding on the size of 3D scans.
- Unity prefers H.264/AAC encodes for all kinds of video content.
- The video resolution (and filesize) should be as low as possible, of course the resulting quality must still be acceptable.
- The video should be compressed to the point where you cannot lose any more quality in order to make it as small as possible.
- MP4 videos with correct mapping are a must when projecting videos on objects.