I am totaly new in Blender.

How can I access the normal maps of an object in such a way to have their x, y and z values?

  • $\begingroup$ Are you talking about extracting a Normal Texture from another model, or are you attempting to bake the normal information onto a texture? $\endgroup$
    – Kirbinator
    Apr 27 '16 at 17:17
  • $\begingroup$ @Kirbinator Thanks for your replay, I want to get the direction of normal vectors of each pixel. As I know, the normal maps provide the direction of normals in the RGB values of an image. Does it mean that I should bake the normal information onto a texture? What is baking? $\endgroup$
    – Ali
    Apr 27 '16 at 17:25
  • $\begingroup$ "Baking" is the process of pre-computing information to save processing time. Baking normals to a texture allows for the details of a very high poly model to be rendered on a very low poly model. See: blender.org/manual/render/workflows/… $\endgroup$
    – Kirbinator
    Apr 27 '16 at 17:38
  • $\begingroup$ Ali, normal maps are usually in tangent space, which means they store data relative to the surface. Perhaps if you explain what you intend to use the normal map for, you will get a more helpful response. $\endgroup$
    – Xtremity
    Apr 27 '16 at 18:48

You can access the normal data for your mesh object via the Texture Coordinate input node. From there you can manipulate the vector data with various other vector nodes.

enter image description here

  • $\begingroup$ If you want to refine your question to be more specific, I can update my answer. $\endgroup$ Apr 27 '16 at 18:12
  • $\begingroup$ @ Todd McIntoch. Many thanks for your answer. I want to get three elements of normal vector for each pixel of an image (rendered from my object in blender). So, if the normal vector of pixel (x,y) in the rendered image with intensity I(x,y)shown with N(x,y)=(n1(x,y), n2(x,y), n3(x,y)), I want to have n1(x,y), n2(x,y) and n3(x,y) for each pixel (x,y). It would be better if I can have these three elements of normal vector in 3 images ( I guess, Normal map produces it: meaning n1(x,y) as the Red channel of an RGB image, n2(x,y) as the Green channel of that RGB image, and n3(x,y) as the Blue ). $\endgroup$
    – Ali
    Apr 28 '16 at 7:30
  • $\begingroup$ Can you not just use the Normal Render Pass if you need the info post-render? Just isolate your object on it's own render layer and enable the Normal pass. $\endgroup$ Apr 28 '16 at 7:39
  • $\begingroup$ McIntoch. Thanks again. I 'll check it. I guess enable the normal pass means the process you mentioned in texture coordinate input node? and how can I isolate my object on it's own render layer? $\endgroup$
    – Ali
    Apr 28 '16 at 7:54
  • $\begingroup$ No my original post was showing how to use the object's normal inside a material set up. If you want the rgb values of the normal in image format after the frame is rendered you have to access it differently. In the Render Layers panel, you can create multiple layers, each can have different passes enabled (Z, Mist, Normal). You can either leave your whole scene on one layer and enable the normal pass or create a second layer just for the object you want the normals for and enable that pass for that layer. $\endgroup$ Apr 28 '16 at 16:58

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.