Texture UVs and Array modifier EDIT: Jachym Michal provided an answer that gets very close but doesn't quite solve the issue.  The following screen shot shows that along the top (and bottom) of the large horizontal pipe the texture appears to align differently from where it does elsewhere.


I'm trying to build a generic radiator model that I can resize by adding or removing segments with the Array modifier.  I created a section I want to repeat (I'm calling it a pipe), and two end pieces for the start and end of the radiator (I'm calling them caps).

After some faffing around with the position of the cap origins so that it would all line up properly I think the end result works fairly well.

However, I started running into issues when trying to add a texture.
I projected the front view of the various sections and made the following UV map:

Unfortunately, when I add a texture image I get this:

There is a UV adjust slider in the array modifier, and I got this to sort of work by messing around with it until I got something that looked sort of OK with the test image.

However, it needs to be exact, because if I was using an actual texture instead of a test image it would be quite apparent if the edges didn't quite line up.
Furthermore, the right hand cap piece doesn't seem to get its texture position updated at all and it's very obvious that it's still using the texture from the left of the image.

So I have 2 closely-related questions:

Can I get the U position to be exist based on the width of the pipe?
Can I get the right hand end-cap to set its UV position such that it will match up with the last radiator pipe's position?
To match it automatically, you can use Object coordinates.

Change texture Mapping &gt; Box
Use Texture coordinates &gt; Object
In the Object field target your array


You can change your array and caps, but the texture will always match.