7
$\begingroup$

I've tried making a torus and stretching it and making an oval curve and beveling a circle on it, but with both methods the torus ends up getting thicker on the sides that are stretched out. Is there any way to keep the minor radius constant along the whole shape?

$\endgroup$
4
  • $\begingroup$ Create a mesh circle. Tab to edit mode and stretch along one axis. Tab back to object mode. Convert to curve Alt C > C. Bevel it. Convert back to mesh Alt C > M. Neither Bezier nor Nurbs curves can exactly represent elliptical shapes, not even circles. They approximate circles fairly well, but with ellipses, their shortcomings in this department become painfully apparent. $\endgroup$
    – user7952
    Feb 14 '15 at 6:22
  • $\begingroup$ @SixthOfFour you should write that as an answer (preferably with screenshots). $\endgroup$ Feb 14 '15 at 6:59
  • $\begingroup$ @AWildRolandiXor The reason I wrote it as a comment, is that I'm not at my blending computer, thus I can't make any screenshots. I'll post an answer though, and add screenshots later. $\endgroup$
    – user7952
    Feb 14 '15 at 7:18
  • $\begingroup$ Yeah, in cases where your comment is an answer it's best to add the answer (unless you think the question might be off topic, but you can provide a solution in a comment while flagging/voting to close). You can always edit answers later to provide improvements, etc. $\endgroup$ Feb 14 '15 at 17:37
8
$\begingroup$

If you stretch a torus, both the major and the minor radii will be stretched, so the effect you see is perfectly normal. There may be some way to remedy that, but I haven't found it. I have come up with some workarounds though.


Method 1

Add a mesh circle.
Tab into Edit mode1.
Scale it along one axis, SX or SY.
Tab back to Object mode.
Convert the circle, which should now be an ellipse, to a curve AltC > C.
Put a bevel on it. If you want a circular tube, you needn't use a bevel object. Just set the bevel depth and resolution to whatever rocks your boat and set Fill to Full.
When you're happy with it, convert it back to a mesh AltC > M.
Unfortunately I haven't been able to find out how to include the menus when I take screenshots, so this doesn't show the conversion between mesh and curve and back.
enter image description here

The reason I don't use a curve directly, is that neither Bezier nor Nurbs curves represent elliptical object very well. They approximate circles acceptably, but with ellipses they fail miserably unless you give them a ridiculous amount of vertices.


Method 2

If you have the Extra Objects addon installed and activated, you can use XYZ Math surface to create a torus object of practically any shape.

To enable this addon, go to User Preferences CtrlAltU > Add-ons > Add Mesh > Add Mesh: Extra Objects.
enter image description here

Add > Mesh > Math Function > XYZ Math Surface

For an elliptical torus with a major axis of 3, a minor axis of 1 and a circular tube with a radius of 0.25

X equation:
(3+.25*cos(u))*cos(v)

Y equation:
(1+.25*cos(u))*sin(v)

Z equation:
.25*sin(u)

U min and V min: 0
U max and V max: 2*pi
U wrap, V wrap and Close V enabled.

enter image description here

The normals will be pointing inwards, so you'll need to flip them. Tab into Edit mode and hit CtrlN to recalculate them to point outwards.
enter image description here


Method 3

Here's a third method that I discovered today, when reading this question. It uses the Skin modifier, which is something I've never used before. This seems to be the simplest method, and very straightforward, and that's the reason I'm making this late addition.

Add a mesh circle.
Tab into Edit mode1.
Scale it along one axis, SX or SY.
Tab back to Object mode.
enter image description here

Add a Skin modifier.
enter image description here

Add a Subdivision Surface modifier. As pointed out by PGmath in a comment to this answer, the Catmull-Clark algorithm doesn't produce a perfect circle, and depending on your need for accuracy in the shape of the skin, you may want to consider using one of the first two methods instead.
enter image description here

The radius of the skin can be scaled. Make sure the Skin modifier is still in the modifier stack, i.e. do not apply it.
Tab into Edit mode.
Make sure everything is selected (A once or twice).
Press CtrlA and then drag the mouse or use the arrow keys on your keyboard until you're happy with the thickness. Enter or left mouse button to confirm.
enter image description here


1Scaling in Edit mode is essentially the same as scaling in Object mode and then applying the scale.

$\endgroup$
3
  • 1
    $\begingroup$ BTW, you can use alt+shift+S (I think that's the right combo, if not somebody can correct me) to change the skin radius. And also, technically Catmul-Clark subdivision doesn't converge to a circle (off the top of my head I think it converges to a cubic polynomial), so the cross section won't be a perfect circle. $\endgroup$
    – PGmath
    Feb 28 '15 at 22:16
  • $\begingroup$ @PGmath I know it doesn't make a perfect circle, and the first two methods are more accurate. I still think this third method is very usable though, and the cross section is closer to a circle than a Bézier or Nurbs scaled on one axis would be to an ellipse. $\endgroup$
    – user7952
    Feb 28 '15 at 22:36
  • $\begingroup$ @PGmath I just consulted the Blender Wiki on the Skin modifier, and the radius can be adjusted with Ctrl+A in Edit mode. I'm a little busy right now, but I'll update my answer when I have a chance. Thanks for pointing it out. $\endgroup$
    – user7952
    Feb 28 '15 at 22:44
0
$\begingroup$

Methods 1 and 3 in the other answer are definitely good, and worthy of an upvote. However, method 2 leaves a little to be desired. The standard equations for a circular torus won't yield an elliptic torus with constant thickness. It will be more visible the more eccentric the ellipse gets.

enter image description here

I'm working on my first ever Blender add-on, which (if all goes well) will add tori of different configurations. Currently I have the elliptic torus in working order, and I'm happy to share it, if anyone would be interested. It's available from my GitHub repo Tori. Just click Clone or download and save it to your harddrive.

To install it, open up Blender, hit CtrlAltU to open up User Preferences.
Click Add-ons, then Install Add-on from File and select the file you downloaded (Tori-master.zip).

enter image description here

You should now see the following.

enter image description here

Click the chek box next to Add Mesh: Tori, and the add-on should be working. If you want to make it survive restarts, also click the Save User Settings button.

There should now be an Elliptic Torus entry on the Add -> Mesh menu.

enter image description here

The options are as follows

Major Semi-Radius is half the size of the major axis of the ellipse.
Minor Semi-Radius is half the size of the major axis of the ellipse.
Tube Radius is the radius of the cross-section.
Ellipse Segments is the number of segements into which the ellipse is divided.
Tube Segments is the number of segements into which the cross-section is divided.


As this add-on stands right now, it's not that useful, as this can be easily achieved by other means. However, I do have some plans for tori with configurations that none of the available torus add-ons handle, and this is just the initial setup and part of my learning process. Specifically I'm aiming to get an elliptic torus with constant thickness but parallel cross-sections working.

$\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.