How to prepare 3d model for Virtualist
Quick guide for Virtualists on how to optimize 3D model for smooth VR/AR experience
Every great scene starts with the great content. Designers know this and they often use their 3D authoring software up to it's full potential. No matter if you're working in Sketchup, 3D Studio or Modo it's important to remember that in order to view it in full 3D in VR & AR You need to optimize your work before it's screened. Below i'm dropping some good practices to apply while modelling, it will always have far greater end result than any automatic optimization applied later to the models.
When You're creating your models You need to pay closer attention to the topology of your objects. Number of polygons and vertices should be optimal - of course not to the point where you're sacrificing the quality.
Things to keep in mind while modelling:
- Don't use additional vertices where they will be invisible. Remove all invisible polygons and vertices.
- Group objects - it's memory-saving to have one group of 700 polygons than 7 objects with 100 polygons.
- Model in real scale
- Use the least possible number of individual material IDs
Here's a handful of useful questions to ask yourself when trying to find the balance between the detail and optimization:
- What will be min & max distance between the camera & object?
- In which distance range will the object stay most often?
- Will the object be regularly seen from different angles or just one?
- What is the expected number of objects to appear in the scene?
All textures should be saved in .PNG, .JPG or BMP format. The size of each exture should be the multiply of 2, e.g: 256, 512, 1024, 2048 etc. Virtualist is based on the PBR system (physically based rendering).
The set of PBR textures includes:
- BaseColor: saved in RGB. The most important texture responsible for color that can be used to generate the rest of textures.
- Roughness: saved in monochromatic. Texture defining how and where the material reflects the light.
- Normal map: map of convexity. We use it to create illusion of cavities and evaginations of the material.
- Additionally the quality of the objects can be detailed further with textures such as Metallic, Ambient Occlusion and Height map.
Another great way to boost the efficiency of the textures is packing. One texture in RGB can include 3 monochromatic textures in every channel. We recommend packing in the RHA order (Red = Roughness, Green = Height, Blue = Ambient Occlusion) or ARM (Red = Ambient Occlusion, Green = Roughness, Blue = Metallic).
Texture tiling is incredibly important for optimization. Thanks to this one texture of modest size (e.g. 1024x1024) can be used many times on one plane.
It's always better to have a texture in greater resolution because compression to smaller size is instant and doesn't sacrifice quality. It doesn't work the other way - making the textures larger always impact the quality.
Keep the names of materials meaningful for other designers so they can quickly understand your order of things should the need arise later.
If you want to texture your model properly you need to set the UV mapping. To make sure it's mapped properly the common technique is to use the checkerboard pattern.
Brightness & Saturation
All colours and textures should range between 20% to 80% of possible brightness and saturation. In other case the colours will be rendered as too bland or too strong.