UVPackmaster in 3ds Max is implemented as a modifier. In order to pack a UV map add the UVP modifier on the stack of the object. After you add the modifier you will see, that it provides a ton of different options. Fortunately you don’t need to tweak anything in order to perform a basic packing operation. Simply press the Pack button. You should see a render with the packed islands immediately.
The UVPackmaster modifier internally maintains 3 UV maps:
- Original UVs – a UV map visible on the modifier input, as generated by other modifiers below on the modifier stack
- Aligned UVs – a UV map being a result of the Align Similar operation
- Packed UVs – a UV map being a result of the Pack operation.
Initially, after the modifier is added to the stack, only Original UVs are initialized – Aligned and Pack UVs are not present.
- Align Similar UVs – this operation always takes Original UVs as input and stores the result into the Aligned UVs.
- Pack UVs – this operation takes Aligned UVs as input, if present. If Aligned UVs are not present, then it takes Original UVs as input. It stores the result into Packed UVs.
- if Packed UVs are present, they are copied to the specified UV channel of the object. Otherwise:
- if Aligned UVs are present, they are copied into the specified UV channel of the object. Otherwise:
- the object is left unmodified.
The most essential option you should pay attention to at the very beginning is Precision (in the Basic Options rollup). It determines how exact the engine will be when packing UV islands. The greater the Precision value, the better quality of packing you will get. At the other hand greater Precision means a longer packing time, that is why you should increase this parameter carefully. The initial Precision value is 200 – it should be sufficient for most scenarios. If you want to achieve more exact margins (in pixels), sometimes you will have to increase this parameter to 500, maximally to 1000. Greater values will be needed only in very rare cases, if you want to achieve very small margins between islands (e.g. 1 pixel in a 4K texture). Generally you should avoid setting Precision to a value greater than 1000 as it will increase the packing time considerably.
Keep in mind that setting Precision to a too low value might result in overlapping UV islands after packing. You should not worry much about it though – the packer automatically checks for overlapping islands after packing is done. It will show you a notification, if it detects some.
The Margin parameter from the Basic Options panel implements so called basic margin (in contrast to pixel margin). It determines the distance between resulting islands after packing. Packing with the use of basic margin is fast, but you should be aware that the value of margin is applied to islands before packing. After packing is done the UV islands are scaled (to fit the packing box), so is the margin value which was originally applied. That is why it is difficult to predict the exact distance between islands in the resulting UV map when using the basic margin functionality. If you want to specify the exact margin between islands (in pixels), you should use the Pixel Margin option. The default value of the Margin parameter (0.005) is a good one to start with.
The Rotation Step parameter determines how many orientations of every island will be taken into consideration during packing. The step is specified in degrees. For example: if the parameter is set to 90 (degrees), then 4 orientations will be taken into account: basic orientation (island rotated by 0 degrees), island rotated by 90 degrees, island rotated by 180 degrees and island rotated by 270 degrees. If step is set to 45 degrees, then 8 orientations will be processed etc. A desirable value of the Rotation Step parameter should be a divisor of 90 (i.e. one of the values from: 1, 2, 3, 5, 6, 9, 10, 15, 18, 30, 45, 90), although it is not strictly required. Keep in mind that the lower the rotation step, the longer the time required to pack the UV map.
IMPORTANT: in the vast majority of packing scenarios the default value of 90 degrees for Rotation Step will give you best packing results in a short packing time.
Proportions between islands and texel density
The default behavior of UVPackmaster is scaling islands after packing, so that they fit tightly into the packing box (that’s the main idea behind UV packing, isn’t it?). The scaling factor is the same for every island in most cases. There are some exceptions though – the scaling factor might NOT be uniform, if any of the below conditions is true:
- packing mode is set to Groups To Tiles mode
- the Normalize Islands option is on.
Uniform scaling means that the proportions between islands will be maintained after packing is done. For example: if you manually scale an island up before packing (so it is relatively bigger than other islands), it will also be bigger after packing is done (proportions between the island and other islands will be maintained). This feature also implies that UVPackmaster doesn’t change the relative texel density of the islands – in particular: if all islands have uniform texel density before packing, they still will have uniform density after packing (though the density value itself will likely change due to the scaling operation).
There is a special mode of packer operation: Fixed Scale. When enabled, the packer won’t scale islands during packing. It means that the dimensions of the islands will be exactly the same as before packing, so their texel density. It should be underlined that this mode should be enabled only if really needed, because it disables the main rationale of UV packing: adjusting UV scale to achieve the best texel density for the given islands in the given packing box.