I am very new to 3D surface/object design and rendering. My goal is to generate image data for testing computer vision algorithms.

I want to simulate/render a painted surface which is not completely smooth, so the light gets reflected differently in the close neighborhood.

enter image description here

I guess the most realistic way would be to handle this on geometry level, so to subdivide the surface in tiny surface parts and to shift the vertices randomly a bit in normal direction.

What would be the right approach to do this? Are there some kind of geometry shaders to do this? Could this be combined with freeform curves to make it smooth?

In the end I want to generate images very low distance between camera and surface, even closer than the attached picture. What I want to simulate is the scattered/fuzzy specular reflection region according to different camera/light positions.

Or are there even better ways or other tools than Blender to reach this image generation?


1 Answer 1


For this kind of effect it's very common to use normal maps. You don't want to use normal maps if the shape change is supposed to affect the silhouette of the object, that is, if the change in geometry can affect the ray hitting the object or not. This is why normal maps do very well on subtle changes like in your question, because it's very unlikely to have a camera at such angle and zoom that perfectly straight silhouette breaks the immersion as inconsistent with the texture of the material.

Normal map:

Node setup:


The detail in this case is a result of HDRI's resolution and normal map's resolution:

  • $\begingroup$ Awesome, thx for the nice answer! Should work very well in my case! $\endgroup$
    – Micka
    Jun 16, 2021 at 16:25

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .