FP1's Guide to Building Curvature in Studio

Fourpapa1’s Guide of and Relating to Building Curvature and Bevels in Studio



A prevalent issue in the Building Support category is the common occurrence of receiving answers like “use blender” to simple questions about building in studio. For that reason, I introduce the first of what may become a series of comprehensive build guides for new and intermediate builders alike.


My portfolio can be viewed here: Fourpapa1 - Builder Portfolio


For this guide, I will focus on aspects of or relating to curvature and bevels - something every builder should be well-versed in, and what a decent number of building-help threads I come across usually have to do with in some form or another.

A few things to note before reading any part of this guide:

1 - THE GOLDEN INCREMENT IS 0.25
I recommend you stick to using this increment for the guide, and in general, for your smaller base increment needs. 0.25 adds up to 0.5, which adds up to 1. *
As an example of poor practice, a common increment is 0.1 - 0.1 can add up to any number in between it and 1, and many of those steps are numbers you want to avoid as they themselves do not add up to 1. This is where the issue of having z-fighting or very small gaps between parts of a build most commonly arises.

2 - to "build from” refers to the practice of creating new object(s) out of existing parts, such as creating a sidewalk by duplicating the individual parts of a road. - this is to match the curvature without having to recreate it from scratch.

3 - CSG refers to the process by which unions are created.

4 - The tools utilized in this guide are located here:


  • 1 - First and foremost, I will describe a simple method for creating curvature in builds, common for beginners, and that is curvature utilizing wedges. I think it’s important to start off with understanding this method which I don’t recommend relying on too heavily for most applications, as it can work against you later on in more involved builds.

.

Curvature by Wedges

The easiest way of building curves using wedges is by duplicating the wedge many times over, subtracting from the x direction and adding to the z, and vice versa. (eg 5x5, 6x4, 7x3, 8x2) Doing this in both directions will create a curve. This is represented in figure 1a below:

There are various reasons I avoid using wedges in more involved builds when it comes to curvature, the primary of which is because they are no good for doing work that involves using the hypotenuse (which would form the curve, as seen above) as a base from which to create more parts. (eg. creating a sidewalk using parts duplicated from a road, to match the position and curvature automatically.)

  • ex 1b
  • ex 1b2

    1-10x10 : 45°
    2-10x9 : 48.01°
    3-10x8 : 51.34°
    4-10x7 : 55.01°
    5-10x6 : 59.04°
    6-10x5 : 63.43°
    7-10x4 : 68.2°
    8-10x3 : 73.3°
    9-10x2 : 78.69°

If you wanted to build from the existing wedges, you would need to position and angle parts manually. Unfortunately, matching the part angle to that of the wedge’s hypotenuse cannot be done by eyeballing using clean increments such as 5 degrees, as the hypotenuse angle will most often be a sloppy number. The degree will be clean if the measurement of the wedge is something like 5x5, (in which case, the angle will end up at 45 degrees) but when you’re creating a smooth curve with wedges, most of them (if any at all) will not be the same length and width. (see Example 1a)

  • ex 1c

    –the two red parts in example #1 are moved down slightly for improved visuals, but would otherwise be z-fighting.

As can be seen in example 1c, there is a near identical curve created using both parts and wedges. The angle of parts can be controlled and set without the length and width of the part being affected, and thus makes building from these parts easier whereas the angle of the two wedges cannot be controlled without fiddling with the measurements of the wedge. (take the green parts as having been duplicated and built from the two red parts. Furthermore, you can Imagine the red and grey parts as being part of a road, and the green as a soon-to-be sidewalk. It is duplicated from the two grey parts to instantly match their rotation.) This means building off from the two wedges rather than the two parts, and then matching the angle will be a longer process, not to mention poor building practice.

Even when it comes to builds where you don’t plan on creating anything more from the wedges (we’re still talking about curvature created from multiple wedges, and not a simple bevel, in which case, speed aside, a wedge would be all that is necessary) it can still require more time and patience than if using regular parts, owing to the necessity of rotating and resizing them on the very common chance that their orientation is incorrect after conversion into a wedge. (It is better to convert a base part into a wedge, rather than going through the hassle of inserting a wedge into the workspace and placing it manually, especially if impure measurements have been introduced into the build at some point) Additionally, not all faces of the wedge are able to be manipulated using ResizeAllign (the quickest method for resizing wedges after rotating them) so one face may need to be resized manually no matter what - in that case, you can only hope the required increment to fit the wedge is something like “0.25” and not “0.349”, or you’ll need to do a bit of math to line it up correctly - wasting even more time.

