How does Modeler work? | Substance 3D Modeler
- Getting started
- Create with Clay
- Organize your scene
- Technical support
- Release notes
How does Modeler work?
Modeler is unlike most 3D modelling applications. Instead of storing polygons, edges, and vertices, Modeler uses Signed Distance Fields (SDFs) to represent 3D space. This means that Modeler thinks of 3D space as a 3D grid made up of millions of tiny cubes called voxels. Each Voxel stores information:
- The distance to the nearest surface.
- Whether the voxel is inside or outside the surface. This is determined by the sign - the S in SDF - and can be either positive or negative to denote inside or outside.
The word “voxel” started as a shorthand way of saying “volumetric pixel”. Just like each pixel in a 2D picture stores information that helps to create the picture, each voxel in a 3D model stores information to create the model.
Modeler still uses polygons to render sculpts in the viewport - so it's still possible to see individual polygons in certain scenarios.
Detail and Resolution
Because Modeler uses voxels to represent surfaces, the amount of detail that can be stored in a certain space depends on the number of voxels available in that space. This is very similar to 2D images - an image with 4 pixels barely contains any detail, just like a sculpt with only a few voxels will be little more than a blob.
We use resolution to talk about this concept. Resolution just means the number of elements in a given space, whether it's pixels or voxels.
In Modeler you can manage the resolution of each layer individually. This allows you to control the amount of detail that you need in each layer.
It's important to note that resolution and scale are linked. An increase in resolution means that there are more elements in a unit of space, but there are two ways to achieve this - either you can increase the number of elements, or you can increase the amount of space that is considered to be a "unit" of space.
We can use the 2D grids to the left as an example:
- The top grid shows our starting resolution. In the top grid there are 36 elements in the given area, meaning the resolution is 36 elements per unit.
- In the left grid, we have kept the area the same, but increased the number of elements. In the left grid, there are now 144 elements in the given area, so the new resolution is 144 elements per unit.
- In the right grid, we have kept the element density the same, but increased the area. This also results in a resolution of 144 elements per unit.
The blue squares at the corner of the top grid serve as reference. In the left grid, each colored square has been divided to create additional elements, while in the right grid, they show how the area has increased, but the squares are otherwise unaffected.
In practical terms this means that when you zoom out, it's easy to lose track of scale. When you zoom out very far, even if your brush is small it may be able to modify tens of millions of voxels. If you find that it takes some time for clay to be modified after using a brush, it may mean either your resolution is too high, or your brush is too large (possibly due to zoom).
Converting a mesh to clay
Detail and resolution are also responsible for why converting a mesh to clay generally results in a loss of detail. Converting to clay resamples the mesh into a grid, and any detail that is finer than the resolution of the grid is lost as a result.
An apt comparison is converting vector art into a rasterized image. If there are details in the vector art smaller than the size of an individual pixel, then those details will not be visible in the generated image. Similarly, in Modeler, if there are mesh details smaller than the size of an individual voxel, those details will be lost on converting the mesh to clay at that resolution. Increasing the resolution of the generated clay can help avoid the loss of detail, but comes at a tradeoff of much longer processing time. Currently it is not possible to modify the clay resolution before performing the conversion. Instead, Modeler automatically determines a resolution to maintain as much detail as possible without using an extreme resolution level.
Resolution impacts performance. When you increase resolution, more voxels need to be modified when you perform a clay operation. This requires more system resources - voxel information needs to be stored and updated, so more voxels mean more storage requirements, and more elements to update. As a result, working at a higher resolution requires more video memory, and more processor power.
Because voxels exist in 3 dimensions, the costs of increasing resolution are exponential. For example:
- If you double the resolution (multiply the number of voxels on each axis by two), then up to 8 times more voxels are needed.
- If you double the resolution again, up to 64 times more voxels are needed than before the resolution was modified.
Due to this exponential growth, it's a good idea to only increase a layer's resolution when you need extra detail that cannot be provided at the current resolution. Managing your layers will help to avoid performance issues, and will keep Modeler responsive - especially in VR.
Modeler does use compression to help with data management, but the more efficient you can be with layer resolution, the better Modeler's performance will be.