Jump to content

Recommended Posts

Posted

3D Ropes in Blender - Part One: First Things First


Preamble and a Humble Plea

 

Hi everyone. I’ve received a few requests to demonstrate how to do ropes/rigging in Blender. Admittedly, I’ve been dragging my feet.. for the better part of a year! Attempting to put it all down in writing is a bit like opening Pandora’s box. There are just so many different aspects of this that can be done differently based upon personal preference, CPU/GPU performance, and use case. 

 

I think the most helpful is to share my personal preference, my chosen approach - and rather than defend or compare it to alternatives - quickly get into the tips and tricks I use to adapt these processes to Age of Sail ship rigging. My humble ask of any experienced 3d artist reading this topic would be: let’s try to avoid any of the ‘why not do it this way’ conversations in this thread [dm’s always welcome]. I’m always open to learning new things, but there are very good reasons I do things the way I do in Blender, even if they’re not always seemingly efficient. Aside from which, there are certain cans of worms I’d rather not open for the sake of the newbie’s trying to follow along. Thank you all and here we go…

 

The Concept

 

There are two (2) fundamental methods used to create ropes in Blender. Both methods, which I will cover in a moment, have the same components:

 

  • A path in 3-dimensional space that the rope will follow. In Blender, we will represent this path using the curve object. For example: The path of a shroud line a ship begins around the upper deadeye at the channel and end curled around the lower mast head.
  • A mesh or model of the rope itself.
  • A texture for the rope.

 

Figure #1. A transparent view of the main shroud lines as they pass through the lubber's hole and wrap around the mast head atop the bolsters. The curve object (yellow line with orange vertices) acts as the path for the rope mesh (dark orange) to follow. The arrows indicate the direction of travel and the tilt of the curve.

image.thumb.png.96e1c9eb64d8be97e25bb49d7fa6ebe6.png

 

Method #1: Create Ropes Directly from a Beveled Curve

 

Workflow: Create the path using a curve object -> Bevel the curve to create the rope’s mesh -> Texture the mesh 

 

NOTE: I do not use this method, and thus am only loosely familiar with how it works. However, I believe @Kurtis used this method, so perhaps he can assist if anyone’s interested.

 

Method #2: Create Ropes Using the Array and Curve Deform Modifiers

 

Workflow: Create a rope mesh segment -> Texture the mesh -> Create the path using a curve object -> Assign the segment to the path (curve) using the Array and Curve Deform Modifiers

 

NOTE: The second method is what I will be using for the remainder of this topic/thread.

 

 

 

Now let’s open blender and make our first rope!

 

 

 

@CDR_Ret
 

Posted

3D Ropes in Blender - Part Two: Let’s make a rope!


The easiest way to explain this workflow is with an analogy. Imagine that we are making a candy necklace out of cheerios. In real life, you would cut a piece of string to the right length, then begin fishing cheerios down the line until there was no more room, at which point you tie the necklace behind your neck, and Bob’s your uncle!


Blender works just like that, except you position the string first, tell Blender to calculate the exact number of cheerios you need ahead of time by stacking them on top of one another, and then put them all on the string at once.

 

Step 1: Clear some space! Open Blender and start a new project or hide everything on your existing project so you have a blank workspace. Note: This first tutorial is going to be a throw away, so there won’t be anything you’ll want to port over as a final product anyway. Additionally, I like to keep things in approx. real-world scale, even for basic stuff so I changed the units to imperial (I’m American – don’t hold that against me, lol) and set the scale to inches.

 

Step 2: Add a cylinder. Add -> Mesh -> Cylinder.

Screenshot(115).thumb.png.5181def61426ed15fc146ee4b31b77c4.png

 

 

When the cylinder is added, expand the “Add Cylinder” pop-up box at the bottom left of the view port and type in the following settings:

Screenshot(116).thumb.png.b5ca2ae05268777fd39d8d5dc7004ee0.png

 

Vertices: 10 
The more vertices, the more cylindrical the rope will appear at close range, but exponentially greater poly cont. Name of the game here is low poly. Honestly, 8 or even 6 is fine for smaller diameter ropes. I only use 10 on the thickest lines, such as anchor cables and main stays.

 

Radius: 1 in.

 

Depth: 6 in.

I’ll explain why in a moment, but the rule of thumb is that any rope segment should be 3x longer than it is thick (dimeter). Since the radius of a circle is ½ the diameter, a segment with a 1in radius needs to be 6in in length (Blender calls this depth, since blender generates cylinders with the flat faces oriented on the top and bottom).

 

Cap Fill Type: Nothing
Because we are going to be stacking the segments, we really want is a bunch of hollow tubes rather than enclosed cylinders. After all cheerios have holes in the middle!

 

Step 3: Tab into edit mode, press ‘a’ to select all vertices and ‘g’ to grab/move, then ‘z’ to restrict movement to the z axis, then hit the number ‘3’ to move the whole mesh up by 3 inches (basically, we want the bottom most vertices flat on the virtual ground at location z=0).

image.thumb.png.0c053d20e85a3a20b5dc75034566e5f5.png

 

Now Loop cut it twice by pressing 'ctrl' + '2' then hit 'enter' (this will allow the segment to bend around the curve better)

image.thumb.png.b13b41ee48c7bb41367e08e0b9fba26f.png

Posted (edited)

Part 2: Let's make a Rope (Continued)

 

step 3 (Cont.) Okay, so we left off having just made our loop cuts, like so:

image.thumb.png.71bc0df98d623a8511f1dda1d82a6b9b.png

 

 

With that done, tab back into object mode and for the sake of appearance, lets go ahead and shade our cylinder smooth (object -> shade smooth). Note: we want to use full smooth here and not auto smooth. (yes, we could've shaded the faces smooth in edit mode, but for the sake of memory later on, we don't want each rope object to use custom split normals)

 

image.thumb.png.35d755a3cb97df35c8a8470bc18b63a7.png

 

and after...

image.thumb.png.d3c71e3548077bfd91bf27aaadb6d8ac.png

 

 

Step 4. Add a curve. Go to add -> curve -> bezeir curve. I'm adding a bezier curve because the default squiggle that appears is a good shape to illustrate how the rope modifiers work. In truth, it doesn't really matter which type you choose, as everything can be changed later. Anyway, here's our curve:

 

image.thumb.png.1b244a037e4d4cb8328bece8ff5f2245.png

 

and after:

image.thumb.png.6594c057c6774d8537878d85aabe9cd8.png

 

To see the full effect of what we're about to do, I want the curve to be a bit bigger, so press 's' for scale then press '3' to make the curve 3x larger (3 is arbitrary, pick any value you want). Now, before we go back and add the modifiers to the rope segment, it's important that we apply all transformations to our curve. If you ever find that your rope is way off in the middle of nowhere and not following the path, the most likely culprit is that transformations (location, rotation, or scale was not applied) Anyway, go to object-> apply -> all transforms.

 

image.thumb.png.d7a9a455887af8a9b3afd53ece841f2a.png

 

and after... (tip: 'n' is the hotkey that toggles the properties menu)

image.thumb.png.89cf113b5424ee9cf7dc766febf90b59.png

 

Step 5: Add the array modifier to the rope segment. To do this, click back on our rope segment to select it, then go to the modifiers panel. Look for the blue wrench icon and click on it. Then add an array modifier (th UI is slightly different in later versions of Blender, but I believe you can either type to search for it, or find it under the 'Generate' category)

image.thumb.png.0a5f6703c1a39475479a684aa550ef75.png

 

The good news is Blender uses a relative offset by default which is what we want, but the bad news is it defaults to the x-axis, whereas we want to 'stack' the rope on the z-axis. Easy enough to fix, however, just replace the number '1' with '0' in the "Factor X" box then type '1' in the "Factor Z" box like so..

 

image.thumb.png.6818d7c9a223ed013467b0df03026654.png

 

There are 2 more settings we need to adjust. First, look at the initial dropdown box that allows us to select the 'Fit Type'. We want Blender to automatically calculate how many segments are needed to fill our curve, so click on the dropdown and choose the 'Fit Curve'.

image.thumb.png.403bc8ebcfd32a1e6ddeefaef4cb4798.png

 

and after...

image.thumb.png.bd04cdb533417eb35996256d696fb918.png

 