(here, the 0.25 length version would require a 0.75 addition to add up to 1. This is clean, as 0.25 can multiply into an additional 0.75, and add up to 1. This isn’t as simple if you end up with something like a 0.349 stud gap in between your part and wedge, of course owing to the fact that you wouldn’t already have that number calculated beforehand.)

This is displayed here:

  • ex 1d

    –this is a tame example, since the wedge would only require one 90 degree rotation and no adjustments to size.This tameness degrades with less uniform measurements.

Sometimes the rotations are quick and easy, as shown in the example since all the individual parts are 5x5. Other times, it can involve having to resize the wedge in multiple directions after rotating. Depending on the wedge’s position after rotating, you may end up turning your clean numbers into unclean ones after resizing with ResizeAllign, which will have to be corrected manually. Remember, some manual labor may be introduced anyway depending on the wedge’s orientation, as has been mentioned previously, not all faces are editable with ResizeAllign.

In summary:

  • Wedges are often incorrectly oriented when converting from the base part. Rotations after conversion will often result in having to resize or reposition the wedge afterwards, as shown in Example 1d.

  • Wedges cannot be used as a base to build from further, as shown in Examples 1b and 1c.

  • Wedge hypotenuse angles are unclean, unless the wedge length is equal to its height (5x5, 2x2, .5x.5) but the majority will not be (refer to Example 1a); this means parts not only cannot be built from the wedge itself, but you cannot line up parts manually without delving into imprecise angles.

The only situation in which creating curvature (excluding single-wedge bevels) with wedges is ideal is when it can be done quicker than with normal parts, and where your work on or with the curve ends there.



  • 2 - The next process of using cylinders and spheres too is sometimes done in a primitive manner that results in seamed or misaligned connections between segments. When inquired about on the Devforum, it is natural to be met with the answer of “Use Archimedes”, as it is a well known and useful plugin with many different applications. As you will see here, Archimedes is not always an approach befitting the task of creating curvature that relies on the usage cylinders.

.

Curvature by Cylinder & Sphere

This section will refer to the usage of parts and cylinders, and cylinders and spheres to create seamless curves. The simplest way to do this is by duplicating your base part, converting it into a cylinder through the part’s “Shape” option in the properties window, and repositioning it. It is easiest to line up the two when working with clean sized parts. (eg 1x1, not 1.38x1.03)

I recommend using a SpecialMesh for spheres rather than converting through the part’s Shape property, or if you do, adjusting to the proper size through the properties menu instead of resizing manually. A SpecialMesh can be inserted from the Object menu (Right Click > Insert Object)

The issue arises when applying this method to curved parts. As shown in example 2b - the sharper the angle, the more apparent imperfections become. This is an example of what happens when attempting the curve using the Archimedes plugin. A second issue appears when using the Archimedes plugin on a part-cylinder pair, like seen in example 2a. Depending on the position and size of the individual parts, with each new generated segment, the parts begin to lose alignment and collide, resulting in z-fighting. (example below)

(This can be slightly solved by grouping the parts before using Archimedes, though the connections between them will still be sloppy. This is expanded on in the Archimedes section of the guide. For our purposes, we will not be grouping the individual parts.)

  • ex 2c

    –note how the parts lose alignment further which each new segment. This is because pieces of a segment on the inside of the curve must be shorter, and parts on the outside longer. Imagine two rings inside one another - one must be larger, and one smaller. This difference is further exemplified below.

This issue must be resolved before the method can be used to its fullest potential. The solution I will present will cause the connection between the part and cylinder to be seamless, and allow the user to adjust the angle to their desire without having to undo any changes, or redo any step of the process. This will also consist of far less parts than some other solutions that tend to get passed around on the Devforum, such as gapfilling or building the cylinders manually with parts.

  1. Start off with your base section, like so. (Create the cylinder from the part it’s meant to connect to, by duplicating the part and converting to a cylinder, rather than inserting to workspace and trying to place it manually)


    –note that in this example, a regular block part is shown beneath the cylinder to demonstrate a part-cylinder connection - it is not required for the sphere-cylinder process.

  2. Duplicate the cylinder and convert it to a ball/sphere in the properties menu.

