This article summarizes a lot of best practice when preparing 3D models for SynergyXR
- Target export format is .glb -check out the restrictions that comes with the format, to avoid using parameters that will not translate on export.
- Ensure that a compatible shader is applied to the object, even if you do not want to attach a texture
- Ensure that shaders that does not need to be transparent, have their blend mode set to opaque
- Ensure that shaders that should be transparent have their blend mode set to Blend Alpha or similar setting
- Textures should preferably have a ppi of 72
- Texture sizes should be set in a power of two; 128px, 256px, 512px, 1024px, 2048px etc. You can mix and match on axi as you see fit, but both length and height must be in that line of numbers; Fx 1024x512 or 512x512
- Make sure the UV's are not stretched, or the mesh have been stretched after you set the UV's- this will distort the result
- Use only a single UV map for each mesh
- As for which maps to use- stick with albedo, metallic, roughness and ambient occlusion input. Metallic, roughness and AO can be put in the same texture to reduce file size significantly; RGB channels - R is AO, B is metallic, G is roughness. Some software will do this for you.
- Make sure all faces are facing in the right direction, enable backface culling to inspect this
- Make sure an object does not have unwanted custom split normals
- Set shade to smooth or flat depending on the desired result
- Apply scale to all models, so their scale is set to 1.000 when they are selected, if they have a parent object, make sure you start from the parent, and work your way down the hierarchy when applying the scale.
- After applying scale, merge verts by distance to ensure you do not have any loose parts/faces that should not be loose
- Remove, hide or deselect anything that is not needed for the file when exporting. Avoid including cameras, light sources and unused empties when exporting, to reduce clutter and potential performance hit of the file
- Merge parts that could be a single object instead of multiple objects, to reduce draw calls in SynergyXR