Open AndreyYashkin opened 1 month ago
Hey @AndreyYashkin,
thanks a lot for the issue and the PR! I currently dont fully understand the use-case of the new functionality. However, at the same time, the new feature adds quite a bit of complexity to the material setter/getter and my fear is that this might lead to non-intuitive behavior.
I do understand that you would like to change the material of objects with linked data. So what speaks against the following workflow:
-> Every time a user sets a material via obj.set_material()
the respective material slot gets set to OBJECT
This makes sure that the material is always set only for the specific object instance.
If the user wants to set a material across multiple objects, the user needs to call obj.set_material()
inside a for obj in objs
loop. But I dont think that is much of a problem.
What do you think about this solution? In my eyes this would be beneficial as it reduces the complexity quite a bit.
Sorry for the late response.
Every time a user sets a material via obj.set_material() the respective material slot gets set to OBJECT
Well, I think that it can work too.
Describe your feature request
https://github.com/DLR-RM/BlenderProc/pull/1013 introduced a duplicate linked option, but there are no applications for it yet. Current implementation of material manipulation methods sets and gets them for object data. This leads to shared materials between original objects and linked duplicates. In Blender two objects can have shared data, but different materials by switching the material slots links from "DATA" to "OBJECT".
Describe a possible solution
The methods for setting and getting the object's materials shall be able to manipulate with the both object's and object's data material slots.