Today, we’ll be addressing a limitation of the displacement modifier that I’m quite certain has impacted your workflow, perhaps leaving you puzzled about why it doesn’t behave as you’d expect.
Imagine you’ve created a model and now want to enhance its details using a displacement map. You’ve subdivided your mesh, applied a subdivision surface modifier to give it more volume for the details to adhere to, and placed the displacement modifier at the bottom of the stack.
But here’s the thing: no matter how much you subdivide or crank up the subdivision count with the subdivision modifier, you end up with these bizarre shapes. The shapes in your displacement texture just don’t seem to translate onto the mesh. You’ve heard all the advice: make sure you’re in cycles mode, double-check your UV unwrapping, try this, try that… A mix of helpful advice here and there and bunch of unrelated information that isn’t relevant to this problem at all.
You’ve meticulously followed every instruction, but it’s still not working. Why is that?
Why does not my displacement modifier work properly?
Let’s investigate the problem. In this screenshot, you’ll notice that I have two plane meshes. Both of them are being displaced by this brick texture I brought into Blender. What I’d like you to focus on are the values in the “transform” area.
If we take a look at the values for “Plane 01”, you’ll see that its location, rotation, and scale values are all set to zero (0) because I haven’t made any adjustments to this object’s position, rotation, or scale. Everything works as expected and all information on the screen is printed as intended.
Now let’s take a look at the second plane:
Since this plane has been moved, rotated, and scaled up, its transformation values have naturally changed – exactly as anticipated. However, as you’ve likely noticed, despite the second plane being larger than the first, we still observe the same degree of displacement. In reality, constructing the second plane’s wall would require more bricks, wouldn’t it?
How do we tell Blender Blender that the second plane is bigger? We apply the scale. What about the rotation? Then we apply the rotation. Location? You know how it goes.
But here begins the problem.
Let’s take a look at the screenshot above. I have applied my location and scale values for this mesh, and everything is working expected and yielding the expected result. But what happens, if I apply the rotation value as well?
Boom. We’re getting that weird artifacts / unwanted shapes rather than getting the shapes that are found in our displacement map.
But why is this happening?
This happens because the displacement modifier works with the original mesh data. The moment original mesh data value is modified, displacement modifier generates this kind of unwanted results. What I’m about to mention about seems like a solved issue, but applying scale in the past would also generate similar problems but it seems like Blender Foundation took care of this issue. Now this problem occurs only when the rotation of the object is applied but I thought it’s worth mentioning if you’re still experiencing issues with this modifier.
One final note, this limitation is persistent with the displacement modifier only, and does not apply to the material mode displacement method:
Note: If you cannot get the displacement node working, please ensure that you haven’t forgotten to switch to ‘Displacement and Bump’ in the ‘Surface > Displacement’ section. By default, it should be set to ‘bump only’.