In this (advanced level) tutorial, I’ll demonstrate how to create a torus with CSG.

Note: I make use of qCmdUtl here to make my life a bit easier, but you can use any other tool like F3X or even nothing at all to reach this result!

In case you’re wondering what a torus is, this is a torus:

When creating a torus, the first thing you need to consider is the total diameter of the torus.

In this case, I picked a diameter of 8 and made a 8x8 part which will be used as a helper part.

The next thing to consider is the ring diameter of the torus, for this I pick a diameter of 1 and place a cylinder with that diameter against the helper part.

The final thing you need to consider is the angle of each torus part, in this case I pick a angle of 30 degrees.

Duplicate the helper brick, move it onto the cylinder and rotate it the amount of angles you picked divided by two (so 15 degrees in my case). After rotating, scale the part by half towards the center point of the torus.

Do the previous again but this time rotate the other way. You should get something like this:

Now scale the two parts so they encapsulate the ends of the cylinder that’s the closest to them, negate them and union them with the cylinder, you should get this:

Duplicate the cut cylinder and move it so it’s exactly on the center point. Now rotate it by your angle (30 in my case) and move out again (this is the total diameter divided by two minus the diameter of the cylinder divided by two, in my case 8 / 2 - 1 / 2 = 3.5).

Repeat the last step until you have a perfect circular torus! (the example torus looks quite edgy, this can be solved by decreasing the angle to 15 or 10)

Additionally, you can attempt to union the result. There should be no errors caused by alignment issues, however you might get over the 2500 triangle limit when you make a high-resolution torus:

Tip: If you are using CmdUtl or qCmdUtl, use MoveObject to move all torus pieces out simultaneously instead of one-by-one.

This is the first tutorial I have written, any feedback is very much welcome.

If possible, I’d like to place this tutorial on the Roblox wiki. I am a editor but I’ve never done it before so I might need some help setting it up. If anyone knows how to do that please let me know!