SynergyXR – 3D model support
In SynergyXR it is the goal to support a wide range of 3D model file formats and guide the user in optimizing these 3D model through semi-automated workflows during upload through SynergyXR – Manager.
It is impossible to give absolute rules and guidelines regarding optimized 3D models, since so many factors play in. In SynergyXR we have decided to set some limits to the 3D models uploaded through SynergyXR – Manager to ensure a good end-user experience. It will always be a balance between the level of visual quality and the number of models usable in a single room. These limits will change over time as we further optimize the 3D model pipeline, but this document outlines the supported 3D model features as of SynergyXR v.1.8.
Controlling the amount of memory allocated on XR device is very important – if you run out of memory the application will normally crash. In SynergyXR we have built-in memory management in all applications, ensuring they will never crash due to memory issues – the user will merely be told that there is not enough memory to show the content.
The size of a model when stored on a Windows desktop PC (model file size) is quite different from how much memory will be allocated on device (estimated memory usage). To allow XR devices to render 60/72/90 frames per second (fps) we need to load the textures of a model into memory completely uncompressed to avoid the device spending too much processing power rendering from a compressed format. This means that a model that only takes up few MB on disk, can still use a lot of memory on device – this is mainly caused by texture resolution:
- 256x256 pixel resolution: 0,5 MB memory on device
- 512x512 pixel resolution: 2,0 MB memory on device
- 1024x1024 pixel resolution: 8,4 MB memory on device
- 2048x2048 pixel resolution: 33,5 MB memory on device
- 4096x4096 pixel resolution: 134 MB memory on device
These memory estimates clearly show the importance of only using the necessary texture resolution to not waste memory. We encourage to not use 4k textures at all, and in general use as low-resolution textures as possible while still maintaining the desired visual quality.
If using multiple textures for color information, occlusion, metallic, etc., all textures do not need to have the same resolution – often you will want to use the highest resolution for the color information – slightly less for the occlusion information – and the least for metallic information. There is a lot of room for optimization here, allowing users to maintain the same visual quality on a tighter memory budget, in turn allowing more content to be used at once.
Limits and warning levels
When uploading a model through SynergyXR – Manager, the user might experience warnings or errors due to the complexity or share size of the 3D models. A warning is given, to let the user know that issues might occur using that model, and errors are given to stop the user from uploading models which will certainly cause issues. The limits are defined here:
- Model file size:
- Warning: 30 MB
- Max: 50 MB
- Number of sub-meshes
- Warning: 100 meshes
- Max: 150 meshes
- Estimated memory usage
- Warning: 75 MB
- Max: 150 MB
Supported 3D model features
The following lists the 3D model features supported in SynergyXR v.1.8 When applicable, the texture channels are listed with identifiers: R (red); G (green); B (blue); and A (alpha).
- Supported file formats:
- GLB (preferred)
- FBX (automatically converted to GLB during upload)
- Index buffer must be 16-bit (supporting up to 65535 vertices in a single mesh) since 32-bit is not supported on all devices.
- Vertices, Normals, Tangents, UV (0)
- Textures (including individual tiling and offset for each)
- Metallic setup (preferred over specular setup):
- Metallic (B), Roughness (G), Occlusion (R)
- Specular setup:
- Specular (RGB), Gloss (A)
- Occlusion (R) (can be separate from MetalRough texture)
- Base/Main color
- Emission color
- Specular setup:
- Specular color (when no SpecGloss texture)
- Transparency (alpha blend)
- Base Color
- Albedo Texture
- Shader setting in Blender:
- Animations (FBX Animations are rebaked)
- Supports import of many animations
- Option to play, stop and scroll in the animation UI.
- FBX only supports 1 animation clip
- Only support for combined animations
- Supports import of many animations
- Multi material on same mesh (submesh)
- Front or double-sided rendering
- NB! You must enable Backface culling in Blender before export to have single sided models (better performance, but can’t “look inside”)
- Bones and skinned mesh with animations
- Shared materials/textures without duplicate materials/textures
- Always repositioned to bottom center of mesh (combined bounds)
Guidelines regarding 3D model workflow
It is hard even for trained professionals to predict how much memory a given 3D model will use, so we understand that it can be even harder for the average user to fully understand this. Hence, we give some guidelines that should help optimize the 3D model workflow and resulting SynergyXR experience:
- Use as few sub-meshes as possible since these quickly add up in memory use and lowers performance.
- Only use sub-meshes if needed, for e.g.
- Different material properties that cannot be shared between meshes.
- Use as few vertices as possible. E.g., avoid using geometry to model fine mesh, where a texture with a transparent cut-out shader could be used.
- Use as few materials and textures as possible since these quickly add up in memory use and lowers performance.
- The max texture size is 2k, but often you can get away with much less.
- Not all textures in a PBR material needs to be the same resolution. E.g., a metallic map often need only low resolution to obtain the same results.