Home Technical Talk

Foolproof way for baking normal maps

Tudoran92
polycounter lvl 2
Offline / Send Message
Tudoran92 polycounter lvl 2
Hey there everyone,

I recently started working with a lot of new software (from Zbrush and Xnormal to Marmoset and the Quixel Suite). Managed to learn a lot in a short amount of time, but the thing that gives me headaches on and on and on is: baking a high poly normal map. 

I modeled a series of meshes (from swords to guns) and then I tried creating a normal maps using Xnormal (instead of using the "Render to texture" method from 3DS Max). A lot of people recommended using the Ray distance calculator but the result always ended up with  A TON of artifacts (wavy lines, extra "details", missing actual details etc). I tried even with a custom cage from 3DS Max (an exported low poly model covering the high poly one), but I can`t really say there`s much of an improvement. No matter what the method it still looks bad, even when imported in Marmoset Toolbag. 

My first and foremost question is: What am I doing wrong? :neutral: What would be the best way to bake a normal map from a high to a low poly mesh? Can somebody recommend me some good tutorials (be it video or written)? What should I avoid doing when baking? Also how could I correct some of those artifacts?

Sorry for bombarding with questions, but I feel like I`m loosing my mind... got stuck here for more than a few days...  Watched a lot of tutorials, tried baking both in 3DS Max and XNormal and it still has a lot of problems. How do you approach baking the normal maps? I would also appreciate tips and tricks, as well as what should I avoid doing. 

Thanks in advance!

Replies

  • BagelHero
    Options
    Offline / Send Message
    BagelHero interpolator
    If you can post some pics of the objects (high poly, low poly, then low poly with the borked NM applied) and it might be a little easier for people to provide some support without speculating so much :)
  • musashidan
    Options
    Offline / Send Message
    musashidan high dynamic range

    There are a whole host of factors at play here: Low/high poly relationship, uv layout, smoothing groups, tangent basis, synched or non-synched, single or multiple smoothing groups....

    As Bagelhero said post images of all the above.

    Also, there's a wealth of info here from stickies and previous posts.

  • Tudoran92
    Options
    Offline / Send Message
    Tudoran92 polycounter lvl 2
    Yeah, sorry about that :D A pictures worth a thousand words...that`s why I`ll put quite a few. First I`ll put a lightsaber low poly (1008 Tris) and high poly (590K Tris) I recently made. I wrote the error encountered but I`ll mention them here too: a lot fo lines are wavy instead of being simply straight (e.g. at the end of the hilt), there are a lot of jagged edges and the two holes are completely distorted (stretching a lot in some cases/angles). I will also post the Normal Map created with X Normal (Ray Distance calculator, Max anti-aliasing, 2048x2048). 
  • Tudoran92
    Options
    Offline / Send Message
    Tudoran92 polycounter lvl 2
    And this is another example. I thought since it`s a simpler model, with not that many round pieces, I should be able to bake a normal map without any problems...not quite.. Still had a lot of artifacts and errors. The only ones I managed to fix are the ones on he hilt's metallic side (by just painting on top of the area in Photoshop)...but that`s a really easy problem to fix since  it`s a relatively large, flat surface.

    I`m open to any suggestions/tips and tricks regarding this issue and my workflow in general :smile: 

    Cheers
  • stickadtroja
  • JedTheKrampus
    Options
    Offline / Send Message
    JedTheKrampus polycounter lvl 8
    Don't put hard edges in the middle of a UV island
  • musashidan
    Options
    Offline / Send Message
    musashidan high dynamic range
    Your low-poly looks too 'low-poly' You should add more geo to the main cylindrical parts as the faceted curvature is very visible and probably doesn't match the high-poly very well for the bake.
  • Tudoran92
    Options
    Offline / Send Message
    Tudoran92 polycounter lvl 2
    I wrote one huge message yesterday but looks like it`s being processed/moderated...so here I go again: First of all thanks for the fast replies, but I still have some dilemmas: 

    @STICKADTROJA from what I understood from the link is that the 3 rules of thumb are: 1. Always have enough polygons on the low poly model
    2. Try to avoid sudden curvatures, by easing it in with a simple slope (e.g. an 45 degree edge instead of a straight 90 degree drop)
    3. To avoid the skewing errors, place another loop at the edges of the model and try to make an easier transition in the curve.

    Did I get it right or am I totally missing the point?

    @JEDTHEKRAMPUS I think you`re talking about the hard edge on the blade. The reason I used that was to create a hard edge between the shinny white area, adn the darker grey area of the blade. Also the UVs are separate because of the different smoothing groups they have. Should I have done it in a different way, to reproduce that effect?

    @MUSASHIDAN I kinda realised that after doing quite a bit of reading. My question is: how to I know how many polygons should I use on the low poly, so that it has the graphical fidelity of the high poly (with the use of normal maps)? Is there a basic rule to that? Cause I always noticed I`m pretty greedy with my polygon budget, and I end up having PS2 level assets :D 

    Once again guys, thanks for the feedback. You`ve been of huge help already and I`m kinda getting and idea on what to do/not do as well as how to avoid certain errors.

  • stickadtroja
    Options
    Offline / Send Message
    stickadtroja polycounter lvl 11
    no your kind of right. try applying all these rules on your current model and see if it fixes the errores
  • Tudoran92
    Options
    Offline / Send Message
    Tudoran92 polycounter lvl 2
    I apologize for posting this late, but I felt really burned out, needed a break and started working on other projects just so I won`t lose my mind. With these being said, I will post the extremely important things I learned over the last few weeks.

    1.Don`t be greedy with the low poly geometry. I know for some it sounds obvious but for me it wasn`t. Don`t use an 6 or 8 sided cylinder and expect it to look perfectly round. Depending on how close or far you want the model to be seen, you need to decide how many faces it needs. If it`s a close up model (for your portfolio) and the shape is inherently round use at least 20 sides...AT LEAST! NRM Maps can go only oh, so far and give the desired illusion. 
    2. Don`t be a lazy bastard (like I was)! DON`T AVOID MAKING A PROJECTION CAGE in your 3D software (e.g. 3DS Max) and instead rely on XNormal's "Ray distance Calculator"! This was one of my biggest mistakes: I thought that I would save time by doing this, but in the end I just sacrificed A LOT of quality. So do the right thing, create a cage for the low-high poly, do a few normal map tests in 3DS Max, export it as a triangulated OBJ and import it in Xnormal as a custom cage. 
    3. In case it wasn`t obvious enough: use Xnormal instead of the default renderer in 3DS Max. I know Catmull Rom and turning Global Super Sampler on will greatly improve the quality, but I still haven`t seen the quality level Xnormal offers. It`s free, it`s not that hard to use, and it`s totally worth it!
    4. In case your models are really small in 3DS Max/Maya/etc or the unit system is set wrong, make sure to set (in Xnormal) the "Default mesh scale" to a higher value, to make sure the  software has enough surface space on the 3D models to calculate the normals required. Some recommend 15-20...I only went with 5 and it was alright. 
    5. For complex models with pieces that are close together, I would HIGHLY recommend to use the "Exploding mesh method":  separate the pieces of the model that are touching each other (both for the high and low poly) and MAKE ANOTHER CAGE specifically designed for complex normal maps (while the other "1 piece" cage can be used for the Ambient Occlusion). After building the exploded cage, export this, as well as the exploded high and low poly into Xnormal, an render the Normal Map. In case my explanation is a bit confusing, search on Youtube for a tutorial on this topic. Trust me it`s worth using this method because it helps you avoid A LOT of baking errors (at least for complex meshes such as guns/fantasy swords etc).
    6. If you have the Quixel Suite (or a trial for it), improve the overall texture by also creating a Curvature Map. Not mandatory but I think it improves it a bit.
    7. Always check (if you have the possibly) your normal map on the low poly model in software similar to Marmoset or Quixel 3DO (rather than straight from 3DS Max) or a game engine (such as Unreal 4). 
    8. When you're close to finishing the model, make sure to also add an Ambient Occlusion cause it goes a LONG WAY to the final look at the model. Remember I got all depressed cause the mesh still didn`t look good, and a mate of mien suggested I add an AO cause "it makes everything look better". And guess what? It really does.

    For now this these are the important things I thought I should mention and everybody should know when baking normal maps (especially if using Xnormal). I will post a few renders in the near future, but only after I get a really good hang of PBR texturing and only once I have something worth showing. In the meantime I`m struggling with Unreal 4 shaders/materials as well as it`s lighting...so it might take a while.

    If I got anything wrong, feel free to correct and/or critique what I said up until now :smiley: 
Sign In or Register to comment.