2
$\begingroup$

I have multiple objects with various textures and materials, in different collections. Is it possible to apply an Alpha to the collection itself with the objects inside it? So I can control how much of the collection is visible in the viewport?

As an example, I'm posting a screenshot from Photoshop, which has a group with 4 different layers, and I can control the opacity of the group from 0 to 100.

enter image description here

And here's a Blender screenshot:

enter image description here

$\endgroup$

1 Answer 1

4
$\begingroup$

It seems impossible at the moment. Even on the design/idea level, collections are not like layer folders in Photoshop, an object can belong to multiple collections, so it's not clear what the behavior should be in such a case:

If you added a custom property alpha to each collection, and a custom property 1st_col_alpha to each object, you could then add a driver to the latter:

self.original.users_collection[0]['alpha']

Which would use the insecure Python (need to enable script autoexecution, read about the security considerations here) to copy the first collection's alpha to self alpha, which then can be accessed in the shader this way:

Unfortunately this has a problem with refreshing, changing the collection property doesn't automatically refresh the driver. There are various ways to fix it, one would be to simply force a refresh each frame by modifying the driver this way:

self.original.users_collection[0]['alpha'] + 0*frame

$\endgroup$
1
  • $\begingroup$ Seems impressive technique, very much out of my league this type of method, I have no experience in this field in Blender with code, or drivers, too complicated for me to know even where to start. Maybe in the future a Blender release could include something like Photoshop to target the collections Alpha. Thank you for your reply. $\endgroup$ Commented Sep 6, 2023 at 11:44

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .