[UV Packmaster] Efficient UV packing solution for Blender (C++ based, multithreaded)

RELEASE 3.1.2

This release brings a lot of goodness - I hope you will like it.

  • new functionality: Orient UVs To 3D Space - make all your UVs follow the specified axes in the 3D space with a single click:
    Sekwencja_final_small

    Works blazing fast even for heavy UV maps! The functionality is available in the new mode: Other Tools:

  • better multithreading implementation in particular scenarios

  • improved packing density for UV maps containing a huge number of tiny UV islands.

  • ability to resize the active target box by mouse dragging and to snap to other boxes boundaries:
    resizeBoxesOpt50fps

  • significant performance optimizations for the Overlap Check operation (in case the UV map contains a huge number of islands),

  • new Texel Density Policy: AUTOMATIC: handle relative texel density automatically: two groups will have relative texel density maintained if and only if their target boxes intersect,

  • new general addon option: Hide Engine Status Panel: hide the Engine Status Panel in the addon tab (the panel showing the engine version in the header):
    image

  • new general addon option: Orientation-Aware UV Islands: this option defines the approach the packer uses to determine whether two UV faces belong to a single UV island. The default approach (the option unchecked) is equivalent to the way how Blender divides faces to islands but it can be problematic in some cases - for example when two islands of similar shape are stacked on top of each other, the default approach may merge both islands together (start considering both islands as a single island). In such a situation enabling this option will solve the problem (prevent the islands from being merged):
    image

  • fix rare packer hangs after the packing operation is done,

  • fix for the Thread Count parameter not affecting the packer operation on some Linux distributions,

  • a bunch of other minor fixes and improvements.

Of course you get the release for free, if you already purchased UVPackmaster 3 :slight_smile:

26 Likes

Hi Glukoz !
I tried to update to the latest version today, but i’m getting this error while trying to enable UVP

Traceback (most recent call last):
  File "N:\Tools\Blender\Builds\stable\blender-3.4.1+stable.55485cb379f7\3.4\scripts\modules\addon_utils.py", line 333, in enable
    mod = __import__(module_name)
  File "N:\Tools\Blender\Scripts\addons\uvpackmaster3\__init__.py", line 71, in <module>
    scripted_modes_modules = module_loader.import_submodules(modes)
  File "N:\Tools\Blender\Scripts\addons\uvpackmaster3\module_loader.py", line 45, in import_submodules
    submodule = importlib.import_module("{}.{}".format(module.__name__, file_parts[0]))
  File "N:\Tools\Blender\Builds\stable\blender-3.4.1+stable.55485cb379f7\3.4\python\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "N:\Tools\Blender\Scripts\addons\uvpackmaster3\scripted_pipeline\modes\aux_modes.py", line 30, in <module>
    class UVPM3_Mode_Aux(UVPM3_Mode_Generic):
  File "N:\Tools\Blender\Scripts\addons\uvpackmaster3\scripted_pipeline\modes\aux_modes.py", line 32, in UVPM3_Mode_Aux
    MODE_TYPE = ModeType.AUX
AttributeError: type object 'ModeType' has no attribute 'AUX'

I tried with the previous Blender version as well (3.3.1, 3.2.2) and still getting the error.
I managed to fix the bug by editing mode.py and adding AUX = 4 (i assumed you used power of 2 values).
Should i let 4 or change to another value ?
Thanks !

Do not modify scripts manually - it is NOT necessary.

Uninstall the add-on, restart Blender then install it once again. It should solve the problem. If not, contract us at [email protected]

Unfortunately, if a software has a problem with too much UI clutter, probably the worst way to go about it is to add even more UI elements to solve the problem of having too many UI elements. Especially if you default to showing more UI clutter, and hide the option to show less UI clutter in a place where user is almost never going to look.

But honestly, this is not just you. This seems to be a common problem of almost everyone. People just can’t help themselves from adding more buttons. So of course, the first impulsive idea to solve the problem of having too many buttons is “Hey, let’s add a button for that!” :slight_smile:

Having option to do same thing at two separate places (It says all the functionalities will be still available in the addon preferences) is unfortunately a failure of UI design.

If the panel can be safely hidden without losing any functionality, then there’s just no justification for the panel to exist in the first place. My point here is that if you make a compromise in the execution of UI simplification, the end outcome can actually end up worse than the state prior to the attempt.


On a different note:
I know UVPackmaster is just a packer. The way I use it (but I am likely not alone) is that I use Blender’s Smart UV Project operator a lot and then use UVPackmaster to pack the result. The problem with the Smart UV Project operator is that it’s insanely slow. It can take up to several hours to unwrap mesh that has over 1M poly, depending on the complexity of the shape.

It’s not because the Auto UV step is slow, but because the built in packer in Blender is slow, and Smart UV Project makes the packing step mandatory, even though the poor pack which took Blender hours to calculate will be discarded immediately, to be replaced by much better pack from UVPackmaster which is done in fraction of time. It’s really painful to wait for Smart UV project operation where the actual smart UV takes like a minute, and the packing takes like 70 minutes.

So this got me thinking if it would be possible for UVPackmaster to have it’s own Smart UV Project operator which just breaks complex meshes into packable, non overlapping UV islands based on specified angle threshold, which doesn’t run Blender’s super slow packer afterwards, so it could be used directly with UVPackmaster without having to wait several hours first. It would make UVPackmaster dip a little into unwrapping territory, but I think it would really pay off in this case.

5 Likes

