UV island packing add-on for Blender.
The C++ accelerator currently exists for Windows and Linux. MacOS uses only Python.
Additional information can be found at: https://blenderartists.org/forum/showthread.php?420127-Addon-UV-packing
Use "Install Add-on from File..." in Blender User Preferences/Add-ons and navigate to shotpacker.zip. Then turn it on in the add-ons tab.
If the mesh has double vertices the algorithm has unexpected behavior. It's best to remove doubles before running packing.
The add-on is located in UV/Image editor Tools tab under Shotpacker.
Island iterations determine how many iterations each island will take. 20 is fast. 200 can be very slow. The function is exponential. The higher the number, more precision you will have.
Rotation is rotation step. 0 is no rotation. 90 preserves texel orientation. For example 20 rotation means the island is rotated to 360/20=18 different positions at every checkpoint. 20 rotation also increases the running time 18x.
Mirror allows or disallows mirroring the island over an axis.
Margin determines how big the edge margin is for the island. 100.0 (%) is the length of the entire UV area. So something like 0.5 is in the reasonable range. For example with 1024x1024 textures, 10 pixels is 10/1024 = ~1.0 (%)
Show detailed options section
Island selection behavior options
Pack all packs everything not caring about what is selected.
Selected packs only selected but scales everything making it fit into the 0-1 UV area.
Ignore ignores everything that is not selected and simply packs selected treating the unselected as if they didn't exist.
Lock locks the unselected islands not moving them and trying to fit the selected islands into the cracks. If it doesn't find fit, the islands will go over the 0-1 UV area.
Overlap detectionIf turned on, keeps UV islands together when packing.
Skip pre-scale doesn't attempt to scale the islands before the packing to maximize space use. It simply starts the algorithm from the current islands scale. If you want to manually set the starting scale of the islands that the algorithm tries to fit into the boundaries, or there's a problem that the starting scale is too small, use this.
Separate overlapping by 1 UV separates overlapping islands moving them 1 UV space to the positive x-direction.
Use texture dimensions reads the UV X and Y ratio from the texture.
When you're satisfied with parameters, just click Start pack to start the algorithm. Press escape to cancel the execution.
You can optionally turn on Blender console (Main Menu > Window > Toggle System Console) to see what the add-on is doing in a more verbose form.
It's recommended to CTRL+A (average islands scale), CTRL+P (pack islands) to pre-pack the islands before running the algorithm, if you're having problems. It ensures that the islands are sorted as Blender sees them.
2019-02-11: Linux support for C++ acceleration.
2018-05-15: C++ accelerated beta (only Windows 64-bit at the moment)
2018-04-23: Separate and collapse overlapping UV islands now two separate buttons in the UI.
2018-04-18: Pruning. Tools panel. Merged stats addon.
2018-03-23: Faster annealing option bugfix, disabled by default (still experimental). Added options for island margin precision. Removed scale setting (can affect performance ~50%). Islands now automatically scaled by 10x then scaled down to the largest island bounding box.
2018-03-15: Island margin should now always be over the specified amount. Faster annealing option improving performance in some edge cases by 2-100x.
2018-02-08: Bugfix for overlap detection where the same number of UV vertices but different number of UV polygons caused a problem. Added feature of the ability of turning off overlap detection.
2018-02-02: New options for packing only selected islands
2018-01-21: Bugfix. Packing only selected sometimes crashed.
2018-01-11: Ability to pack only selected islands.
2017-07-06: Many features, improvements, bug fixes. Overlapping island handling.
2017-4-18: Added packer_beta. Has features to freely specify rotation step for island. Improved performance.