4
$\begingroup$

I have seen other similar questions but they don't seem to be what I want, please correct me if I'm wrong.

For simplicity: delete the default cube, NumPad7, add cylinder, rotate X 90, then add torus with ext/int 1/0.75 and raise it above the cylinder. It should look like this:deform.

What I want is to deform the torus against the cylinder, but make it as if it's a projection. This means that, when looked from above, it will look like a normal, undeformed torus (volume changes), but when viewed with NumPad1, it will look like a round-end tube following the curvature of the cylinder, while still having the same round cross-section. To make it worse, my object needs to be deformed by a more complex surface, such as sin(x).

If I'd use soft body, it will look shrinked when looking from above, i.e. it will preserve the volume. If I use shrinkwrap, it either does a projection with its circumference intact, but all flat, or it will project it (similar to what I want), but only the bottom side vertices, like a curtain.

Mesh modifier gets me nowhere since I have to manually tweak the surrounding mesh, and curve modifier also preserves the length/volume, while also squishing the section of the torus at the bending points.

My question(s): is there a way to project (mold) the torus onto the cylinder while preserving it's cross-section? Can this be extended for more complex meshes to be projected or to be projected on?


This is, roughly, what the side view (along Y axis in the 1st pic) would look like after the deforming of the torus:

after

The unselected shape above is the torus (as it is in the first picture), and the selected shape is what it would look like after the deform, or molding, whatever you want to call it.

And here is what it would look like when seen from above (top view, along Z axis)): i.stack.imgur.com/HVOCo.png (can't add more than 2 pics)

The view would be the same before and after the torus is deformed.

$\endgroup$
  • $\begingroup$ I don't want to cut anything, I'll update the question with a sketch of what I want. $\endgroup$ – a concerned citizen Mar 14 '16 at 14:50
5
$\begingroup$

Create a lattice that has no depth, and is as large as the torus and place it near the torus, where you want it to make contact with the cyclinder:

enter image description here

On the torus add a lattice modifier and select the lattice as control object:

enter image description here

Select the lattice and add a shrinkwrap modifier with the cylinder as target, Mode project, and select the correct axis for the projection:

enter image description here

$\endgroup$
  • $\begingroup$ That's a nice workaround, but, unfortunately, it doesn't keep the cross-section intact. I tried to cheat by adding a second lattice and a second, larger cylinder, the difference being the torus' thickness, but it still doesn't work. I'll try to see where this is going, though, it seems promising. $\endgroup$ – a concerned citizen Mar 14 '16 at 17:29
2
$\begingroup$

I think I might have found an answer, I was looking at the problem from the wrong direction.

The torus can be built by bevelling a curve, which can be pre-scaled to fit the length of the surface/curve/function over it's projected on.

The curve can have a shape as the bevel, which makes the whole process applicable to almost any shape.

Then, this generated bevelled-curve shape can have a curve-modifier, applied to a Bezier, or NURBS, or a converted mesh.

The minor downside (and the reason I say I "might" have found the answer), is that there is a slight deforming of the cross-section towards the ends of the curve, though not as much as in cegaton's example.

Finally, as an example, here's what a round-section, ellipse-torus looks like when bent over a gaussian bell-like curve (slight perpective):

result

$\endgroup$
1
$\begingroup$

The best I was able to get was using a Simple Deform modifier set to Bend. With the torus just touching the cylinder, adjust the bend angle until the torus just touches the the cylinder sides.

enter image description here

$\endgroup$
  • $\begingroup$ It's attractive as a simple enough solution but, even if it would work in this case (it doesn't, plus the cross-section gets distorted), I don't know what I'd do in the case of a sin(x) surface. $\endgroup$ – a concerned citizen Mar 14 '16 at 17:31
  • $\begingroup$ I don't think the cross-section does get distorted with this method. $\endgroup$ – Xtremity Mar 14 '16 at 18:47
  • $\begingroup$ I couldn't bend it tightly across the cylinder and, as I increased the angle, it showed distortion. Maybe I did it wrong but, even if it did work and there were no distortions, this seems to be applicable only to a circle-type curve, which this simple example is made of. If the surface would have more bumps and/or irregular profile, it would not work. $\endgroup$ – a concerned citizen Mar 14 '16 at 19:29
1
$\begingroup$

The Curve modifier solution looks good, you could also try this one:

  • Create a plane behind your torus, subdivide it. Create a cube that encompass your torus like a cage, subdivide it.
  • Give your plane a Shrinkwrap modifier with the cylinder as Target. Disable the Display Modifier in Viewport option for the moment (eye icon).
  • Give your cube a Surface Deform modifier with the plane as Target. Click the Bind button.
  • Give your torus a Mesh Deform modifier with the cube as Target. Click the Bind button.
  • Enable the Display Modifier in Viewport option of the plane's Shrinkwrap modifier.

enter image description here

$\endgroup$

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.