7
$\begingroup$

I'm attempting to create a cliff mesh that I can seamlessly array. Pictured here is a non symmetrical mesh, with the array modifier.

enter image description here

I understand that to do so, the edges need to be symmetrical, however, I am unsure of the best way to achieve this in blender.

Symmetrize does not seem to create a seamless array (there's a thin seam) when applied. Pictured here is with the symmetry applied.

enter image description here

Any advice appreciated.

$\endgroup$
8
  • $\begingroup$ Have you tried checking the 'Merge' option on the Array modifier panel? $\endgroup$
    – John Eason
    Commented May 27 at 21:52
  • $\begingroup$ Yes, merging by distance may bridge the gap, but it doesn't explain why something that should be seamless, isn't. Unless I'm missing something $\endgroup$ Commented May 27 at 22:22
  • $\begingroup$ Why should it be seamless? If the surfaces of each side of the array don't match exactly you're going to see the difference between them where they join! $\endgroup$
    – John Eason
    Commented May 27 at 22:27
  • $\begingroup$ with symmetry applied along that axis, they should be the same, like in picture 2. $\endgroup$ Commented May 27 at 22:29
  • $\begingroup$ Symetrize isn't designed to make the edges match! It just means that the two halves will be mirror images of each other. In fact I'm not even sure how that's supposed to work with an array! $\endgroup$
    – John Eason
    Commented May 27 at 22:32

2 Answers 2

10
$\begingroup$

There are two things you have to understand: 1. how the Relative Offset in the Array modifier works and 2. what symmetry is and why this is not necessarily helpful in this case.

First of all, let's say this is the cliff object in top down view. It is symmetrical, so the left and right side are mirrored. And the rectangle around it is its bounding box, i.e. its maximum dimensions in X, Y and Z direction.

top down view of cliff

Now if you add an Array modifier and set the Relative Offset to a Factor X of 1, this means add a duplicate at a distance of exactly 1× the overall width of the object (the width of its bounding box). Since not all parts of the object extend as far as the maximum width, the duplicate touches the original only on its outmost vertices, leaving a gap in the other parts.

gap between instances

And this already shows why symmetry does not work here: when the left and right side are mirrored to each other, they do not fit seamlessly. Instead they should be counterparts to each other. But even when you make one side the counterpart of the other, you will still have gaps with the Relative Offset. In this example the instances do not even touch at all, since the most indented part on one side is the most bulged part on the other and vice versa.

counterpart sides

So to make arrays of objects like this one seamless, you have to offset them less than their complete width and make them overlap. This can be achieved by a Relative Offset of less than 1 or instead you choose a Constant Offset of a specific distance. In both cases it is best if you knew the distance from a vertex on one side to its counterpart on the other side. If you want to use the Relative Offset, you also need the width of the bounding box.

Below I show both methods: the distance between two corresponding vertices is 7.9834 m, so this value needs to be put in the Distance X field for a Constant Offset. To use the Relative Offset you need the vertex distance divided by the bounding box size, in this example it's 7.9834 / 8.21 ≈ 0.9724 which is then used as Factor X.

overlapping array

But as long as you do not have very exact values both methods are subject to rounding errors, which might not be relevant for a few instances, but the more you have the more problematic they might become. So the easiest and most exact way would be if the sides were completely flat with all vertices at the same X position. Then you can use a Relative Offset of 1 and it will match without gaps. This would actually be the thing I would suggest first and foremost, the previous explanations are just to show you why and how you have issues with what you did.

flat sides

Now, finally: to avoid any messy geometry with interior faces, I would stronlgy recommend you leave the sides where the array instances are connected open. The other thing is: your cliff mesh does not have to be symmetric at all. When you symmetrize it, the complete left and right side are the same, just mirrored, which might look not very naturally. But to seamlessly merge the array instances, only their border edges which make the connection have to be matching (the selected ones in the image below). Inbetween the mesh needs no symmetry unless you want that.

border edges

$\endgroup$
8
$\begingroup$

If you want tiling without symmetry, you can use the traditional approach:

enter image description here

  • Slicing in the middle (down naturally matched features)
  • Swapping the ends
  • Blending the mismatched centre

Here, blending is done by 'Bridge Edge Loops' over a gap snapped to be the same as the other linear intervals.

enter image description here

As Gordon Brinkmann says in his answer, the elements of an array may no longer join at their bounding box, so a 'Relative' offset may need to be less than 1, for a 'Merge' to take.

$\endgroup$
0

You must log in to answer this question.

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