Force object mapping to remain independent of group instance position When I use object mapping and use an empty to position decals on objects, the relationship is not preserved in linked instance of the group of objects. Is there a way to force the decals to stay in their original location?

Let me explain:

On the left we have a cube and an empty. The blender logo on the cube is positioned using the object coordinates of the empty. Now I grouped the cube and empty, and created a group instance on the right. As you can see in the rendered preview the position of the decal on the linked cube is not the same as the original. Is there a way to make it so?




P.S. Using UV's is an obvious way but as in my particular use-case I have an array of cubes, I will have to apply the array to use UV's. Object coordinates help keep a non-destructive workflow.
Vector math

You can get get rid of the dependence from object's transformation with vector math. Take for instance the location: by subtracting to the empty's object Texture coordinate the location coordinates of the rendered object you find in the Object info node.





Now all your instances will look the same as the group whatever their location is.

Notes:


this works only for location, rotation and scaling of the instances
require more complex math
there is no need of assigning the empty to the group