There is now a text box titled 'Curve' that allows us to tell Blender which curve to use, and - my favorite feature here - it comes with an eye dropper tool. Click the eye dropper, then click on the curve in the main window, like so...

image.thumb.png.b504c3eafb61c2eb4d86d17c2f8964e0.png

 

and after...

image.thumb.png.3c1592b6ac9dfb3c559acb22a290590f.png

 

Lastly, check the 'Merge' box to make it active or your poly count will run way high!

image.thumb.png.e73dec134bbbeab70bd23392621aacd6.png

 

Continued in next post...

image.png

Edited by 3DShipWright
Posted

Part 2: Let's make a Rope (Finale)

 

The last step in the process is to add a Curve Deform, or simply 'Curve modifier to the rope object. So go back to the modifier stack and add a new modifier and find 'Curve'

image.thumb.png.784f4414af7e7ca5663a74a745e9edca.png

 

 

this modifier is super simple and there are only three settings options, of which we only use the first two:

image.thumb.png.7b88d6a55813ad4413a433409cc35203.png

Curve: Use the eyedropper to select the curve object. Jumping ahead here, but it's important to call out that both the array and the curve modifiers must reference the SAME curve object to work properly. Pairing the array and curve modifiers to the same segment might be easy when there's only one rope and one curve but it gets confusing quickly on a ship. Thus its always good to have a specific naming scheama.

 

Deform Axis: Set dropdown to 'Z'

 

And that is the basic process in a nutshell. The next tutorial will cover texturing, then we will get into the difficult part after that, which is manipulating the curve path to where you want it. Like I said in the beginning, the challenging part is getting the curve. But for now, enjoy! Play around with the curve by tabbing into edit mode and dragging the handle around, or press 'e' to extrude a new segment.

 

image.thumb.png.7c7cf8b5595767e76ff64c4abfc70656.png

 

Till our Next!

-Nate

Posted (edited)

TUTORIAL ERROR FIX: Forgive me, but I left out one detail: If you followed the above instructions, your rope likely looks a lot thicker than mine. This is because when we scaled up the curve segment, the mean radius was turned up to 3, even when we applied all transforms. To fix this, select the curve, tab into edit mode, and press 'a' to select everything. In the properties panel (upper right-hand corner), change the 'Mean Radius' back to '1'.

image.thumb.png.4c263de1e64148eb41d36f464906d4a3.png

That should fix the problem.

 

-Nate

Edited by 3DShipWright
  • 2 weeks later...
Posted

3D Ropes in Blender - Part 3: Textures

Welcome back everyone.

 

In this part of the tutorial, we will texture our rope using textures from the poliigon.com website (no affiliation). Here's the link: https://www.poliigon.com/texture/fabric-rope-001/2339

Disclaimer: The images for this material were at one point offered for free, but I cant say for certian if they still are, as it just shows 'purchased' under my account. When I got them they also came with an unrestricted license, so DM me if you want me to share. That said, please consider checking out the other textures on the site and supporting the creator if you like them. 

 

Like all things in blender, materials and texturing are a rabbit hole in-and-of themselves. So if you are completely new to this, please check out my [now abandoned] texturing tutorial here:

 

When doing ropes, it's best to texture your rope segment before applying the array and curve modifiers. Why? Because you only have to do it once! Provided you use tileable textures and you correctly UV unwrap the rope segment (cylinder object), you can duplicate it for each curve on your ship, and the ropes will always look good.

 

Step #1. Workspace Windows

 

First, let's setup our workspace. By default, blender looks something like this:

image.thumb.png.aacc97cf83cb20286115ce38bf96793f.png

 

In addition to the 3D Viewport, Outliner, and Properties panels, we need to see the UV Editor and the Shader Editor. How you arrange your workspace is completely up to you, but if you hover your mouse at the corners, the cursor will turn into cross-hairs, allowing you to split the screen into additional windows, like so:

image.thumb.png.d887d9859442e3140a6a3bacfde47bb0.png

 

and after...

image.thumb.png.d69a3c4f8012b1f9ce4ee76f5f157268.png

 

We obviously don't need to see three of the same thing, so let's change the top-right workspace to be the UV editor, and the bottom-right workspace to be the shader editor. To do this, click on the top-left most icon in the windows, and select the UV editor and Shader editor from the drop-down, respectfully.

image.thumb.png.12cf4f3549ab7c7aa0c77ebe5bc7211d.png

 

then...

image.thumb.png.5e83958354fe944859343931cb6cfb37.png

 

and after...

image.thumb.png.3633c8dba7fa03d65082ff4cf671fd6f.png

 

 

Tip: hover your mouse somewhere over the Shader Editor window and press 'N' to hide the Active Tool sidebar - we won't be needing it for this tutorial.

 

Step #2. World Lighting

 

Add some sort of light to the scene via the 3D viewport, or toggle the Object/World lighting dropdown in the Shader Editor to setup environment lighting. I'll be using an HDR with Cycles rendering, but the setup of that is beyond scope of this tutorial. Failing that, Look Dev mode comes with some HDR's built in, but Look Dev is worse than Evee in showing the result of our work here.

 

Step #3. Create a New Material

 

Okay time to setup our rope texture in the shader editor.

First, click on the cylinder to select it, then click on the material properties icon in the Properties Editor panel (the red checkered ball icon, 2nd from the bottom)

image.thumb.png.d0df53c140aa8c3b08785b5c8d9696e8.png

 

Click on the bar with the word 'New' in it to create a new material.
image.thumb.png.cf5b56d672079ab66b44428e8987712a.png

 

Then, triple click on the 'Material.001' that gets added to the list to rename it to 'Rope', like so:

image.thumb.png.f755f8299a091d1a2a9c3555e3d776e3.png

 

Note that there are now two new boxes in the shader editor. We are now ready to import our image files into the shader editor and create our rope material. FYI - I'm going to break off here and resume with step #4 in the next post.

Best,

-Nate

 

Posted

Okay, so I've expanded the Shader Editor and have zoomed in to see the two boxes. The title of the two are "Principled BSDF" and "Material Output" The 'Material Output', as the name suggests, is the master output of our node. This is our always-on node, and 99% of the time, only the green 'surface' bus is used. For purposes of this tutorial, we can ignore the output box entirely. (note to advanced users I will be sticking to bump map workflows and will not be covering vector displacement, nor volumetrics, blackbodies, etc.)

 

So in the olden days, Blender had different shaders - with their own settings - that you'd use to create materials. At the time, you would use a different shader, or combination of shaders, to create something like glass or water than you would use to create a wood, fabric, or plastic material. Thankfully, a few years back, blender introduced the principled BSDF shader, which can be used for almost everything - from organic materials like skin, all the way to complex metals, and everything in between. So lets take a look at it...

image.thumb.png.451528428c3871814a6ac151afb4a305.png

Obviously, there's alot here, but we really only need to connect something to the 'base color' input to create a simple texture. So lets do that.

 

If you haen't already download your rope texture files and find the one that was meant to be the base color. This is super easy, as it will be the only image in the set that is in color, looks like a picture of rope, and is not bright purple (Normal map). Go to Add->Texture->Image Texture and a new bx will appear.

image.thumb.png.3b19dd41c77ed1cf08e7abd2d8fb005b.png

 

And after...

image.thumb.png.16ad3013aeba49a3f8137435525ef8fe.png

 

In the new image texture box, click on 'open' and blender with open a directory where you can browse to where you have your texture files stored.

image.thumb.png.29ac96e31f02de0148b9a4df3f3c698e.png

 

Once it loads, click and drag to draw a line that connects the 'color' output of your image texture node to the 'base color' of the Principled BSDF shader.

image.thumb.png.05f2f55ad3e2b39c68aa053a9b61ee91.png

 

We'll add the other images in a moment but I want to point out that even now, our rope is textured. To illustrate, I'm going to make the3D Viewport bigger, and change the Viewport Shading method to rendered (the top-right most circle icon in the viewport), as seen here.

image.thumb.png.9a788cb5648e790ae0ff117ba7d7bfa5.png

 

and after...

image.thumb.png.1e0c0358f7727fef930b361b536eae1d.png

 

So there's our rope - and with a texture... Just not very convincing at this point. Not to worry :)

***Continued in next post***

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...