Page 1 of 3 123 LastLast
Results 1 to 20 of 54

Thread: Normal Maps

  1. #1
    Member Lancer's Avatar
    Join Date
    Jan 2006
    Location
    New Zealand
    Posts
    2,809

    Normal Maps

    Normal maps are cool. They are blueish textures which work like (but are more accurate than) bumpmaps... apply them to a model and they add bumpy textures & displacement to the surface. This makes it possible to have a low resolution model look like it is a high resolution model, but without the major strain on CPU resources.



    In this tutorial, you will how to make a Normal Map of a high resolution model, and apply it to a lower resolution model so that it looks like the high resolution version.

    I am assuming you know the basics of Blender, including how to UV unwrap and also Sculpt mode. The tutorial would be too long if I explained those parts so it's better for you to follow other tutorials on those areas until you are ready for this one.

    So then; the workflow is you are going to start with a low poly model, make a hi-poly copy of the mesh, sculpt in detail and then create a Normal Map to display the high definition detail on your low-poly character.

    First, we need a low resolution model. I'm going to use Suzanne (monkey head) for the images here, although she's not ideal because her eyes are separated polys which form nearly overlapping faces against her face, which will likely be troublesome for Normal Mapping. Where possible use a simple base mesh without sandwiched faces.



    STEP 1: UV unwrap the low poly model.


    I shouldn't need to tell you how to do this. Add seams, Unwrap, and then rearrange the islands on your UV layout. Don't rush this stage. Normal Maps are affected by the quality of your UV layout.



    Make sure the low poly mesh has an image associated with it from the UV editor. While in EDIT mode, assign a "new image" in the UV editor as needed (and presave it). This new UV image is now set up and ready for baking, a process which comes shortly.


    STEP 2: Create low and high poly versions.

    Make a copy of your mesh. Name one "Suzanne_high" and then the other "Suzanne_low". Move Suzanne_low to a different layer out of the way, but don't change the physical (x,y,z) position as they will later need to be in the same location when making the Normal Map.






    STEP 3: Sculpt the high poly details.


    As with UV mapping, Sculpt mode should be familiar to you. Be careful on excessive use of the "grab" function (you can't normal map hooks). You should be looking to add fine details like muscle bulges, cloth wrinkles, skin textures and so forth. Save as you go, and allow yourself to detail as much as your computer will allow.




    STEP 4: Create the Normal Map

    At last you are ready.

    SHIFT-select both the high and low poly models (the low poly should be selected last). You could move the low poly model to the same layer as the high poly version to do this, but SHIFT-enabling both layers also works just as well and keeps them easily separate.

    Now you need to bake (Scene (F10) => Bake options) with the following settings...


    • The Bake should be set to "normals" (not "full render")
    • Make sure "Selected to Active" is activated. This compares the high poly one mesh against the low poly mesh in order to work out surface displacements.
    • Normal space should be set to "tangent". This will generate a Map that allows for the object to be animated (e.g. change rotation). Older methods could only make Normal Maps for stationary objects where only the lighting positions could change.

    Now hit the big "BAKE" button and you should see your new and blue UV map generate. (I like using 1024 sized maps for reasonable resolution)


    Save the map when you are done.


    STEP 5: Apply the Normal Map to a low poly figure.

    This is easy. Simply apply the newly saved image as a texture.

    Under Shading (F5) => Materials (red ball icon)



    Under "Map input" change the projection setting from "Orco" to "UV".



    Under "map to" the default is "Col" (diffuse colour). Change this to "Nor" (normal, or bump).



    To make the Map work as a Normal Map instead of a Bump Map, under Shading (F5) => Texture (F6) (the leopard skin icon), under "Map image" panel, hit "Normal Map" and select "Tangent" from the next droplist.

    Your render should now show the low res model with all the bumps that the high resolution sculpt has. For a better result, you may want to apply a Subsurf modifier to the model, and turn off "hard edges".


    As you can see, this low poly mesh now looks very similar to the higher poly sculpted version.

    A small note: Yes, I did cheat a little on this final image. Observant readers would note that my final result has a smoother outline than the original low-poly version. This is because I added a Subdiv modifier to the final resulting mesh. Depending on your model, or the context (still shot, game or animation) this is not always necessary.
    Another small note: Normal maps are super sensitive and will even pick up on subtleties like "set smooth" versus "hard edges"... I'll lead the reader to experiment with these options and keep this tutorial as an outline of the base process. For most purposes, you should have the low poly mesh edges as "set smooth".

    There may be areas where the mesh needs to be tidied up (some show as patches in the UV editor). There are probably various ways to do this, from rehashing the sculpt, to hacking the texturemap in Photoshop / Gimp. I wanted to show the technique for now, may troubleshoot solutions for those at a later time.



    As a bonus in the new Blender (2.48) you can go to the top menu "Game => GLSL materials" and show a 3D window as "textured" to show the textured mesh in close-to final render quality in your 3D view. The surface also looks good in game mode, but be sure to delete the high res model before hitting P to activate game mode, or you could hang up the computer trying to calculate the high poly mesh.

    So that's it. Now you can use Normal Mapping to give your low resolution meshes some high resolution punch, without compromising heavily on animation render times.
    Last edited by Lancer; 23-Apr-09 at 22:10.



  2. #2
    Member Lilgrudgeboy's Avatar
    Join Date
    Dec 2007
    Location
    Hell
    Posts
    2,221
    Thank you so much for this tutorial! now i might be able to make something usefull with this!!
    "Haa! I dont have to kill anyone, its all up here. Believe me, if i started killing people there be none of ya left."



  3. #3
    Thank you very much. This tut is very helpful. Is the displacement map work the same way?



  4. #4
    Member Lancer's Avatar
    Join Date
    Jan 2006
    Location
    New Zealand
    Posts
    2,809
    Sort of. I haven't used displacement maps much, though I think the difference is that a displacement map pushes the existing geometry by moving the vertices during render time. It's slow, and you need to have a high resolution object to apply it to. Useful context would be to have an animated cloud texture causing waves in a grid (plane with lots of vertices).

    Someone might correct me on that... I think I may have seen someone using a displacement map recently on a low poly mesh and it seemed to work fine (???)

    A "normal" on the other hand, is more bump map; each face stays as one face but shines light as though it was bent. Ordinary grey scale bump maps basically affect specular highlights etc as the light flashes past. A "normal" map like in this tutorial is like adding another dimesion to the old greyscale bump maps. Because these new ones are in colour, you can separate the chanels in to red, blue and green, each showing the height influence from a new direction (x,y and z). Therefore, the blueish normal maps are much more accurate than the older greyscale bump maps.



  5. #5
    Member almux's Avatar
    Join Date
    May 2007
    Location
    Switzerland
    Posts
    2,021
    Thanks! This will help me a lot the day i'll start to unwrap without making a complete mess out of it! ;o



  6. #6
    Thanks Lancer. I know exactly mhat you mean when you speak about displacement. My idea is to work as I work with max and Vray and create microdisplacement on my object to get a verry good result. But this is not the subject of this thread. So if I need to use that I will search after that before posting her and certainly give some explanation if I found the solution by myself.



    Edit:

    Your tutorial work fine for me. All the test give me a good result.
    Last edited by tre1z3; 24-Oct-08 at 11:30.



  7. #7
    Member
    Join Date
    May 2007
    Location
    GerMoney
    Posts
    21
    Thank you. Really well explained.



  8. #8
    Member
    Join Date
    Sep 2007
    Location
    Viņa del Mar, Chile
    Posts
    1,033
    A little detail you forgot to mention, or maybe it was just my own ignorance, is that both objects (low and high), MUST be in the same place, if not the normal baking will be made really strange (like some kind of reflection).



  9. #9
    Member Lancer's Avatar
    Join Date
    Jan 2006
    Location
    New Zealand
    Posts
    2,809
    Thanks for the feedback everyone.

    Originally Posted by Cloud_GL View Post
    A little detail you forgot to mention, or maybe it was just my own ignorance, is that both objects (low and high), MUST be in the same place, if not the normal baking will be made really strange (like some kind of reflection).
    I did say that, in step 2: but don't change the physical (x,y,z) position as they will later need to be in the same location when making the Normal Map.

    I might have made it a little clearer by explaining that the geometry does not have to be the same. It can even be completely different. For example, you can make a Normal Map from a monkey mesh to a cube... it still works to "close proximity" of the shapes.



  10. #10
    Member logunwhite321's Avatar
    Join Date
    Jan 2008
    Location
    THARGIUNE
    Posts
    175
    that gives me an idea of how to sculpt then normal bake then reply it to my low polygon mesh ah ha !



  11. #11
    Member Lancer's Avatar
    Join Date
    Jan 2006
    Location
    New Zealand
    Posts
    2,809
    Hey logunwhite321.

    Yes, that is the workflow. You start off with a low poly one, make a duplicate of it and then sculpt the copy as hi-res. Then, you make a normal map of one against the other (SHIFT-selecting them both). The Normal Map creates a UV layout of the differences. When this is applied to the low-res map... it ends up looking like the hi-res one.

    Side note: Aha! Another Kiwi Wellingtonian.
    Last edited by Lancer; 25-Oct-08 at 20:56.



  12. #12
    Thanks for this it was really clear, and I'd been wondering how it was done for a while.
    'Kicked outa mensa for being a smart arse'



  13. #13
    Member
    Join Date
    Sep 2007
    Location
    Viņa del Mar, Chile
    Posts
    1,033
    I did say that, in step 2: but don't change the physical (x,y,z) position as they will later need to be in the same location when making the Normal Map.
    TRUE! XD
    Sorry my bad.



  14. #14
    Member hhoffren's Avatar
    Join Date
    Nov 2006
    Location
    Kuopio, Finland
    Posts
    295
    Good tutorial Lancer, thank you!



  15. #15
    Member AD-Edge's Avatar
    Join Date
    Apr 2006
    Location
    South Australia, Adelaide Hills
    Posts
    2,309
    Thanks for this tutorial, very handy stuff to know.

    Its a very simple and easy to follow tutorial, im now making normal maps very easily, they look great!
    || FB Page || BGE Subreddit ||
    YouTube || Insta || Twitter
    -Focus To Achieve-



  16. #16
    Member poison's Avatar
    Join Date
    Jan 2006
    Location
    Hungary
    Posts
    156
    Normal maps ARE bumpmaps. They are not bluish by all means. Tangent space versions are. They are usable for animated objects, and they can be compressed well, that's why they are used most commonly by the game industry. They don't add displacement to the surface at all. You can use separated surfaces in the lowpoly mesh by generating the normal map separately for the parts and mixing the results in a paint program (with Blender's stencil maps + bake, or the new clone stamp in recent builds you can do the same inside Blender) When unwrapping the lowpoly mesh, you should take care of the UV islands. Seams HAVE TO be hidden as possible, because most realtime engines can't remove the glitches generated by different UV edge angles. The vertex normals of the lowpoly version SHOULD be smoothed as possible. It affects the generated map. Don't forget that normal maps have only sense together with known vertex normals!

    Normal maps are fine for realtime usage but for quality rendering use displacement maps!



  17. #17
    Member logunwhite321's Avatar
    Join Date
    Jan 2008
    Location
    THARGIUNE
    Posts
    175
    In order for this to work you have to save your simply low polygon character and then do all the detail bake it then go back to the simple model and then place it on the uv for the low poly that's something i have to do?where can we find tutorials?

    I want to do this for games not animation.



  18. #18

    normal hmm

    i suspec that i cannot do normal maaping with the graph card i have and the bug on the video driver i have on my pc

    do you have a small test file that you could upload with a pic showing before and after effect so tht i can make a test to see if normal mapping is working on my pc

    i did the example in the wiki but it did not worl and there was another tut on normal mapping on CG smething and it also fail to show any normal mapping as shown in the tut!

    so i would appreciate a lot

    happy blendering

    Thanks



  19. #19
    Member
    Join Date
    Jun 2006
    Location
    Texas
    Posts
    1,000
    Ok I'm a little bit suspicious here. My understanding is that even with a bump map, an objects silhouette will remain the same. So why is it that in your final image, it has a smoother silhouette than the low poly one did?



  20. #20
    Member
    Join Date
    Aug 2006
    Location
    Wellington NZ
    Posts
    425
    Originally Posted by LazyCoder View Post
    Ok I'm a little bit suspicious here. My understanding is that even with a bump map, an objects silhouette will remain the same. So why is it that in your final image, it has a smoother silhouette than the low poly one did?
    Yes, it does have a smoother silhouette, but they are different images. I think there was a subsurf applied we were not told about, best I can figure.

    Great tutorial btw. I will definitely be using this for animations now!

    --
    Kevin
    www.wetafx.co.nz
    Work Hard & be nice to people.



Page 1 of 3 123 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •