4
$\begingroup$

What I'm actually trying to achieve is a hack for modeling with trilateral symmetry. I'm trying to achieve this with the following modifiers:

Starting with a model like:

Single Quadrant

1 - Mirror Modifier (mirror in X and Y) to give 4 identical quadrants. This gives me something like:

Mirrored in X and Y

2 - Boolean Modifer (use a big cube to remove the 2nd quadrant i.e. upper left). I only allow the cube to draw as wires so I can see through it. This give me something like:

enter image description here

3 - Some sort of deform modifier (this is the crux of my question) that will close the shape in some reasonable way to achieve trilateral symmetry and allow me to continue modeling only in the original "quadrant".

Simple deform doesn't seem to be the right thing here.

Mathematically there are a few ways to do this, though scaling everything along the circle seems to be most natural and gives me the result I want. So I could implement any of those transformations in Python as a one off. But I'd rather hear someone experienced with Blender say that one of the deform modifiers does the trick for me.

Thanks!

$\endgroup$
  • 1
    $\begingroup$ You could use a curve modifier, after your current setup, or an array with object offset, using a rotated(360/3 degrees) empty $\endgroup$ – someonewithpc Jan 23 '15 at 8:10
  • 1
    $\begingroup$ Maybe this helps: blender.stackexchange.com/questions/23659/… $\endgroup$ – Jaroslav Jerryno Novotny Jan 23 '15 at 8:51
  • $\begingroup$ Brilliant, @Jerryno. I had to tweak it a little to make it right. It is even more general that I had hoped. Writing up the answer now. $\endgroup$ – Chuck Jan 23 '15 at 14:59
5
$\begingroup$

Thanks to @Jerryno, I have an even more general solution than I was hoping for. In fact, it addresses any degree of symmetry that I need. Here are the details.

Here is my base geometry with only a subsurf modifier:

Base geometry and circle

Notice it also shows a Bezier circle that I will be using.

1 - Add an Array modifier with a fixed count of 3. Notice that Merge is checked.

Array modifier

This gives a result like:

Array modifier result

2 - Next we want to use a Curve modifier to bend things around the circle.

Curve Modifier

This gives something like:

Curve modifier result

3 - Don't fret about the gap. In order to close the gap, select the Bezier Circle and type "3/pi" in the X Scale and Y Scale. Since Blender interprets the Python expression it will show .955 in the cells as in:

Scaling down the circle

Which gives the very satisfying result of:

Trilateral symmetry achieved!

Interestingly, if you change the Array modifier fixed count to anything, N, and change the scale on the circle to N/pi, you can get higher degrees of symmetry (e.g. w/ N = 5):

Quintlateral symmetry

How cool is that?! (Man, I love Blender!)

One more thing might make this even more convenient. Since we have an odd number (3 in my case) of repeats, it isn't truly symmetrical. When I edit, it looks like...

Editing

If you want this edit to be truly symmetrical (i.e. each edit affects 6 analogous areas in the final geometry), then put a Mirror modifier for the X axis first in the modifier stack and only start with half of the original geometry. And we get...

Full symmetry

So to summarize, the full recipe of modifiers for this N-lateral symmetry is:

1 - Mirror Modifier in X

2 - Array Modifier w/ a fixed count of N

3 - Curve modifier with a Bezier Circle

4 - Make sure the Bezier circle has a radius of N/pi

$\endgroup$
4
$\begingroup$

Use an array modifier and an empty to control the offset:

Starting with your original object and an empty enter image description here

Add an array modifier to the object.

enter image description here

make the empty the offset object for the array

enter image description here

Rotate the empty 90 degrees and move it so all the pieces align.

enter image description here

enter image description here

Now you can edit the original object and all of the clones in the array will be edited simultaneously.

enter image description here

$\endgroup$
  • $\begingroup$ Thanks, @cegaton. What I was looking for was a modifier stack so that as I edit, I could visualize the full symmetry around the circle live without having to manually duplicate and rotate things myself. I answered my own question below and am very happy with the result. $\endgroup$ – Chuck Jan 23 '15 at 15:40
  • $\begingroup$ Though looking more closely, your approach would be good in some other ways. I'm going to play with that. For what I'm trying to do, rotation would be 120 degrees instead of 90 degrees. So your approach would be a little less convenient for my current design. $\endgroup$ – Chuck Jan 23 '15 at 15:43
  • $\begingroup$ BTW, after a good deal of experimentation, a variation of what @cegaton suggests is actually a superior solution for some other situations. I'll write up the details shortly. Thanks, cegaton, and sorry I didn't fully grasp the superiority of your approach at first. $\endgroup$ – Chuck Jan 24 '15 at 22:26
  • $\begingroup$ @Chuck Glad to help. Please write up your own answer as well, so others can use your experience to learn. $\endgroup$ – cegaton Jan 24 '15 at 22:31
0
$\begingroup$

I had posted another answer to my question that addressed the original situation I was facing. But since I'm designing an entire series of objects with trilateral symmetry and some with some very different topology, I thought I'd adopt a variation of the solution presented by @cetagon here.

The problem with my other solution is that it maps everything in the original model above the X axis to the outside of the circle and everything below the X axis to the inside the circle. While this works for my original problem, it leads to a lot of confusion and crazy math to try to get resulting geometry that is close the origin.

So here's the solution I am using now. This is also generalizable for N-way symmetry, but I'll show the 3-way case here.

With starting geometry that looks like:

Starting geometry

1 - Add a Mirror modifier to mirror in X to get (be sure to select Merge and Clipping):

Mirror in X

2 - Add an empty at the origin and rotate it around Z by 120 degrees (1/3 of the way around).

3 - Add an Array modifier with relative offset 0, select Object Offset and specify the Empty object. Be sure to select Merge and First Last as in:

Array modifier

This yields...

Final result

I left it in edit mode so that you can see that only the one bit of geometry needs to be edited in order to get the fully symmetrized result.

Editing near the seam opposite the original mirror edge can be a bit wonky at times since it seems impossible to automatically get the clip behavior you get with the mirror modifier. I'm open to suggestions on that.

Also, do people prefer this approach or the other approach better? Or can someone think of something even better. I'd rather just have a more flexible mirror modifier but I'm not that far in understanding the code base yet. Only approximately 24 hours in a day.

$\endgroup$
  • $\begingroup$ I realized that I could have just unchecked relative offset instead of making it 0. $\endgroup$ – Chuck Jan 24 '15 at 23:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.