Making Wood Planks in Blender for 3D Printing
I've been wanting to make some 3D Printable terrain that involves wooden boards, but I was really struggling with how to get a good wood-grain texture without sculpting it by hand. After a lot of trial and error, I've invented a process that I'm really happy with! Well, I've probably re-invented it, as I'm sure plenty of people have done this before... but since I wasn't able to find any of their tutorials, I figure that I'll just take the credit and write my own!
When making wooden boards or planks to be 3D printed, you've got to strike a careful balance. Too little wood-grain ends up just looking like stripes, but too much ends up as an unprintable mess. I think that the sweet spot for board width is anywhere between 5 mm and 8 mm, with grain lines that are about 0.4 mm wide and 0.3 mm deep. From what I've seen, those measurements have resulted in nice distinct lines that have printed really well (although I'm sure that they can be tweaked to suit your needs), so that just leaves us with the question of how to make them!
I tried a lot of different methods, but my favorite was to draw the woodgrain with a series of bezier curves and then use a Boolean Difference modifier to cut it out of a flat board. Here's how I do it!
I started by opening a new file in Blender and hitting shift-A and selecting Curve -> Bezier, to add that bezier curve to my screen. I then went into Edit mode and moved the handles around until I had a long, gently curving line: one line of the wood grain. To add some complexity, I pressed e to extrude another vertex at the end of my curve, leaving me with a simple slightly-wavy line.
With that first line of my wood grain drawn, it was time to give the line some girth, so that I'd have an idea about the scale of the woodgrain that I was drawing. So, I dropped back to Object mode and drew my bevel object (which will be the cross-section of the curve). I pressed shift-A again and went to Curve -> Circle, then set the radius of that circle to .2 (so that I'd end up with a .4 mm diameter, for the cutting later).
The next step was to make that circle into the Bevel object for my woodgrain line. To do that, I selected the line and then went to the Data tab (right next to where you set up modifiers). On that tab, I selected my circle as the Bevel Object. You can do that by either clicking the eyedropper icon and then clicking on the circle, or by clicking in the box and selecting the circle from the dropdown list. I also enabled the Fill Caps checkbox a bit lower down, which will help us to turn this into a cutting object later.
Now that I had some idea about how wide my woodgrain cuts were going to be, it was time to go crazy with drawing in the rest of the grain. With my woodgrain line selected, I went back into Edit mode and went to work. I pressed shift-A and added another Bezier, and another, and another... setting each one up so that they were roughly parallel, but only in that sortof parallel way that woodgrain is. To make knots in the wood, I added a Circle instead of a Bezier and adjusted the control points to make it a bit oblong. Here's what I came up with:
It's a big messy network of lines! But, I think that you can see where I'm going with this. Right now, each of those lines is a circle with a diameter of .4 mm. I want my lines to me .4 mm wide, but I also want them to be .3 mm deep, so this isn't going to work for me... yet! The solution is trivial: just scale the thing! In Object mode, press s z 1.5 to scale the object on the z axis (I'm looking down along the z axis in this screenshot; if you drew your lines along some other axis, you'll need to use that axis instead) to 150%. That gives me a circle with a .3 mm radius on the Z axis, but a .2 mm radius on the XY plane. Next, I finished my woodgrain "stamp" by pressing alt-c and converting it to a Mesh.
Now that the woodgrain pattern cutout was built, it was time to make some actual boards! To do this, I pressed shift-a (while in Object mode) and selected Mesh -> Cube to add a new cube to my workspace. I then went into Edit mode on this cube and moved it around. The first thing that I did was to select it all (jam on the a key a few times until everything's highlighted) and move it up so that one corner was at the object origin, instead of the center of it. I pressed g x 1 g z 1 g y 1 to move it 1 unit on all 3 axis, giving me an easy local coordinate system to work with.
Then, I did some math to figure out how wide I wanted this board to be. I was working on a piece that would be 76 mm wide and I wanted 12 boards, so I knew that each board would need to occupy 6.333 mm of space. I wanted wider gaps between my boards than the lines of my woodgrain pattern (to help them stand out better). I figured that anywhere between 0.5 mm and 0.75 mm would work fine, so I decided that my individual boards would be 5.7 mm wide (which would leave a 0.633 mm gap between the boards).
Since, I knew that my board would be 5.7 mm wide, I selected the face of my cube on the x axis (that wasn't at 0) and, in the n data panel, set its local position on the X axis to 5.7. I decided that a 20 mm long board would suit my needs nicely, so I grabbed the face on the Y axis and did the same thing to slide it up to 20. Finally, I decided that I wanted each board to be 1 mm thick, so I slid the Z face down to 1, leaving me with a nice, boring board.
Since I knew that the top face of my board (the one that's gonna get the woodgrain texture) is at 1 mm, I moved my woodgrain lines to 1 mm on the Z axis (I did this the same way that I moved the faces of my board, just done in Object mode with those lines selected). With those lines in place, I went back to my board object and added a Boolean Difference modifier onto it, selecting the woodgrain as the difference object.
That modifier doesn't really do much just yet, does it? That's ok, because this is my favorite part of this whole process and why I'm so excited to share it! The next step is to duplicate the board object, so hit shift-d, then drag that duplicate somewhere into the woodgrain pattern. It helps if you're looking directly down an axis when doing this (because you've already got everything all lined up); since my woodgrain was drawn while looking down the Z axis, I pressed numpad-7 to look down that same axis during this step.
Find somewhere that you like in the woodgrain pattern for your board, then press alt-c to convert it to a mesh (which will apply the Boolean Difference modifier that was set up earlier). Then, drag your board clear of the woodgrain stamp and admire your work. Then, duplicate another board and give it another unique woodgrain pattern from some other part of your stamp. Then, do it again and again until you have as many unique boards as you need for your project!
And there you have it, an easy way to generate as many unique woodgrained boards as you could possibly need for a project! Another nice aspect of this is that you can easily generate boards of different size if you need to, like if you made a mistake and accidentally made this whole thing 78 mm wide instead of 76 mm on your first try. Not that I'm speaking from experience or anything ;)
When making wooden boards or planks to be 3D printed, you've got to strike a careful balance. Too little wood-grain ends up just looking like stripes, but too much ends up as an unprintable mess. I think that the sweet spot for board width is anywhere between 5 mm and 8 mm, with grain lines that are about 0.4 mm wide and 0.3 mm deep. From what I've seen, those measurements have resulted in nice distinct lines that have printed really well (although I'm sure that they can be tweaked to suit your needs), so that just leaves us with the question of how to make them!
I tried a lot of different methods, but my favorite was to draw the woodgrain with a series of bezier curves and then use a Boolean Difference modifier to cut it out of a flat board. Here's how I do it!
I started by opening a new file in Blender and hitting shift-A and selecting Curve -> Bezier, to add that bezier curve to my screen. I then went into Edit mode and moved the handles around until I had a long, gently curving line: one line of the wood grain. To add some complexity, I pressed e to extrude another vertex at the end of my curve, leaving me with a simple slightly-wavy line.
With that first line of my wood grain drawn, it was time to give the line some girth, so that I'd have an idea about the scale of the woodgrain that I was drawing. So, I dropped back to Object mode and drew my bevel object (which will be the cross-section of the curve). I pressed shift-A again and went to Curve -> Circle, then set the radius of that circle to .2 (so that I'd end up with a .4 mm diameter, for the cutting later).
The next step was to make that circle into the Bevel object for my woodgrain line. To do that, I selected the line and then went to the Data tab (right next to where you set up modifiers). On that tab, I selected my circle as the Bevel Object. You can do that by either clicking the eyedropper icon and then clicking on the circle, or by clicking in the box and selecting the circle from the dropdown list. I also enabled the Fill Caps checkbox a bit lower down, which will help us to turn this into a cutting object later.
Now that I had some idea about how wide my woodgrain cuts were going to be, it was time to go crazy with drawing in the rest of the grain. With my woodgrain line selected, I went back into Edit mode and went to work. I pressed shift-A and added another Bezier, and another, and another... setting each one up so that they were roughly parallel, but only in that sortof parallel way that woodgrain is. To make knots in the wood, I added a Circle instead of a Bezier and adjusted the control points to make it a bit oblong. Here's what I came up with:
It's a big messy network of lines! But, I think that you can see where I'm going with this. Right now, each of those lines is a circle with a diameter of .4 mm. I want my lines to me .4 mm wide, but I also want them to be .3 mm deep, so this isn't going to work for me... yet! The solution is trivial: just scale the thing! In Object mode, press s z 1.5 to scale the object on the z axis (I'm looking down along the z axis in this screenshot; if you drew your lines along some other axis, you'll need to use that axis instead) to 150%. That gives me a circle with a .3 mm radius on the Z axis, but a .2 mm radius on the XY plane. Next, I finished my woodgrain "stamp" by pressing alt-c and converting it to a Mesh.
Now that the woodgrain pattern cutout was built, it was time to make some actual boards! To do this, I pressed shift-a (while in Object mode) and selected Mesh -> Cube to add a new cube to my workspace. I then went into Edit mode on this cube and moved it around. The first thing that I did was to select it all (jam on the a key a few times until everything's highlighted) and move it up so that one corner was at the object origin, instead of the center of it. I pressed g x 1 g z 1 g y 1 to move it 1 unit on all 3 axis, giving me an easy local coordinate system to work with.
Then, I did some math to figure out how wide I wanted this board to be. I was working on a piece that would be 76 mm wide and I wanted 12 boards, so I knew that each board would need to occupy 6.333 mm of space. I wanted wider gaps between my boards than the lines of my woodgrain pattern (to help them stand out better). I figured that anywhere between 0.5 mm and 0.75 mm would work fine, so I decided that my individual boards would be 5.7 mm wide (which would leave a 0.633 mm gap between the boards).
Since, I knew that my board would be 5.7 mm wide, I selected the face of my cube on the x axis (that wasn't at 0) and, in the n data panel, set its local position on the X axis to 5.7. I decided that a 20 mm long board would suit my needs nicely, so I grabbed the face on the Y axis and did the same thing to slide it up to 20. Finally, I decided that I wanted each board to be 1 mm thick, so I slid the Z face down to 1, leaving me with a nice, boring board.
Since I knew that the top face of my board (the one that's gonna get the woodgrain texture) is at 1 mm, I moved my woodgrain lines to 1 mm on the Z axis (I did this the same way that I moved the faces of my board, just done in Object mode with those lines selected). With those lines in place, I went back to my board object and added a Boolean Difference modifier onto it, selecting the woodgrain as the difference object.
That modifier doesn't really do much just yet, does it? That's ok, because this is my favorite part of this whole process and why I'm so excited to share it! The next step is to duplicate the board object, so hit shift-d, then drag that duplicate somewhere into the woodgrain pattern. It helps if you're looking directly down an axis when doing this (because you've already got everything all lined up); since my woodgrain was drawn while looking down the Z axis, I pressed numpad-7 to look down that same axis during this step.
Find somewhere that you like in the woodgrain pattern for your board, then press alt-c to convert it to a mesh (which will apply the Boolean Difference modifier that was set up earlier). Then, drag your board clear of the woodgrain stamp and admire your work. Then, duplicate another board and give it another unique woodgrain pattern from some other part of your stamp. Then, do it again and again until you have as many unique boards as you need for your project!
And there you have it, an easy way to generate as many unique woodgrained boards as you could possibly need for a project! Another nice aspect of this is that you can easily generate boards of different size if you need to, like if you made a mistake and accidentally made this whole thing 78 mm wide instead of 76 mm on your first try. Not that I'm speaking from experience or anything ;)
Thank you so much for this tutorial! I will be trying it out tonight. I have been looking everywhere for this information. I am trying to create a viking shield for my action figures and the wood grain would take it to the next level!
ReplyDeleteThanks for making this tutorial! I was going crazy with Blender, trying to figure it out how to create the wood gran lines.
ReplyDeleteYou're welcome - and thank you for the feedback! I'm always glad to know when one of my posts helps someone out =)
DeleteTake note that this was written for Blender 2.79, so some of the shortcuts and interface stuff has changed. The basic technique is still sound though (and is still what I do when I need some wooden planks)!