2.8 Texture atlas (missing feature)

Hello,
did lots of searches and still no clue…while i am aware of the multi-object edit mode, i am missing a major feature present in the “Texture Atlas” addon for 2.79, namely the ability to Add and Edit UVMaps on multiple objects at once. In 2.8 in multi-object mode you can only add an UVMap to the active object, so i’d need to manually add the UVMaps i need to each and every object (which is impossible in my case, having to deal with baking for huge realtime scenes…and of course i can’t join everything in a single object).
Does anyone else have a similar experience and maybe some trick/workflow i am missing? Are there any addons in works to add this feature back?
Thanks!

2.80 can unwrap multiple objects at once so the Texture Atlas addon is no longer needed. Select multiple objects, go to edit mode, select all the verts, now you can manipulate the uvs of all selected objects.

2 Likes

…yes i know of that. What i am missing is the ability to ADD UVMaps to multiple objects.
In Texture Atlas i simply selected all the objects, added a new UVMap (i need to bake AO to several texture sets shared across objects at once), edited the selected UVMap for all objects at once. This is something i can’t do (or didn’t understand how to) in 2.8.
An example: create 3 cubes, add the same 2 materials to all the cubes (i.e. “woods” and “metals”) and unwrap the diffuse UVMap (each cube can have different materials applied to different faces). Now select all the cubes (Cube01 being the Active object) and enter multi-object edit. Add a “UVMap_Woods_AO”. Exit edit mode: as a result, only the active cube (Cube01) will hold the new UV Map :slightly_frowning_face:
…and i have to deal with hundreds of objects and 10-20 materials on each scene i work on…

1 Like
uv_map_name = 'NewUVMap'


import bpy

meshes = {obj.data for obj in bpy.context.selected_objects if obj.type == 'MESH'}

for mesh in meshes:
    mesh.uv_layers.new(name=uv_map_name)
1 Like

Thanks for the snippet, going to test soon (currently using old method on 2.79)… this should do the trick :slight_smile:

Hey. I missi ng the addon too.
It was working perfect in 2.79b for generating UV sets for lot of groups
and holding them persistent in scene for adding and deleting objects to the groups.
I have scense with up to 50 Atlas sets who baked then with baketool.

1 Like

…yeah while on 2.8 we have multi-edit mode i am really missing the entire interface/workflow from 2.79 TextureAtlas :
Hopefully more and more people will need and who knows, it might get converted…

…just texted the script, does what it has to do. Major issues still persist though: when i select all the objects and enter Multiple edit mode, i can switch the UVMap i want to edit… but it works only on the originally Active object! So i am actually editing UVMap2 for the active object and UVMap1 for all the others objects i selected :\

1 Like

…trying to mass switch active UVMap on selected objects…have no experience at all in Python, tryed the following but it is not working. Could please have a look at it? Thanks!!

import bpy

meshes = {obj.data for obj in bpy.context.selected_objects if obj.type == 'MESH'}

for mesh in meshes:
    mesh.uv_textures['UVMapAO'].active = True

For this addon I wrote a modified uv panel that has the functions you mentioned along with reordering uv maps.

If you want to take a look at the code, it’s in mesh_tools.py
look for these operators:
BatchSetActiveUVMapByIndex
BatchSetActiveUVMapByName
BatchAddUVMap

You’re script fails because in 2.80 mesh.uv_textures got changed to mesh.uv_layers

1 Like

Hey thanks so much, found and adapted the BatchSetActiveUVMapByIndex script bits, really useful when baking stuff :slight_smile:

Hi there,
Is it possible to merge objects and separate them later? an alternative to TextureAtlas? It is important for me to export several objects as one and to import them again later and to transfer properties and to separate the original again.

regards,
Manu

found this to replace the persistent grouping similar to Texture Atlas

I also just integrated a little uv tool to my Addon just yesterday. It’s not yet in the release but you could download the master and install the zip if you want

Hi irSindaco, here I am, another poor guy who need the same features that you described, did you find an easy solution to this problem that doesn’t require coding during this time?

Indeed it’s infuriating how multi edit works (or doesn’t work, actually) with UV editing and how much we need the same functionality present in the texture atlas addon.

The default, expected behaviour for multi object editing and UV’s would be to add/remove/rename UV’s while in multi edit mode which should transfer to ALL of the selected objects, and be able to switch the active UV for all the selected objects as well. Right now multi editing is pretty much useless with UV’s and more than one channel.

Hi! I currently use a set of 3 small python scripts to automate add/remove/rename UV’s and to switch the active UV to a selected index, less than ideal but works.
Still have to find time to make small addon out of these simple scripts, maybe one day…Well, I usually customize the following based on specific tasks, maybe you can find a use for them:

RENAME:

import bpy
for obj in bpy.context.selected_objects :
    for uvmap in  obj.data.uv_layers :
        uvmap.name = 'UVMap'

SET ACTIVE BY INDEX

import bpy
scene = bpy.context.scene
object = bpy.context.active_object
selected_objects = bpy.context.selected_objects
uvmaps = object.data.uv_layers
if len (uvmaps) > 0:
    active_uv_map_index = uvmaps.active_index    
    for obj in selected_objects:
        if obj.type == 'MESH':
            uv_maps = obj.data.uv_layers
            if len (uv_maps) > 0:                
                        uv_maps[0].active = True

ADD UV MAP AND SET ACTIVE

import bpy
scene = bpy.context.scene
object = bpy.context.active_object
selected_objects = bpy.context.selected_objects
uv_map_name = 'UVMapAO'
meshes = {obj.data for obj in bpy.context.selected_objects if obj.type == 'MESH'}
for mesh in meshes:
    mesh.uv_layers.new(name=uv_map_name) 
uvmaps = object.data.uv_layers
if len (uvmaps) > 0:
    active_uv_map_index = uvmaps.active_index    
    for obj in selected_objects:
        if obj.type == 'MESH':
            uv_maps = obj.data.uv_layers
            if len (uv_maps) > 0:                
                        uv_maps[1].active = True

Well…I have to admit that I don’t have any experience in coding, I don’t, to be honest, I wouldn’t even know what to do with these scripts.
Could you suggest me some tutorial or some kind of instruction on how to use it?

In any case, I would like to thank you for your time.
Thank you irSindaco

I totally agree, for what I’d need I find quite frustrating not be able to use anymore “Texture atlas addon” and all his features.
I didn’t verified yet if there are some related post on https://blender.community/c/rightclickselect/ , if not we probably have to propose something and make our voice heard.

You’re welcome :slight_smile:
Here’s how to run a script:

  1. Open a Text Editor view in Blender.
  2. Press Alt + O, or go to Text>Open Text Block and open the .py file
  3. Then simply press Run script or press Alt+p

As for the things you can customize, it’s quite easy as there’s really few lines to edit here:

Rename script:
uvmap.name = ‘YourUVMapName’

Select by index:
uv_maps[YourIndex].active = True

Add uvmap and rename:
uv_map_name = ‘YourUVMapName’
uv_maps[NewMapIndex].active = True

These all work on all selected objects of MESH type.
Hope this helps!