I work with a lot with LEGO blocks and the last variable in creating photo realistic scenes is getting the specular mapping to look right across the surface of all my blocks. When I apply smooth shading each block gets its own lighting gradient which looks bad. Even after I join the objects together the smoothing stays the same.

Is there a way to work some node magic so that the surface of the two right blocks is more similar to the cube on the left? I'm just using basic colors with the Principled BSDF.

I've tried messing with flat normal maps, tangents, unwrapping, and plugging everything into everything with no luck.


  • $\begingroup$ I would like to add that there is a bevel modifier on both of these objects. $\endgroup$ – J Dryden Mar 5 '19 at 21:00
  • $\begingroup$ Does this have a subdivision-surface modifier? If not, maybe try Smooth Shading + Auto Smooth enabled (In the Mesh properties panel under Normals) $\endgroup$ – aglet Mar 5 '19 at 21:16
  • $\begingroup$ No sub-surf. I just tried Smooth Shading + Auto Smooth again with no change. $\endgroup$ – J Dryden Mar 5 '19 at 21:35
  • $\begingroup$ May we see a project file? $\endgroup$ – aglet Mar 5 '19 at 21:40
  • $\begingroup$ The above example is literally from a default file with very minimum alteration to illustrate the desired result. I don't think anything is broken in Blender but I'll provide a file that illustrates the problem further. dropbox.com/s/xoj2ts8u12arwj4/TestFile.blend?dl=0 $\endgroup$ – J Dryden Mar 6 '19 at 16:41

Gradient across object:

We can map a gradient to generated texture coordinates on the joined object to smoothly display a gradient on the surface of our mesh.

enter image description here

You may also choose to make a material that has the gradient mapped to the height of the object. This method allows for each lego brick to be an idividual object as long as the have the same origin. The drawback of this method is that when transformed(scaled, translated, or rotated) the gradient will remain the same and not move with the objects transformation.

enter image description here

enter image description here

Post on Auto-Smooth:

I believe the problem you're encountering is not a material or UV issue but rather a modeling issue. Blender is shading the whole object as if it was smooth not retaining sharp edges. This is what is adding this specular highlight in the middle of your faces. By either using custom normals, marking sharps, using auto-smooth, an edge-split modifier, or a combination of these techniques, you can define and preserve what you want as sharp edges.

One of the easiest and most convenient ways to achieve this is auto-smooth which the Blender manual describes as

Auto Smooth: Edges where an angle between the faces is smaller than specified in the Angle button will be smoothed, when shading of these parts of the mesh is set to smooth. This is an easier way to combine smooth and sharp edges.

The edge-split modifier works very similar but it actually 'rips' the edges from one another according to given angle.

enter image description here

  • $\begingroup$ So is there no way to get the gradient that is on the individual faces on the bottom models across the surface of the top model as if it was one face? Like pick any individual rectangle from the bottom with the highlight at the upper right and the spherical gradient at the other corners and apply that same gradient across the surface of the top model. The auto smooth and edge split are essentially giving me flat shading on those faces. $\endgroup$ – J Dryden Mar 6 '19 at 20:02
  • $\begingroup$ Sorry, I initially misunderstood your problem and wasn't able to discern that there was a gradient on the image that you posted. Please let me know if the edited post is helpful. $\endgroup$ – aglet Mar 6 '19 at 21:39
  • $\begingroup$ I think the gradient is a result of the smooth shading on the faces. The issue is the smooth shading effect is on each individual face, creating many highlights and shadows when the faces are on the same plain. I think adding a color ramp would be a good way to fake the effect, but the auto smoothing is the proper way to shade the object in the first place. What I think I'm looking for is using the normals map of a single face and sharing it across all the faces as a whole so that there is only one area of highlights and shadow instead of for each face. $\endgroup$ – J Dryden Mar 9 '19 at 13:45
  • $\begingroup$ I've added another image so you can see the single specular highlight as well as a cast shadow. This was using the same techniques as mentioned above, I have only adjusted the orientation and position of the lights. I hope this is what you've been looking for, my previous images just haven't had a bright highlight on there. Please let me know if this is what you're trying to accomplish, or am I still off? $\endgroup$ – aglet Mar 11 '19 at 16:50
  • $\begingroup$ Sorry about the long delay in responding to this thread. The problem was solved with the Auto Smooth but I didn't know until I set it to 20 degrees (a few months later after trying to solve the same issue). Smooth shading is the culprit. $\endgroup$ – J Dryden May 17 '19 at 15:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.