The dimensions of the sphere should always match the width of your cylinder. If your cylinder is 4.5 studs wide, then your sphere should be 4.5x4.5. Move your sphere a few studs over utilizing the “golden increment” of .25 (or .125, which is half of .25, if necessary) until it lines up perfectly.

You should end up with something like this:

  1. Duplicate your original part and cylinder segment, and move it over so that they are perfectly connected, like so:

The sphere is out of view, but should still be located in the center between your two cylinders.

  1. Using your building tool of choice (F3x or SBS, I will be using SBS) Select your second part & cylinder segment as well as the sphere inside. Next you’ll need to rotate the selection using the sphere as your pivot point - Think of it like your knee cap when walking. (Keep in mind this process may be a bit different for F3X users.) I will explain using SBS:

Select the “RotatePivot” tool. (Or the F3X equivalent that allows you to manually set the position of the rotation axis)

Mousewheel click the sphere. (You may need to fiddle your camera around inside to select it, since it is obscured by the two cylinders) This will set your sphere as the pivot point, and the rotation axis will change position to reflect that.

  1. With that done, you should now be able to rotate any degree you want with near-seamless connections. The smaller the scale of your build, the less noticeable any possible seams will be.



  • 3 - The final process to be outlined in this guide will make use of the Archimedes plugin by Scriptos, which is the most common method in my case for creating quick, seamless curvature with parts.

.

Curvature (and bevels) by Archimedes

Similar to the wedge example, it would be useful to start off with a less viable method for part curvature, and that is to negate the desired part using CSG. (resulting in a union). This would primarily consist of things like arches, doorways, and other objects that must contain empty space within. I will argue this should be avoided, as an object created with CSG is unable to be edited further in most fundamental ways, as in resizing or moving duplicated parts, without first undoing the union since they are single objects. Furthermore, for things like doorways, or objects players will have to walk through, you don’t want to introduce inaccurate collision geometry.

To quickly clarify the examples listed above:

-the arch created with CSG by duplicating the negated part from the original part may suffer from inconsistent width across the form of the object, if the negated part was moved rather than resized (or resized incorrectly). Archimedes in this situation will result in a cleaner result, with the added benefit of not having to undo any unions to create edits, or to be able to build from the existing parts (to create extra layers, divots, or other details of the arch. As stated previously, this is not possible to do with a union in the described manner as it consists of one object which you cannot manipulate further.)

1 - negated part moved, not resized, resulting in inconsistent segment width throughout.

2 - negated part scaled down by resizing, resulting in uniform segments.

Despite the negated part resulting in a proper cut when done correctly, I still insist on avoiding unions for the other reasons previously outlined.

-a rounded door cut with CSG would rely on a cylinder for the circular top, but as cylinders have inconsistent and unclean angles, if you were to create a frame to the door with parts you would need to meticulously match the angles of the cylinder’s curvature, and length of its segments, to have a frame that matches the space it encompasses. (To word it more simply, think of having to work with and match part angles to that of wedges from example 1b)

As you can see in this example, the angles (1) and segments (2) of the base inner arch, (created with CSG), are inconsistent with that of the outer arch, consisting of 1.25 stud 15 degree segments

In place of unions, I encourage the use of the Archimedes plugin, which is an essential part of any builder’s toolkit.

The Archimedes menu is split into three sections. Axis, Angle, and Miscellaneous. It may look confusing at first, but it is actually very simple.
The axis buttons control which face of a part, as well as in which direction (up/down, or left/right) your new parts will generate.

“Flip Axis” allows you to fine tune the direction further. If your axis setting has the part facing up, then clicking this will make the part face down. If your part is facing to the left, then clicking it will make your part face to the right. This effect is the same as typing a negative value for your Angle (eg -30° instead of 30°)

“Invert Axis” will simply

This guide won’t go over what each button in the menu does, but it is very simple to understand after a minute of experimentation in studio.
In quick summation, curvature with Archimedes is as simple as setting a desired axis, inputting an angle, and clicking render.
The angle you choose should be a number that adds up to the final angle of your curve. A quarter of a circle would have to add up to 90°, half a circle to 180°, and a full circle to 360°.

  • ex 4a

    –if you chose 25° as your angle, your last part would be at 175° instead of 180°, resulting in an incorrect arch.

