The reasons to use levels-of-detail (LODs) in Mutable are the same reasons you would use them for other game assets: memory usage, processor performance and loading time. In Mutable you can take advantage of its procedural construction of characters to optimise even more by creating specific diagrams for each LOD. This way, you can have objects like the base character body that follow the usual LOD optimisation, by simply lowering the polycount and texture sizes on each LOD, but you can also go beyond this and define different construction process for each LOD using cheaper operations as the object is further away.
As an example lets imagine a character bracelet. In the top LOD used during close-ups, the bracelet has its own mesh and complex materials with physics animation. For the second LOD it may be simplified by replacing it with a rigid mesh with a single material directly skinned to the arm bone. The third LOD may be just a texture patch on the arm (if the bracelet is big enough). In the fourth LOD it may have disappeared completely. You can define all this cases in different diagrams using the same parameters, so if the bracelet colour was customizable, you could see it change on every LOD.
The LODs can be defined in the different object nodes in a diagram. The most important location is the Base Object node. The number of LODs specified in this node, will limit the maximum LODs that can be defined in the Child Object nodes: if a base object defines 2 LODs, there is no point on defining 3 on the child object, and the LODs beyond 2 will be ignored.
The engine-side LOD properties that control how the LOD is selected, are just the standard Unreal Engine properties. They are copied from the Reference SkeletalMesh object, so you can easily set them up there. Please note that this means that the Reference SkeletalMesh object must have LODs.
If the LOD pin of a node has nothing connected to it, the object will disappear for that LOD, unless automatic LODs are used (see below).
Since customizable objects may become very big, there is a way to simplify the generation of LODs without having to multiply all the nodes. This method can be enabled by choosing the right option for the AutoLOD Strategy field in Base Object and Child Object nodes:
- Manual: Use the LODs as defined in this node.
- Automatic: Generate as many LODs as the parent object requires, using the same diagram connected to LOD 0. However for StaticMesh and SkeletalMesh nodes connected to this diagram, if they have LODs, the matching LOD will be used for each LOD of the node.
- Inherit from parent object : it will use the same strategy used by the parent object of a child object. It is not a valid option for the root Base Object, so choosing it there will be considered as having it set to Manual.