Regarding adding an unwrapping functionality to UVPM: it is definitely a great idea but keep in mind that it will be a time consuming task. If you want to make your life easier very soon I propose the following workaround: as far as I know the Smart UV operator is implemented in Python so the easiest solution seems to be to simply move the operator Python code from Blender core to an addon and simply omitting the last packing step :slight_smile:

I am aware that you are probably not a developer so you won’t be able to do such a thing on your own but it still seems to be a relatively easy task which can be done in about one day by an experienced coder. All you have to do is to find someone who would be willing to do such a task for you (and probably for hundreds of other users who experience the same problem). Even in case you need to pay for the work I still think it will be very small investment especially compared to benefits in a form of time savings you would get.

I would love to do such a thing for you even for free but unfortunately I have a tone of work to do every day in the UVPM project (including improving the UI :wink: ) .

3 Likes

Also we have this addon available with a different algorithm based in a paper: Unwrap Me - better UV unwrapping

Smart UV Project was rewritten to C a while ago. Despite that, I really could not wait hours for unwrap of the meshes, so I had to do that change myself after all.

For anyone interested, here’s the patch you can apply to your build of Blender:
SmartUVOptionalPack.diff (4.1 KB)
It just adds one checkbox in the Smart UV Project operator options which allows you to skip packing step.

Anyway, I could do the UX/IU changes of the UVPM myself as well, but maintaining it on my side alongside you constantly releasing new features and breaking it would be really frustrating.

Hello, I’m using UVP 3.1.2 pro and I noticed that it isn’t using my GPU for packing. If I enable only the GPU in the preferences I get an error saying there’s no suitable packing device.

I have a GTX 1050ti, is this card supported with UVP? I think I remember it working in a previous version but I’m not so sure.

Hi!

That’s because you are probably using the Groups Together packing mode. It is the only mode which supports packing on CPU only.

1 Like

oh you’re right I’m using the groups mode, I didn’t know it wasn’t supported.

Thank you

Please make a patch for this. Would benefit everyone to have this in master. :slight_smile:

I have a similar thought to @rawalanche, expect I have a different use case:
I currently mark seams and unwrap in one command, so the results update immediately and I can check the resulting stretching/coverage etc.
Sadly, Blender unwraps and packs without taking into account things such as keeping overlapping islands together, so when I’ve put islands on top of eachother, or set up things such as relative grouping, and extra seam&unwrap totally messes up my setup.
I also think an alternate Unwrap could be a great thing. It can/should keep position of uv islands, and only pack when asked.

2 Likes

Quick additional feature request: We can toggle ‘Flip Enable’, would it be possible to set this per Island as well? So like Rotating locking, but Flip locking.
I also wonder how feasible it is to shrink islands up and down a little to maximise space use, possible with a global or per-island setting for mix and max. Often times, texel density is important, but if scaling one island down a little bit makes for much better packing (this is especially true with few UV islands, as on a lowpoly model), it’s preferable.

1 Like

I’m on a roll now, but: Similarly, could the packing operation automatically stack islands? That way, I could set the Stacking Priority, and before every pack it’d stack the relevant islands again. You’d have to be able to limit this behaviour to islands that have a stacking priority, so stacking priority 0 islands can be packed separately.

1 Like

Thank you for so many ideas. I will consider all of them.

BTW: we are currently improving the Split Overlapping Islands functionality. If any of you has a specific idea of how it could be improved, please share it - chances are the idea will be implemented very soon :slight_smile:

2 Likes

I may have asked before, but could Rotation Step’s range be set to 360 degrees? Some islands (say, the face of a character) I’ll often want to keep aligned a certain way. This also again reinforces being able to set Flipping to on or off per island…

And speaking of Flipping: I’d like there to be a final step where it selects all flipped islands, and then unflips them if it makes no difference. I often have symmetrical islands that get flipped in the process of packing, but ultimately it makes no difference to the pack, in which case it’d be better if they weren’t mirrored!

I also wonder if your menus aren’t overly verbose. Take this one for example:
image
It could just say ‘Set’, ‘Reset’ and ‘Show’ for each, given that they’re in the ‘Island Rotation Step island’, and the slider already says ‘Rotation Step’ as well.
This, combined with a few icons (Eye for ‘Show’, x or refresh icon for ‘Reset’, possible a rotation gizmo icon for ‘Set’) could really make it a lot easier to parse. I often have to pause for a sec before I click so I don’t confuse Set and Reset. Even ‘Set Rotation Step’ and ‘Show Rotation Step Setting’ have too many shared words to be easily read.

2 Likes

Thank you for feedback!

Regarding setting Rotation Step to 360: what you want to achieve is a given island not being rotated at all, isn’t it? If so, just set the island Rotation Step to 0.

2 Likes

Uh, uh, oh, uh, no? I meant something significantly less embarrassing?
No, I definitely meant that. Thanks :smiley:

3 Likes

@glukoz HI! Just noticed on Gumroad that there’s been an update to something in UVPackmaster 3 PRO for Blender, but I don’t know what. It says 3.1.2 for both the addon and engine but I already have those. So what was updated?

Well, unfortunately Gumroad is not smart enough and sends notifications even if changes in a product are not visible for users yet. BUT here it is:

RELEASE 3.1.3

It is a quick update bringing a nice feature while big changes are in progress :slight_smile:

Stack Groups - using the Stack Groups functionality the user can make the packer automatically align (stack) particular islands on top of each other before packing and then pack stacked islands together. Stacked islands will not be split during packing. Feature idea by @Michael_Knubben.

4 Likes