The larger your chosen angle, the sharper the curve will be; the smaller your angle, the smoother the curve. This will also affect the overall size of the arch, so if it becomes too small or big, you can simply increase or decrease the length of your original part.

  • ex 4b

    –The arch with a smaller segment length is around the same size as the one with the larger segment length, but both maintain the same angle of curvature. Keep in mind this will also result in more parts overall.

In the earlier part of this section of the guide, one of my points of argument against unions was that you would be unable to manipulate them in most ways, such as building from the existing parts which is a very common and easy way of going beyond simple geometry.

  • ex 4c

    –In this example, the base arch is in light grey. The duplicated section is shown in dark grey. The red parts show the cross section of the arch rotated 90°

In the previous example, you can see we start off with our simple arch, and using SBS, duplicate the parts (grouped into a model). The duplicated model is then resized inward and out. Depending on which direction and how much you resize, you may have to fix the connections between parts using ResizeAllign. (This goes back to what is displayed earlier in the guide in example 2c, where larger spaces require longer parts, and smaller spaces require shorter parts. In example 4c above, I did not make the second arch larger nor smaller, as it takes up half the width the original arch was already encompassing. Notice the original arch in step 2 looks thinner.)

From here, the Gapfill plugin can be used to fill the space between both arch models. You will want to make sure your segments are perfectly connected before doing this, or the plugin can generate extra parts than necessary, or simply not look right. After gapfilling, you can improve the arch further by once more resizing the two different arch models. This will make the model look more detailed and less flat overall, depending on what you’re going for.

  • ex 4d

    –The parts generated via Gapfill are highlighted in blue. In the second example, the two arches are resized further after gapfilling. Notice how different the cross section of each example can be made to look by a simple edit.

Gapfill curvature is expanded upon in section 4 of the guide

If you aren’t going for detail, but things like roads, bridges, and other curved objects, it is good to take into account the groupings of the model beforehand. A grouped model has a different. Take the example below, which could represent many common things you might want to build - Train tracks, a road, sidewalk, and so on. We’ll refer to it as railing -

The railing segments on the left side are ungrouped, as can be seen by the two light blue selection boxes. The railing segments on the right are grouped, as can be seen by the single bright blue selection box.
As is indicated, the ungrouped segments do not maintain the same distance between both sides throughout, but the individual segments do maintain proper connections. The grouped segments on the other hand, do maintain the same distance throughout, but the segments of the inside arc are not aligned. This once more goes back to what is demonstrated in example 2c earlier in the guide, where the inside segments are required to be shorter. This is an issue that will occur a lot when using Archimedes, but is easy if not tedious to correct using ResizeAllign.

Now that we know the basics of Archimedes, how ResizeAllign and Gapfill can be applied to it, and how imperfections can and will be introduced, I should go over in more detail on how they can be fixed in a way that will certainly speed up your workflow than if you were to manually ResizeAllign every single segment.
Doing this relies on something I refer to as dummy parts, or dummy segments. They are temporary objects created by normal means with Archimedes, but exist only to correct and make edges seamless.

  • ex 6a

For this example, we will make use of the model above. Remember that we want the three parts to be grouped as a model, so we do not run into the issue displayed above in example 5d. We want the distance between each of those three parts to remain the same along the entire length of our curve. Generating two new segments with Archimedes will create this:

  • ex 6b

As you can see, we run into the same problem where the edges are not connecting right, (I will mention again, because the inner rings require shorter parts.)

  • ex 6c

The model on the left and right side represent our dummy segments. Rather than generating the entire shape or circle with Archimedes and then fixing the connections one by one with ResizeAllign, we can use the dummy segments to perfect the measurements on the center segment only using ResizeAllign.

  • ex 6d

Once the connections are fixed, the dummy segments on the left and right can be deleted. You do not want to keep this segments - As the center segment has had its measurements trimmed on both ends, the left and right dummy segment has had its measurements trimmed only on one side. Generating new segments from the dummy parts would be incorrect.

  • ex 6e

This is what the trimmed version of the segment looks like. Since the lowermost part in the model remains the same length, the length of the model itself does not change - If the overall model length were to decrease or increase, then Archimedes would not generate the segments at the same point. With the dummy segments deleted, you can once more generate new segments with Archimedes with proper connections between every edge.



  • 4 - This is a WIP section on using a combination of Archimedes and Gapfill to create curved shapes. Until it is written and finalized, an answer to the question that encouraged this part of the guide will be listed instead.

.

Curvature by Gapfill (WIP)

Need help with building a boat point - #2 by fourpapa1


