Noob here, tried so many tutorials but could not get the result.

Need a high-resolution torus (donut) shape except the outer diameter is an ellipse but the hole is a perfect circle.

But the ellipse needs to be a precise size difference to the center: Narrow diameter of ellipse is 1.29x the diameter of the hole. Wider diameter of ellipse is 1.28x the diameter of the narrow side of the ellipse or 1.64x the diameter of the perfect circle hole.

Hope someone can help. Thanks!

  • $\begingroup$ Screenshot or drawing might help. $\endgroup$ – Frederik Steinmetz Aug 2 at 20:24
  • $\begingroup$ Added a diagram (shapes not to scale) $\endgroup$ – Smashing Fulffy Aug 2 at 23:52
  • 1
    $\begingroup$ you could use your drawing as background image, create a torus, cut it in half and mirror, and use Proportional Editing to scale until it fits your blueprint? $\endgroup$ – moonboots Aug 3 at 5:43
  • $\begingroup$ Do you want the profile of the donut to be circular all the way round, or is it scaled only in XY, with a constant Z height? $\endgroup$ – Robin Betts Aug 3 at 12:00
  • $\begingroup$ @RobinBetts yes constant Z height. Looking at it from any straight on X or Y angle would look like a long capsule shape. $\endgroup$ – Smashing Fulffy Aug 3 at 22:31

Bevel a curve.

Using method similar to Shrinking tube or bending a cone will make one quarter of torus using this technique and mirror to make rest.

Add two bezier circles,

Select one as The inner radius circle. In edit mode make the spline non cylic and remove and edit such that end up with a quarter circle.

Setting the radius of the each of the end points of this curve gives us the big an small torus radii.

enter image description here

The other will make up the rings of the torus.

In edit mode move the origin of circle from centre to "left side" Select All A and shift -1 in x direction GX-1

This will ensure that when used as a bevel object for another curve (without offset) the origin point will always be on curve, thus ensuring our torus hole matches that of curve.

Now set this as the bevel object of inner circle

enter image description here

Add two Mirror modifiers one in X and one in Y to produce a standard torus

Set the bevel interpolation type to ease, now can adjust the radius of end points.

enter image description here

Note: without going into the maths of this, there will be a point where an ellipse cannot be maintained and will collapse into a cardiod or inflate to an oval.

| improve this answer | |
  • 3
    $\begingroup$ @RonJensen meant to add in comment re clarification seeking image: would be interested to see how you created that shape please consider making it an answer regardless of OP.. $\endgroup$ – batFINGER Aug 3 at 16:01
  • $\begingroup$ I actually tried both of your lofting scripts on this, trying to give you some free advertising :) .. but I couldn't arrange the profiles to follow the right tangents / have the right rotation center on the way round.. This one is trickier than it looks? $\endgroup$ – Robin Betts Aug 4 at 10:50
  • 1
    $\begingroup$ Linearly interpolating the rotation (slerping the quat) is an issue. Could make an equation for z surface addon or code it. . The circle vs ellipse parametric equations will give diameter vector, scale in z for constant height. $\endgroup$ – batFINGER Aug 4 at 10:58
  • $\begingroup$ Phew! xD .. rather you than me! $\endgroup$ – Robin Betts Aug 4 at 11:11
  • $\begingroup$ Had to edit to remove use of Euclidean distance formula... lol. $\endgroup$ – batFINGER Aug 4 at 11:24

This doesn't necessarily use a torus, but it provides about the same result.

To get this shape, I would use a cylinder, scale it on the Z axis to desired size, and go to edit mode.

I would select the outside faces except the top and bottom. Then I would extrude it along the X AND Y axes. Until the desired size. Then I would scale the side on a single axis to stretch. Then delete the inner top and bottom "circular" faces, and bridge the edge loops of the center open edges.

Then add a subsurf modifier in the modifiers panel, and you should get the desired result.

| improve this answer | |

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.