Purpose
This article provides simple guidelines for preparing 3D models for use in SynergyXR. It focuses on essential best practices and performance tips to help ensure models load efficiently, display correctly, and perform reliably across XR environments.
Quick Checklist
Go through this list before you import your model into SynergyXR.
- File Type: Ensure that the file type is GLB.
- Real-World Scale: The model matches real-life size.
- Triangle Count: Under 800.000 triangles total.
- Submeshes: Under 150 submeshes - fewer is better for performance.
- Textures: Each texture has a resolution of 2048x2048 or smaller; use only 2048x2048 resolution textures when necessary and limit the amount of textures used.
- Materials: Double-sided materials are only used when needed (like for thin objects).
- Shader: No custom shaders are used.
General Standards
- Naming Conventions
- Keep names clear and simple: no spaces, use underscores (e.g. my_model_name).
- Avoid special characters in file, mesh and material names.
- Units, Scale & Object Data
- Build your model in real-world units (e.g. centimetres, metres).
- Pivot points (origin) affects rotation, scaling, and interaction points in XR.
Set the pivot point where it makes sense for example:
- A door: at the hinge.
- A lever: at the rotation point
- A handheld tool: at the grab handle.
Geometry Optimization
- Optimize Geometry
- Try to keep the triangle count low (800,000 tris per model is the limit when uploading to the Procedure Builder).
- Small details (like screws or surface detail) don’t always need to be 3D - you can fake them with textures.
- Submeshes
Every material you add to a model counts as a submesh which costs performance.
-
- Each submesh generates a separate draw call in SynergyXR, so fewer submeshes improve performance.
- Aim to keep models below 100 submeshes (hard limit: 150).
Materials, Shaders and Textures
- Reduce Materials and Textures
- The maximum recommended texture size is 2048x2048 (2K).
But often 1024x1024 or 512x512 looks just fine.
- The maximum recommended texture size is 2048x2048 (2K).
-
- Instead of creating a new material for each small part, reuse a single material when possible to reduce submeshes.
- Transparency
- For see-through objects (like glass), make sure you’re using proper alpha blending. You can set this up in the material properties in your 3D software of choice.
Mesh Quality
- Object/Mesh Considerations:
- Ensure all face orientations are correct.

- Apply Shade Smooth or Shade Flat based on the desired visual style.
- Ensure all face orientations are correct.
Animation
- Animation Considerations
- The naming of the animations should be representative of the action it is displaying (e.g. door_open, robot_arm_rotate).
If multiple versions exist, use consistent suffixes (e.g. _slow, _fast, _loop). - Ensure looping animations start and end on matching frames for seamless playback.
- Ensure that the type of animation you’re creating is supported by the GLB format.
- Supported: object transforms (location, rotation, scale), skeletal (armature) animation, and shape key (morph target) animation.
- Not supported: particle systems, physics simulations, shader or material property animations, and constraint-driven animation (unless baked into keyframes).
- Keep animation data efficient - remove unnecessary keyframes and bake only essential motion.
- Remember to bake all animation data before export.
- The naming of the animations should be representative of the action it is displaying (e.g. door_open, robot_arm_rotate).
Texture Considerations
- Recommended max resolution is: 2048x2048.
- Use power-of-two texture sizes (128, 256, 512, 1024, 2048, etc.).
Non-square textures are allowed (e.g. 1024×512), but both dimensions should be power-of-two values. - Ensure UVs are not stretched and avoid distorting meshes after UVs have been unwrapped.
- Two UV sets per mesh are supported.
-
- The first UV set is typically used for tiling or repeating base textures (e.g. albedo, normal).
- The second UV set can be used for baked maps such as ambient occlusion (AO) or lightmaps, where the entire model is unwrapped uniquely within the texture space.
- Recommended maps: Albedo, Metallic, Roughness, Ambient Occlusion.
- Metallic, Roughness, and AO should be packed into a single texture (R = AO, G = Roughness, B = Metallic) to reduce file size.
Some 3D tools support this packing automatically on export.
Export Considerations
- Remove any elements not required for the model (e.g. cameras, lights, empties) before export.
- Always apply scale before export so objects have a uniform scale of 1.0.
-
- If objects are parented, apply scale starting from the parent and work down the hierarchy.
- When using armatures, ensure bones are cleanly named and not scaled non-uniformly.
- Export Validation
- Open the exported GLB in a viewer (like Windows 3D Viewer or an online GLB/GlTF Viewer) to confirm geometry, materials, textures, and animations look correct.
- Animation Export Considerations
If your model includes animations, make sure Animation is enabled in the export settings.- Review the Animation Mode setting to ensure the correct actions are exported. In the Blender export settings, these are the recommended modes:
- Actions – Exports each action in the file as a separate animation.
- Review the Animation Mode setting to ensure the correct actions are exported. In the Blender export settings, these are the recommended modes:
-
-
- Active actions merged – Merges all active actions into one combined timeline.
- NLA Tracks – Exports only animations organized as NLA tracks (recommended when using Blender’s NLA Editor).

-