Join Blender Studio for just €11.50/month and get instant access to all of our training and film assets!
Get the example file including the different shader variations here:
I'm so confused at around 37:00. In the video the displacement works well (also in the example file it works). But in my blend file, the displacement shifts up and down drastically and I just can't get it right. Big thx if someone replies! Here's my blend file (the shader named "wooden board" is the one that requires help): https://drive.google.com/file/d/1-JpHMJj2twouuSaqqOXbTH3DJ9a8CUhw/view?usp=sharing
@Eric need help desperately DX
@Eric perhaps you've already solved this or moved on, but I took a look at your blend file. In your Displacement node you have the Scale set to 1.000 whereas Simon has it set to 0.050 (and Midlevel set to 0.500 instead of 0.000). Also I think you need more vertices in your plane -- I saw only 4 vertices (the 4 corners) in your file, whereas I think the example file has over 1,000. You can do a loop cut in both the X and Y directions, in edit mode, with 25 or so cuts each to achieve this -- not sure if that is the most efficient way but that's how I was able to do it. Not having enough vertices caused me a similar problem in the dynamic wall workflow. The displacement looked pretty good to me in your file after making those changes.
@Brian Mnichowicz I'm using 4.1
(NOTE: I'm using 3.3) When performing the Round-to-Modulo operation at about the 11-minute mark, I was experimenting with different values and, for a reason I cannot figure out, it does not work with 7 (or, it seems, any multiples of 7, or any number that rounds to a multiple of 7). Giving a value of 7 results in 8 rows being shaded with the values 0, 1, 2, 3, 4, 5, 6, 7 and then looping down to 1, 2, 3, 4, 5, 6, 7, and then again restarting at 1. It seems to me it shouldn't reach a value of 7 at all and should loop back to 0, not 1.
@Geoffrey T. Blackwell As I experiment with this more, it makes less and less sense. When the "Width" value is sufficiently small for there to be dozens of rows, the looping pattern eventually breaks down with EVERY value I've tried (except zero, which does return a completely black surface).
@Geoffrey T. Blackwell Hm, for me this is working totally fine. The behaviour you're discribing sound a lot like a floating point precission issue to me though. When I set the snapping value to not exactly 1, but 0.9999 instead, I end up with the same result.
Try using the Floor
operation instead or try setting the snapping value to slightly above 1, like 1.0001
Something weird is happening to me...I reache dthe point where I created the high map for the boards, in the shader preview, that works like eevee if I got it correctly, look fine...but in cycles looks completely different
When a shader grows to this size, does the rendering time take a big enough hit that you would get better response by using a texture or, using a texture and baking? In Eevee or Cycles. Thanks
@Wayne Batchelor Yea, that's a tricky question. It really depends on what you are optimizing for, your specific requirements in terms of resolution and quality, the configuration hardware you are working with. Generally: Node-based shaders are heavier on the rendertime (CPU/GPU) and baked textures are heavier on the memory usage. But, of course, both methods have dis-/advantages apart from that.
There is no 'fits all' solution for this.
There's a point I'm still confused about and maybe you can enlighten me. I fail to understand, around 41min45 and onwards, how adding 1 prevents values from going below zero. When you say the values are "centered around 0" does this also imply they're necessarily locked between -1 and +1 (in which case I get how adding 1 centers them around 1), but if that's so I must have missed a decisive information because I don't get why they're locked between -1 and +1. Sorry for the probably very basic question.
@L-L The 'never below 0' was a bit of a slip on my part. If the negative values are scaled up enough, adding 1 will obviously not make them positive. The main takeaway to focus on here though is not to necessarily make all values positive, but to center them around one after the multiplication. That way, multiplying with 0 will make this tilt operation have also 0 impact on the height map.
@Simon Thommes Few I'm actually releaved because I've looked for all the possible ways that adding 1 would prevent having negative values and it took me quite a while and I still couldn't figure it out it was driving me crazy ! I totally get how centering around 1 is useful afterward, thanks for taking the time to answer.
That is being such a journey for me... spent 3 to 4 days only on this class trying to digest, apply and comprehend all the concepts here worked. Hardest part for me is mixing the height maps on the right order and positioning them correctly. Map Range Node is good but also difficult to grasp. Thank you Simon for sharing this deep knowledge with us!
Hi Simon, would it be possible for you to create a workflow example video covering the stone walls? I looked at the example file and the shader you created for the stone part of the walls is a bit overwhelming for me. I'd really appreciate it if you could explain it. Thanks!
@tredeau It is not planned to add more workflow examples for this scene. If you take a closer look, you can see that the nodetree for the stone walls is very similar to the wooden floor boards, that I explain in this video. In fact the only thing that is really different is the rock texture itself. The main part of the shader is the tile pattern, that is the same as what I explain in here.
I tried this shader on my own , I have a qusetion. I want to edge emphasize so i made geometry pointiness and map range node(from min:0.5, from max: 0.6) what you use in example2.
but It see just black (i see in cycle) so i think displaced object can't apply pointiness. Is it correct?
*@Aron* Correct, the calculation of the pointiness is done before the displacement and thus it does not affect it unfortunately. For emphasizing edges in the shader you would have to create a map of the edges as another pass youself.
Hi Simon, this is a bit weird
https://drive.google.com/file/d/1qrC2QUR1H6vn8QiOU4bgk3SQn1CEnuuq/view?usp=sharing
It looks fine when i use material preview, but as soon as i switch to cycles this happens
https://drive.google.com/file/d/1aqh7pbo2qVK8wELWHHpM9uWmtyJuruc9/view?usp=sharing
Can you tell me what do i need to fix? Thank you
*@victor p* As far as I can tell this might unfortunately be a restriction due to the complexity of the material. Can you tell me what graphics card you are using for rendering? And do you have the same issue when trying to render the resulting shader from this video that is linked in the description? I recorded the video using a GTX 1080.
*@Simon Thommes* I found the problem, its in the uv map node, if i uncheck the "from instancer" then the brick pattern appear.
*@victor p* Ah, interesting. Good to hear you figured it out!
*@Simon Thommes* Thank you
*@Simon Thommes* the floorboard example you attach on the description works fine in my computer
https://drive.google.com/file/d/1aE69vHxq1DQhO6ACah8uiUl3-VTpjFSc/view?usp=sharing
i also using gtx 1080. Any idea why? Here is the blendfile if you have time to take a look at it
https://drive.google.com/file/d/1H6zCRmCxyJlulWxMy_01ALK7T3oHmb36/view?usp=sharing
I was trying to do the first part on my own, and I came up with this method to divide the floor into squares, is there a problem with doing it this way?
It's basically just the same method yes? though not quite as compact
*@kroneborge* Awesome! That is totally valid. It is essentially the same method. I was doing it this way as well when we had very limited functionality on the vector math node.
I would recommend to still get used to the way of using vector math nodes though. Having a more compact node setup makes you node-tree much more readable and also flexible for quick changes.
Oof. This is quite complicated. I have a question though. How did you learn all that? I mean you are teaching us. But someone must've taught you in some way. Or are you reading the Blender Docs. I'm just curious on how you were able to get all this knowledge.
*@Kevin Tatar* I mostly figured things out on my own. A lot of this comes from math education and then trying to apply it to creating patterns. I like to figure things out myself but also when I started doing this sort of things with shader nodes the resources were really sparse. Now there is more, but as far as I know there still is no other comprehensive course for it. That's why I am making this series.
So I'm still playing around with this shader. Maybe off topic but at 8:49 is it possible to Snap the value to a step of 1 then 2 then 3 then 4... procedurally?
The math is "n(n+1)/2=1+2+3+...+n" but can't find a way to do that.
*@Huân Lê-Vương* Interesting question! The problem with the math is, that you first have to define, where the coordinates are split into cells. To be able to do that, you have to invert the equation: https://math.stackexchange.com/questions/2041988/how-to-get-inverse-of-formula-for-sum-of-integers-from-1-to-n/2041994
Then you can apply this operation to the coordinate and snap with an increment of 1: https://cloud.blender.org/p/procedural-shading/5f56001df17d08c945d84c71
*@Simon Thommes* So I tried to create a cell system based on the math (1x2x3 / 2x3x4).
As we use a square root operation, the value is shifting a bit when I try to create a heigth map for the woods.
Is there anyway to "compensate" that?
*@Huân Lê-Vương* You have to build your new coordinate value in a way that it is linear in each segment. For example by using the initial coordinate and shifting and scaling it for each cell accordingly: https://cloud.blender.org/p/procedural-shading/5f58c924b85c2deba4fb2a47
*@Simon Thommes* Thanks for you reply. I can't reach the link though.
*@Huân Lê-Vương* I fixed the link, it should work now
This is the X value of the vector before fraction operation:
X=sqrt[x*n(n+1)+1/4] -1/2
x: the separated x from the generated coordinate.
I tried to "inverse" that.
*@Simon Thommes* Thanks! I have to admit that I've been addicted to procedural shader and math stuffs since I watched your tutorials!
*@Huân Lê-Vương* Awesome to hear!
I found it's easier to use bump for the bolts and the variation. this tutorial cover a lot of thing, thanks again!
Hello, how can I see the subdivision overlay at 33:51?
*@Huân Lê-Vương* There I simply went into edit mode. If you want to be able to see the wireframe in object mode you can also activate it as a viewport overlay.
*@Simon Thommes* thanks.
For some reason at (30:25) the hide value option is missing in my node interface. Thank you for making this series, I've really struggled with understanding the node trees and this has helped a ton!
*@Jonathan DelleCave* Thank you for pointing this out! This is a feature that is new in Blender 2.90. I did not realize this at the time of recording, but luckily Blender 2.90 is going to be released later today. I'm glad the course is helping you!
Hello, my UV doesn't look like yours. I use the deafult cube and only scale the Z.
edit: oh it should be a plane
*@Huân Lê-Vương* Yes, I'm using a plane, but you can also use a cube and align the UVs accordingly
"the first thing again is... i'm just deleting the material" almost gave me a heart attack :v
Thanks for updating and sharing! This series helps me a lot with the understanding of not only the shader system in Blender but all the other shader principles covered in the remain 3D software such as UE, MAYA, Unity, 3DS, etc.
Join to leave a comment.