In this modeling tutorial made with Blender 4.3, we’ll see how to model a chain that follows the path and length defined by a Curve object.



Video Transcript

Hello everyone! In this modeling tutorial made with Blender 4.3, we’ll see how to model a chain that follows the path and length defined by a Curve object. More generally, using the technique shown here, we can model and animate objects that automatically replicate along any path we want.

First, I start by creating the first element of the chain. There are various ways to create this type of object. I’m starting with a Torus, reducing its number of vertices because the default amount is way too high. I rotate the ring so that two edge loops are aligned along the Y axis, then I add two more edge loops right in the middle along the Y axis using the Loop Cut tool, and move the entire right half along the X axis. This gives me the basic shape of the chain link. While in Edit Mode, I reposition the object at the center of the scene, so that the Origin is at the center of the object.

Before moving on with the tutorial, I’d like to point out that you can easily resize the Edge Rings that make up the chain link. All you have to do is switch to Edge select mode in Edit Mode to select an edge ring, change the transformation orientation to Individual Origins, select all the edge rings using Select Edge Rings, and scale the selection. You can apply this transformation even after completing the chain, to change the appearance of the links. When finished, I reset the transformation orientation to Median Point, just to be safe.

Now I’ll add a curve to the scene. There are different types of Curve objects, and one of them is called Path. However, Path is a Nurbs object that works with external control points and a weight system. So I prefer to use a Bezier Curve object, properly scaled and oriented, so that one of its initial control points coincides with the Origin of the link.

I then select the chain link and add an Array modifier to it. By default, it creates a duplicated copy offset by one unit along the X axis. I immediately notice that the new copy is not aligned with the original object. That’s because I initially rotated the Torus by 10 degrees, and this transformation is also applied to the new objects created by the Array. To fix this issue, I apply the rotation transformation using CTRL A and choosing Rotation and Scale from the menu that appears on screen. The scale of this object was uniform, since I hadn’t resized the Torus in Object Mode, so technically I didn’t need to apply Scale, but it doesn’t really matter.

To position the second link inside the first one, I just need to lower the Factor X value under Relative Offset. However, there’s a problem here: in the Array settings, I can’t set a rotation factor, so the second and subsequent links can’t be rotated from here.

To fix this issue, I need to add a third object to the scene, this time an Empty, placing it exactly where the Origin of the first link is, and making sure not to scale it to avoid problems. Then I assign this Empty to the Object Offset field in the Array modifier. Now, by rotating the Empty 90 degrees around the X axis, all the elements after the first one will be rotated 90 degrees each. So both Relative Offset and Object Offset are active: the former shifts the copies of the link, while the latter rotates them. By increasing the Count value in the Array modifier, we get our chain along the X axis.

Now I change the Fit Type of the Array modifier from Fixed Count to Fit Curve, and of course I assign the Bezier Curve as the Curve object to use for the length. This way, the Array will automatically create enough links to match the length of the Curve object, but still only in a straight line, from the first control point to the last.

To make the copies created by the Array follow the path of the curve, I add a Curve modifier to the Torus object. The order of the modifiers matters, and in particular, the Curve modifier must come after the Array modifier. Still, even if the correct deformation axis is selected, namely the X axis, the result doesn’t look right yet. Let’s now fix a few settings that are causing this behavior.

First of all, the Origin of the Curve object is located somewhere outside the actual curve. For a good result, the Origin should be placed at the first control point, which should match the Origin of the first chain link. So I enter Edit Mode and place the 3D Cursor at the first control point of the curve, by selecting it and using the Cursor to Selected tool. Then I go back to Object Mode and use the Origin to 3D Cursor tool to place the Origin of the Curve object there.

That’s already better, but we can immediately see that the first link has actually been placed at the final control point, and the chain continues from there outward, off the curve path. This gives us a clue about another issue to fix: the direction of the curve. Curve objects have a direction, which can be visualized in Edit Mode by enabling the Normals display in the Curve Edit Mode Overlays menu.

To reverse the direction of the curve, swapping the start and end points, we need to select all elements of the curve in Edit Mode and use the Switch Direction tool from the Segments menu. However, the result still isn’t quite right.

The last correction we need to make involves the curve’s rotation. I had initially rotated it 180 degrees along the Y axis to flip it, which causes some confusion in its actual orientation. To fix this, I apply the rotation transformation with CTRL A and Apply Rotation. Even though the scale factor of the curve is not 1, this time I’m not applying the scale transformations, because doing so would require adjusting other parameters as well. It’s better to leave it as is. Anyway, we now have the correct result.

Now we can select the Curve object, switch to Edit Mode, and modify its control points by moving, rotating, or extruding them, and see how those transformations are applied to the chain. The number of links in the chain automatically changes based on the curve’s length, which updates when we move or extrude its control points.

However, if I move even just one of the three objects we used to get this result, everything breaks. Transforming the Empty affects all the copies created by the Array modifier, while moving either the Curve or the Torus causes a misalignment between the two objects, resulting in an incorrect outcome with the Curve modifier.

To fix this issue, the simplest solution is to reposition the first control point of the Curve object, and therefore the first chain link, to where the Empty is, and then parent both the Curve and the Torus to the Empty. Parenting is done through multi-selection, where the last selected object becomes the parent of the others. In our case, the Empty must be the last one selected in the group.

Once that’s done, you just need to move the Empty to position the starting point of the entire chain. After that, you can select the Bezier Curve and switch to Edit Mode to modify the appearance of the chain.

Before wrapping up the tutorial, here’s a little bonus. If you want to animate the curve, you can link additional Empties to its control points using a technique called Hooking. To do this, select one or more control points in Edit Mode, then use the Hook to New Object tool. For example, I’m applying this only to the last control point of the Curve object. The new object created is another Empty, which I immediately rename to Hook Empty to avoid confusion. This object doesn’t necessarily need to be parented to the others. In any case, you can insert animation keyframes for this new object and observe how the chain animates.

The Fit Type of the Array modifier was set to Fit Curve, which might not be ideal for this kind of animation, so I recommend trying Fixed Count instead. Anyway, that’s it for this tutorial! I hope you found it helpful. See you next time!

Search Tutorials

Enter a phrase or multiple comma-separated keywords to search.

This is a personal website and does not constitute a sales channel. The pages dedicated to 3D models document a selection of my work and do not contain offers, prices, purchasing procedures, or commercial links. I am not currently accepting requests for custom work, consulting, or other professional collaborations.


EXTENDED PRIVACY AND COOKIE USAGE POLICY