–This guide may be expanded upon in the future. Please feel free to report any errors, suggestions, and build tutorial requests.

141 Likes

Amazing tutorial! Very in-depth, deserves more likes!

2 Likes

Thanks! I’m glad you think so.

A well constructed presentation of important information every builder should be aware of.

The most fundamentally principal, I feel, is what you have coined as the golden rule. Always use increments that will eventually sum to 1 when doubled enough times. Building makes a lot more sense and it especially helps when you return to an old build you need to refurbish.

These are the building blocks of building knowledge that builders will be able to progressively utilize for increasingly complex projects. I applaud you thoroughly for taking the time to make it and hope others take the time to understand it as well so they can flourish.

2 Likes

An extremely well presented guide for builders of all skill levels that goes well beyond the mere suggestion to “simply use Blender” that is typically conveyed to beginners.

3 Likes

Extremely useful guide! There’s a lot to learn from this tutorial, and I encourage other builders, regardless of skill level, to give it a read. A lot of these principles, once applied, can greatly improve your world construction.

1 Like

Despite not being a builder primarily, this is a thread that I consistently come back to in order to refresh my mind to help me understand the nuances of proper angling, sizing, and overall 3D world space coordinate framing and conceptualize my project’s end goals through this thread’s visualizations.

Wirthout a doubt, a must-have in any builder’s arsenal of topics they’ve stashed away for a good read later.

Do you use fx3 or sbs?
Anyone else?
I use fx3 but I heard sbs is MUCH faster

1 Like

I use SBS. I think it’s faster in that you can find the right tool almost immediately without having to sift through a bunch of icons and bloat. I’d say F3X is better suited for in-game building, rather than studio, but ultimately it comes down to preference.

1 Like

I’ve wanted to make something like this for so long and have never had the time, people who answer “use blender” to stuff that can be done faster with just a tiny change or easily applied plugin infuriate me. Thank you so much for making this, I’ve got a similar method using unions and math that works for some more advanced applications that I might make a tutorial on eventually, but this is a really nice starting place for new studio users.

2 Likes

Hey I was wondering if you could help me out, I was wondering how to get a smooth vertical spiral, sort of like the one in your showcase but I’m more interested in the bottom side of it


If you point me in the right direction how to achieve something like this I would really appreciate it.

I’ll have to get around to updating the guide with a section pertaining to this topic, but it boils down to a couple essential steps:

  1. Use Archimedes to generate a circle consisting of parts matching the size you want each step to be. Take note of the angle you use.
  2. Create a pivot point as outlined in the guide by gapfilling between two parallel parts on opposite sides of the circle. This generated part will automatically be in the perfect center. You can then change the measurements of this generated part to be something like 1,1,1 so that it’s out of your way, but still centered.
  3. Delete all parts except for 2 steps that are connected to one another (from anywhere in the circle, it doesn’t matter), and the pivot point in the center. Move the second step 1 stud above the other, or whatever distance works well for your stairs, so that they resemble walkable steps. Take note of this distance.
  4. Gapfill the underside of the steps so that they connect. If the result isn’t smooth, you either need to change your gapfill settings or adjust the angle/measurements of your steps.
  5. You can delete the top stair, leaving just the bottom one. Don’t delete the underside parts that were gapfilled.

You should now have a section of step that will fit together like a jigsaw puzzle when you duplicate, rotate, and move it according to the angle and distance you used originally. (e.g. 10 degrees, 1 stud up) Make your rotations using the centerpoint you created, not with Archimedes, otherwise it won’t line up.

There are further steps involved for detailing, or more complex geometry, but that’s the gist of it.

2 Likes

Thanks so much, I managed to do it with no problems at all :slight_smile:

Adding onto this technique to make it more adaptable, you can, in fact, apply this to any type of spiral - including more advanced shapes - with a bit of effort.

To do this, it’s a very similar technique, but also involving the resize align plugin and unions. I didn’t record making the above image, but here’s a recording of me making a staircase with the same technique, you just apply the same thing to every single “face” you need to have spiral.

You can get some pretty amazing builds using only unioning with this technique. It’s on the tedious side, but not especially difficult to do. It works because gapfill will always have a single “crease” in this situation, with the parts it creates being aligned to it, so creating negative parts along that crease is fairly easy to do and gives a nice clean cut compared to filling it in additively, which will have weird jagged edges and a lot of extra wedges to fix.

6 Likes