Semi-Pro Procedural Wood Texture

Hello.
I’m a new user here or in any Blender forum.
I’m making procedural wood texture using material nodes. It is transplanted from my POV-Ray code.
I’m editing, testing it. The texture is composite by several generated ‘base’ pattern. I know how to generate such base pattern, but I don’t know much how to combine them or knowing coloring methods to produce a realistic wood texture.

I need to show them here. Any suggestions welcome.

2 Likes

The generated ‘base’ patterns that I said is like these:

annual ring pattern:

It is generated from ‘year-value’ pattern on the trunk.

Large circular pattern:

Thin fiber pattern:

Welcome!

What you have is already very realistic when it comes to the shapes of the rings and fibers.

For coloring, the color ramp node should work well. Just take the final grayscale texture and pass it through a color ramp. It will allow you to map a color gradient very precisely by brightness value. The exact position and color of each point will depend on your texture, so a bit of trial and error will be needed.

wood_1

Do I see a little bit of reflection in your screenshot? Are you trying to make varnished wood? If yes, you might get something more realistic going with darker brownish, yellow hues like in my screenshot. The color you have right now is not unrealistic, but is more what I would expect from freshly cut, non varnished wood.


Then, you could also try reusing the texture as bump. Keep the “distance” value really low, though, it should just add a little bit of subtle detail.

2 Likes

Your color is good. I’m using it. So, when the wood is varnished, its color getting darker?

Blockquote
Do I see a little bit of reflection in your screenshot?

I’m sorry. I’m not sure what are you meaning, my English is not very good.
I guess… I use specular 0.397, roughness about 0.2~0.5, using Principled BSDF.

Blockquote
Then, you could also try reusing the texture as bump.

Yes, I have add some bump. But maybe too small you cannot see (original ‘Distance’ 0.0004), I adjust it larger now.

1 Like

Another view. You can see the bumps on the surface.
But this view looks a bit strange on the big knot. My goal is to make realistic wood knots.

Background is a HDRI image downloaded from Poly Haven.

3 Likes

To get realistic knots, you would have to darken the “ring” pattern, but only where the knots are. I am not sure if this is possible to do automatically, because I don’t know how you made the pattern.

1 Like

It usually does get darker, especially if it’s done with traditional methods.

1 Like

Blockquote
To get realistic knots, you would have to darken the “ring” pattern, but only where the knots are.

It is an interesting point.
Thank you.

1 Like

How did you do the knots, actually? I’ve been searching for that knowledge all my life (metaphorically)…

2 Likes

Blockquote
How did you do the knots, actually?

I do the knots manual.
Here is an “5-knots” example.

I use mathematics functions to do these things. But, before you can do the knots, do you know how to construct a simple trunk pattern like const* sqrt(x^2 + y^2 + (z/b)^2) ?
I construct a base pattern like this. Then distortion it around the theta(angular).
Then multiply the distorion another special distortion to do the (single) knot.

1 Like

The concept is like this attached picture:

If apply to the x-y plane(not the whole 3D-pattern), just like the picture:
if the abs(theta - theta0) < knot_size/2, then use a rapidly function distort the main trunk pattern;
otherwise use 1.0 (no distortion effect) apply on it, so the trunk maintain the original circle pattern.

theta is the angle on the plane,
theta0 is the angular position of that knot center.

(This picture is generated by POV-Ray)

Basic trunk pattern is just like this:

simple trunk.blend (940.2 KB)

The effect is very similar as ‘Wave Texture’ . But if you want to generate more complex pattern (contain distortion, varying growth speed, knots) next, you should use the math function itself.

1 Like

Then, add first knot:

trunk with one knot distortion.blend (1.1 MB)

You can setting ‘knot_theta_pos’, ‘knot_theta_range’, ‘knot_h_pos’, ‘knot_strength’, ‘knot_power’ to adjust that (single) knot.

Currently it has a bug: when ‘knot_theta_pos’ is near at 0 (or 2*pi), it is not correct.

1 Like

Then, add addition two knots:

trunk with several knot distortion.blend (1.1 MB)

Similarly, you can setting the position of each knot, but shouldn’t too closely. If overlap, it will show bug.

1 Like

Blockquote
I am not sure if this is possible to do automatically, because I don’t know how you made the pattern.

Reluctantly.
I made one, it is not easy controlling the pattern, the darken surrounding is not 100% match the real wood knot.

From this view it is not bad.

2 Likes

This looks pretty good to me!

The final bit of realism I might add is to make the varnish lighten on sharp edges. This can be done by using an ambient occlusion node to mix between 2 materials.

Here is the example file.
wood_edges.blend (1.0 MB)

1 Like

Thank you for sharing these examples, this is very educational, and I had (k)not even thought it was possible really procedurally.

1 Like