Basic Packing And Options
After you have installed UVPackmaster, you will see it provides a ton of different options. Fortunately, you don’t need to tweak anything in order to perform a basic packing operation. The default packing mode used by the packer is Single Tile - the most straightforward and intuitive mode which packs a set of UV islands into the unit UV square. Simply select UV islands you want to pack and press the Pack button. You will see your islands packed to the unit UV square immediately.
The most essential option you should pay attention to at the beginning of using the packer is Precision (in the Packing Options subpanel). It determines how exact the engine will be when packing UV islands. On the one hand, the greater the Precision value, the better quality of packing. On the other hand, greater Precision means a longer packing time, which is why you should increase this parameter carefully. The initial Precision value is 500 – it should be sufficient for most cases. If you want to achieve more exact margins (in pixels), sometimes you will have to increase this parameter, to 1000 at maximum. Greater values will only be needed in very rare cases, when 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 select the problematic islands and show you an appropriate notification.
The Margin parameter from the Packing Options subpanel implements the 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), and 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.003) 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. This parameter is expressed in degrees. For example: if the parameter is set to 90 (degrees), then 4 orientations will be taken into account: the basic orientation (island rotated by 0 degrees), island rotated by 90 degrees, island rotated by 180 degrees and island rotated by 270 degrees. If the step is set to 45 degrees, then 8 orientations will be processed etc. For efficiency, the preferable 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 this 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 decent 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 UV target area (that’s the main idea behind UV packing, isn’t it?). The scaling factor will be 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:
- the Groups To Tiles packing mode is used and particular groups are packed with independent texel density,
- the Normalize Islands option is on,
- the Island Scale Limit functionality is used.
As long as you don’t use any of these options, the scaling factor applied to all islands will be uniform.
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 when uniform scaling is applied – in particular: if all islands have uniform texel density before packing, they will also have uniform density after packing (though the density value itself will be most likely changed due to the scaling operation).
There is a special option for packer operation: Fixed Scale (in the Packing Options subpanel). When enabled, the packer won’t scale islands during packing at all. It means that the size of the islands will be exactly the same as before packing, and so will be their texel density. It should be noted that this mode should only be used when it is really needed, because it violates the main property of UV packing: adjusting UV scale to achieve the best texel density for the given islands in the given target UV area.
UV space coverage after packing
As mentioned in the previous section, UVPackmaster applies the uniform scaling factor to all UV islands being packed by default. This rule gives you full control over the relative texel density between islands but in some cases it may lead to ineffective UV space coverage after packing is done. For example it may be the case when the UV map being packed contains a single island which is very large while not containing a lot of smaller islands to compensate the size of the large island. You can see an example packing result showing such a situation in the image below:
In the UV map above the maximum scale which may be applied to islands is limited by the size of the large island (the island must fit into the target packing area). The same limit will also apply to the smaller islands (because scaling is uniform across the UV map by default). In result the smaller islands cannot cover the entire tile area. In such a situation the packer will scale the islands up during packing so they cover as much UV space as possible but there still will be a large chunk of unused area in the tile.
The same problem may occur when packing a UV map to many tiles. A scale limit introduced by a single large island may result in all other smaller islands not being able to cover all requested tiles.
In order to mitigate the issue you should adjust the UV map so the proportions between islands are more uniform or add new islands to the map.
Advanced packing functionalities
After you get familiar with the basic concepts described above, you can then proceed to learn about other, more advanced packer functionalities:
- Pack To Others
- Pixel Margin
- Heuristic Search
- Lock Overlapping / Lock Groups
- Stack Groups
- Non-Square Packing
- Custom Target Box
- Island Rotation Step
- Island Scale Limit
Another concept used by the packer during an operation is a packing mode. A packing mode determines the general logic of how the packer processes UV islands. A packing mode is a setting which is independent from the advanced functionalities provided in the previous section. Independent in such a sense, that every packing mode is compatible and can be used together with all of those functionalities.
The default UVPackmaster packing mode is Single Tile, which is the most straightforward mode. To learn more about particular modes visit the links below: