Looking for a definitive, foolproof way of bending with the Simple Deform modifier

Hello all -

This topic has been brought up a few times in discussions related to the Simple Deform modifier, but I thought I’d start a fresh thread for easy access through forum searches and also to address the specific scenario I am running into.

I rely a lot on non destructive modeling in my workflow (Solidify, Multires, and so on) and the one thing that is constantly slowing me down is the inability to quickly bend flat objects in a non destructive and intuitive manner. I would sum it up as follows :

One important thing is that it needs to be doable on a model arbitrarily oriented in space (but still with “clean” inernal/local orientation). Granted, being able to work without even worrying about that would be nice too, but generally I keep my objects clean in that regard anyways. I understand that the Simple Deform modifier is easier to fiddle with when applied to an object at the center of the world and Z up, but this rarely happens in my workflow as I create most of my elements directly at the 3d cursor location, precisely where I want them to be.

To sum things up : I am looking for a foolproof, predictable workflow to achieve the goal shown in the picture, without any guesswork or fiddling (besides maybe having to pick one out of 3 axis). It would be fantastic if it was possible to macro it into a single button press assigning Simple Deform with all the correct settings to the currently selected model (or even better : having a dedicated modifier for intuitive bending !!) but first things first, I am looking for some manual, step-by-step help on the issue.

[edit] : I should also mention that once bent, a subdivided strip like the one shown in the example above should still have its subdivided segments spaced evenly, and that I am not looking for a way to create bent arrays but rather, for a way to bend long arbitrary models.

Thanks in advance !

just one note you can also bend with the warp tool
but would also be nice for the deform bend modifier

now not certain if you reset that it might work as well !

happy bl

@RickyBlender : Could you provide a step by step breakdown on how to non-destructively bend a strip object in the circumstances described above using the warp tool ?

Create Custom Transform orientation (Ctrl+Alt+Space) your object selected, add empty object.
Menu > Object > Transform > Align to object orientation.
Modifier origin object: empty.

warp tool seems to be view dependant
can be use in other view but would give some strange deform!

there is the warp modifier but still trying to figure out how to use it properly

happy bl

For something like that example, I would use an array modifier and use either an object offset or a curve. Curves are perhaps a bit easier to manipulate, but using ‘object offset’ is just as good if a bit fiddly.

To change the shape of the curve, adjust either the empty or the curve.

array_with_empty.blend (501 KB)
array_with_curve.blend (505 KB)

@Kurtis : That’s interesting, and thanks a ton for taking the time to provide example files. Unfortunately while your results are close to the simple example I described, in practice this is not what I am looking for - I am looking for a way to bend a full-length arbitrary model (for instance : an organic non-repeating tree root, or a mechanical detail first modeled flat) as opposed to just repeating it on a path or around a point.

@RickyBlender : That’s interesting too. I looked into it a bit, and while the (destructive, and cursor-based) warp tool is very close to what I am looking for and will without a doubt be useful to me in the future for direct modeling, the “warp” modifier seems to be completely unrelated, as shown here : https://youtu.be/AzMVZa5OVBY?t=5m29s

@JuhahW : I am not sure to understand what you mean. I understand that you are describing a way to create an arbitrary Transform Orientation that can be then used on any object, but I do not understand how this is related to the core question of bending a model non-destructively. Could you elaborate with an example ?

I think you now need to technically defined with precision how a tool like that would work!

then we might be able to help more

happy bl

@Ricky : this is all described in the original post :slight_smile:

And to be even more clear, here is what I mean by an arbitrary model - an elongated shape that needs to be bent along one of its 3 internal directions, non destructively.

http://i.imgur.com/2mODOYP.png

User input :

  • location of the desired center of bending
  • desired axis to bend along to
  • amount of bending from 0 to 360 or more

To get there we need to :

  • find out the exact non destructive steps to achieve that, as complicated as they may be ;
  • later on, reducing these steps down to the above user input.

is it circular bending or other shapes ?
when you says axis it means any angle in space not as per world’s axis or object’s axis.

thanks
happy bl

Here are some further findings.

  • The Simple Deform modifier ONLY allows for bending around the Z axis of the model, or the Z axis of an empty. From there the plausible reason why so many people are having issues with the Simple Deform>Bend modifier comes from the fact that a plane primitive is zup by default, making it impossible to bend without messing with its internal orientation or without creating an empty oriented differently than the object to be bent - both operations being counter-intuitive and rather lengthy.

Therefore I am reformulating my question. I am looking for either :

  • a way to easily swap the internal orientation of a model, in the minimum amount of operations possible. Workflow : out of a list of 6 choices(x+ x- y+ y- z+ z-), the user chooses which one is supposed to be z+ and which one is supposed to be y+. Or, a script that simply cycles through all the possible axis permutations until the desired one is reached.

or

  • a way to create an empty at the location and overall orientation of the current model, with easy control on which way is Z+ on that empty.

The second approach (empty) is preferable, as it would allow to stack bending operations at different orientations, something that the first method would not. But it comes at the price of an messy scene to work with, with potentially many empties only used for bending.

or

  • an improved version of the Simple Deform modifier, allowing to pick something else than just Z+ as a center of deformation. A dropdown with x+ x- y+ y- z+ z- as a choice would probably solve the whole issue, also allowing for the stacking of multiple bending operations.

@RickyBlender : Circular bending only, applied to any arbitrary shape (mostly flat and elongated, but it would work on any model really, just like the current Simple deform modifier). And regarding the axis : around one of the internal axis of the model, or around the axis of an empty. Not around the axis of the world, as it would defeat the purpose of freely orienting the model in space to begin with.

Any ideas ?

theres a couple of ways to curve. Bezier, Simple Deform, that shift + w thing in edit mode.

I admit curving is something strange however the simple deform has some logic to it. I think having an empty created at the origin as well set to the origin of the simple deform could allow for more interactive control via scaling. I too am working on a workaround for this. I prefer this to a curve since the mesh will always be precise. Whereas the curve would require a little scaling to get it to not overlap or reach the end.

Yeah, that’s the tricky thing about bending : there are definitely ways to do it in Blender, but none of them fit the bill of being both non-destructive and intuitive. I think that a focus on clever Empty creation could indeed alleviate the issue.

I strongly suggest you cut out the theoretics and get down to stipulating exactly what it is you’re after or trying to accomplish.

I am looking for a way to bend a full-length arbitrary model (for instance : an organic non-repeating tree root

If I’m interpreting what I think you’re saying correctly, I would probably just use a lattice deform for that. You can bend shapes into curves using a lattice for meshes like trees. Use the lattice properties panel to adjust how many points your lattice contains.

I’ve attached two blend’s, one with a simple deform with Suzanne, and one with a tree from Blendswap (model by SSimpossible) where one tree is left unedited and one is deformed.

Attachments

suzanne_lattice_deform.blend (550 KB)lattice_with_tree.blend (1.07 MB)

Hi Kurtis, thanks for being a good sport by actively attempting it with your exemple files, I sincerely appreciate it.

The confusion comes from the fact that I am not looking for a one-time solution for a single model ; if that was the case I would have solved the issue already by using one of the lengthy ways figured out earlier (= creating an empty at the center of the object to be bent > rotating that empty manually so that its z axis is in the intended orientation > refer to that empty in the Simple Deform/Bend modifier).

Instead, what I am looking for is a process letting me bend objects intuitively (and non-destructively) like someone would bend a piece of paper without having to think twice about it :slight_smile: Something that can be done freely, on the fly, just as easily as one would enter edit mode or sculpt mode to tweak a model. I also need this solution to be stackable, to create bent surfaces with double curvature.

The lattice is indeed an interesting solution, but I am afraid it would not quite work for a clean cylindrical bend like the one shown on the right hand side of the following picture. Right is my goal, left is my starting point (but of course and as explained earlier, I’d like to avoid having to edit the axis of a model to do so).

Between these two images I had to manually enter edit mode, select all verts, rotate them all 90 degrees around local x, exit edit mode, and rotate the whole object the other way around - just so that z+ faces a direction that is compatible with the SimpleDeform Bend modifier. These non-intuitive steps are what I am hoping to bypass.

I am attaching a file for reference. The goal is to find an intuitive way of bending the model just like in the image above. I hope this will make sense :slight_smile:

(I should also mention that this question would not exist had the Simple Deform modifier offered a way to select which axis to operate around, instead of only expecting z+. I suppose that a developer might be able to improve that modifier by adding that seemingly simple option.)

Attachments

2016 02 20 - bending challenge.blend (1.13 MB)

Hey Pior,

I haven’t read the whole thread, so I might be repeating what some of you guys have already said. But when you use the SimpleDeform Modifier > Bend, Using an Empty as an Origin, you can rotate the Empty to set your Bend axis.
If your object (and the Empty) are not in zero or 90 degrees rotation … it seemingly becomes harder to rotate that Empty to control your bend axis. What you can do is use math function in the rotate field, just add +90 to whatever your rotation value is and you will change Bend axis.

As to control the Bend pivot, you either have to change object pivot, or go into EditMode and move mesh (then when satisfied with the look, move the whole mesh back in ObjectMode).

You can also parent the Empty to the Object, so if you rotate, translate the Object, the Bend stays intact.

It all is quite convoluted, but it is comprehensible and predictable. It’s a good candidate for an Addon :slight_smile:
Basically to automate the creation of the Empty, parenting it to the Object, and have checkboxes to choose local axis for deformation, and rotate the Empty accordingly.

Hi Orange :slight_smile:

Basically to automate the creation of the Empty, parenting it to the Object, and have checkboxes to choose local axis for deformation, and rotate the Empty accordingly.

Indeed that’s one of the possible solutions to make it all more intuitive - the downside being that the scene would gradually fill up with empties, especially when working with double curvatures. A custom/improved SimpleDeform modifier would alleviate that problem, but then the limitation would be that the location of the center of bending would not be editable. A minor downside though.

Just move empty on global y axis: had to reorient, breadslice, scale for radians(s:y pi*.5):
http://www.pasteall.org/blend/40731

Hello Pyro, thanks for taking part in it.

When I open your file I am getting this :

But what I am trying to attempt (easily and intuitively, without destructive intermediary steps, and without a prerequisite for z+) is the following. Note that the object doesn’t get stretched, it only bends.