2
$\begingroup$

I have created a model of a hotel which has 3 separate roof areas (see image below). I applied the same texture image to each separate roof. Problem was trying to get the material scaled so that the tiles appear to be the same size on each roof also to get the tiles lined up at each (roof) 'hip'.enter image description here Is there an easy method to do this? I have attached my blender file as well.

$\endgroup$
4
  • 1
    $\begingroup$ In face mode, you can select each roof face individually then scale up or down in the UV editor to change the texture scale to match the other roof. - You seem to have snapping turned on so disable that first and use the Shift key while scaling to get a more precise result. As far as the corner edges are concerned, you can line them up roughly with each other but you'll never get them that exact without changing the scale as well which is something you're already trying to avoid! Incidentally the blend file you've uploaded has the 3D view in Local view which confused me somewhat! $\endgroup$
    – John Eason
    Jan 12, 2023 at 9:42
  • $\begingroup$ Thanks. Yes I realised later that I had snapping turned on. It seems then that there is no easy method. Should the scale value be the SAME for every face of every roof - it seemed during my attempts that a smaller roof required a different scale value than with a larger roof? Lining up edges is not critical but I added that just in case there was a simple method. BTW my model might appear quite 'rough' but it is for flight simulator and the building never viewed by the pilot from closer than say 200 metres away and so high detail is not required. $\endgroup$ Jan 12, 2023 at 10:13
  • 1
    $\begingroup$ The scale will be the same for all the panels of each roof, but not necessarily for each building roof. As far as lining up the edges, "real" roofs have the joints covered with ridge tiles which would disguise any tile offsets! $\endgroup$
    – John Eason
    Jan 12, 2023 at 10:19
  • $\begingroup$ Thanks. Yes ridge capping but that is more detail than I need - lining up is more detail than is required BUT scaling across 3 different roofs is more desirable but, it seems, is a bit of trial and error unfortunately. Thanks again $\endgroup$ Jan 12, 2023 at 10:43

2 Answers 2

2
$\begingroup$

There shouldn't be any problem unwrapping multiple objects like this if you:

  1. Check that each objects X, Y and Z scale are all at 1.000 before UV unwrapping
  2. That you mark seams correctly so that they unwrap without distortion.
  3. Unwrap all the objects at the same time.

In Object mode check the scale of each object: enter image description here

For this particular example, (UV unwrapping only the roof surfaces) we only need UV seams around the outer edges of each roof section and along the top ridges. enter image description here

In object mode shift select all 3 objects then tab into Edit mode: enter image description here

In Face select mode hover the mouse cursor over each section of roof and select with the L key. (Using the L key to select, selects all surfaces within a UV boundary).
When all the roof sections have been selected open the UV menu and choose the Unwrap option: enter image description here

The result should be that all the uv islands have a similar scale.

Its now just a question of editing the UV islands so that they are rotated and positioned to fit the texture. enter image description here

To get good results I found it best to overlay pairs of roof sections (using the vertex snapping in the UV editor) then correcting rotation issues. Note; to get mirrored across the roof ridge it was necessary to select one section and scale it to -1 along the x axis.

If this had been a model I was working on I would have probably:

  1. Joined all 4 objects that make up the building before UV unwrapping.
  2. Deleted all surfaces that would never be seen. This because it would mean having less UV seams and fewer UV islands bother with.
  3. Marked all the necessary seams for the complete building and UV unwrapped it all in one go.

Hope the above helps some .

Added to answer.... "BTW just how are those extra seams (created during extrude) removed? I attempted to do so and they would not be removed." question in comments :

In Edge select mode > Select the edge loops, U > Clear seam. enter image description here

$\endgroup$
4
  • $\begingroup$ Thanks 3fingeredfrog (that sounds like it is a byproduct of Chernobyl?). Maybe when I tried I had forgotten to apply scale to every mesh. Also thanks for pointing out to remove the edge loop seams which I should have done before. Excellent, thanks again. Please explain about deleting all surfaces which would never be seen - do you mean those parts of meshes like the base of the upper storey and the parts of the portal which are now inside the main roof? If so how is that achieve as I am thinking I would first need to make 'cuts'? $\endgroup$ Jan 15, 2023 at 23:47
  • $\begingroup$ Chernobyl ? How many fingers were you thinking should be the norm for a three fingered frog, 4 ... 5! ? :) Deleting surfaces like the lower faces of the top part of your building is just something I do so that I have less edges to mark as seams and so less UV islands to deal with. Also often UV space is at a premium and not to me wasted. If left in, after unwrapping, you can always select them all and in the UV editor scale them to a single point as part of the UV editing process. $\endgroup$ Jan 17, 2023 at 10:13
  • $\begingroup$ Indeed the Brachycephalus tridactylus (recently discovered in south Brazil) has only three fingers (most have 4 on front legs and 5 on back legs). I was trying to be funny that it was a mutation of a normal frog. Thanks for the update. BTW just how are those extra seams (created during extrude) removed? I attempted to do so and they would not be removed. $\endgroup$ Jan 17, 2023 at 21:07
  • $\begingroup$ The only way I know to remove unwanted UV seams is to select them, open the UV menu and choose the Clear seam option. See the .gif anim. I have added to the end of my earlier reply. $\endgroup$ Jan 17, 2023 at 21:53
2
$\begingroup$

There is certainly a lot of ways how to approach it, but for your purpose (flight simulator), where you don't need to tune every detail but tiles should be et least of same size on each face, I would recommend utilizing mapping by an object. The most easy way would be to use box mapping (which actually isn't mapping by an object), but that is suitable for walls, not so for slopped faces. For roof you can create a mapping plane for each angle you've got and then mix them together.

First you need to create those planes like this.

enter image description here

You will have to move/rotate/scale them afterwards to fine tune your mapping.

Now let's elaborate about this node setup:

enter image description here

Here are two branches, in the upper one I am creating a mask for the direction I want to map. The direction is determined by the vector (not exact). Dot product gives me the higher number the lesser angle between two vectors is. So next I compare the result to a value that works as tolerance to create binary mask for Mix node. In the second branch I set an object as mapping source to Image Texture node. The rest of the texture will be black, so we can use additive mixing to mix all directions together in the next step.

This you need to do for every angle you want to map. Sad thing is that due to obvious limitations of those nodes you can't create a decent group out of it. At least I don't know how. So you have to set the texture for every angle separately.

Then you have to mix it together: enter image description here

Resulting mapping looks like this:

enter image description here

(The result looks a little bit strange, that is caused by the fact that adjacent roof faces have a different pitch angle. I am not an architect but I guess nobody would design a tiled roof like that.)

The advantage is that you can map all faces of the same direction at once just by M/R/S the plane and the same scale for all the faces is granted. The limitation is, you can't fine tune each face separatelly if it has the same angle. For a more robust solution, I would bet that geometry nodes could offer interesting possibilities.

$\endgroup$
1
  • $\begingroup$ Wow. Thanks for your help and work. It seems in my aging brain, to be quite complicated and uses mapping which I am very unfamiliar with. Still it's a learning experience and hopefully will help others who also may have buildings with multiple roofs like mine. I really appreciate what you have done and explained. More for my "little black book" where I have a collection of 'how to do it'. $\endgroup$ Jan 12, 2023 at 21:48

You must log in to answer this question.

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