Hey guys,
I decided to make this thread after doing a week long research on normal maps and how to render them out properly without running into all kinds of artifacts and errors. Being unable to find a solution to this seemingly simple issue I'm having, I thought it'd be best to post here as a last resort.
To the point: What I'm having difficulty with is getting artifact-free bake out of xNormal on this thigh armor plate for a character I've been working on. These issues only show up on this armor piece and a few others (all the ones with extreme angles, I guess).
I've tried different methods and although I got better results, the problem didn't go away. Most of us here are visual learners so instead of writing a novel, I'm posting a few pictures to better explain the situation.
The bakes after trying a few options:
And their corresponding normals:
Wireframe after adding a few edgeloops to the corners:
UV layout:
And the high-poly object:
Is the solution here to split the UV's where there are hard edges, paint out where the dark outlines are on the normal map, harden edges on UV borders, or simply add even more geo? I'm fairly new to this meaning any insight is welcomed. I may not be understanding how some of these things work though. Also, setting up a custom cage doesn't seem to change much.
I'm reading over a couple of EarthQuake's threads on the matter because I'd really like to solve this mystery once and for all and the sooner the better. So if any of you fellas know what the deal is here, feel free to chime in and help a buddy out.
Thanks in advance!
Replies
use as less geo as you want, use hard edges, split your UVs and bake WITH a cage. That works.
edit: you baked with a cage? Can you post a screen of it?
Your third image looks like you did not use smoothing groups/hard edges. Or is it just me? Mind showing the lowpoly without the NM?
you should be doing this: setting hard edges by UV islands (Where your islands are optimised for least seams) and baking with a cage (averaged projection mesh - ie the cage has smoothed normals). In your third example the black edges are caused my rays missing/overlapping because of the hard normals, see http://wiki.polycount.com/NormalMap#Working_with_Cages
So you shouldn't need to add geo to the edges (But you should understand why you get a different result with and without those added edgeloops), you just need to use UV and smoothing group splits to your advantage.
If it helps here's a simple-ish test I did awhile after digesting EQ's thread: http://www.polycount.com/forum/showthread.php?t=109870
The problem here is you're using hard edges without uv seams. Everywhere you use a hard edge you also need to split your uv islands up.
You can't really "paint it out" then you'll just end up with hard edges.
One thing you really need to keep in mind. How big is this object? If its a peice of thigh armor it will be quite small in a video game, it will be fairly small even in renders. How much do the indented wood bits really effect the silouhette? I'm willing to bet not at all in any real game situation, maybe one or two pixels in a render? If you simplify this mesh in the lowpoly it gets a lot easier to deal with.
I always try to think about things like this when I construct my high poly mesh, how will this be viewed? Will my lowpoly need to be really complex to support these shapes? When you start thinking like this you'll realize getting clean bakes is as much technical as it is planing and art content itself.
@Bek Yep, that's the thread I'm going over. I never tried softening edges on a cage, that could be the reason it isn't helping me much. Thanks for the help, this is starting to make sense now!
@silentbrains That's an extra step indeed, shouldn't normals show up clean in no matter what engine they are rendered in? I'm using Maya but viewing the same mesh in xNormal's 3d viewer with a normal map applied gives out the same result and everything was baked in xNormal so I think this has a lot to do with how I unwrapped and smoothed the model. I've seen quite a few tuts on baking normal maps for games and such thing was never mentioned. So I'm glad you brought that up.
@EarthQuake Appreciate you stopping by man. Correct me if I am wrong, what I need to do is to split the UV's along these red lines I scribbled?
And then do harden edge on each UV island after they are all separated?
I'm not exactly sure how big this piece will be if put in a video game. This is done for personal work and I just want my character and his accessories to look decent for some close-up screenshots. A possible employer would question my ability of extracting clean maps if something like this was shown (1st example). Not having enough experience with modeling for games doesn't help me but this is definitely something to keep in mind for future projects. I'm learning as I go and I do appreciate all of you who are willing to give an insight to a self-taught person like me.
Did I get it wrong?
Like this? (wouldn't split the mesh, just indicating where the uv splits would be)
I guess I was thinking of the big picture when it came to edges, apologies for not understanding still.
Edit: I'm also confusing edges (the ones you select) with hard edges (those on the object). I think I need someone to explain to me what exactly is considered a hard edge...
Again this is why simplifying your low(and possibly high) makes a lot of sense here.
You can also use a blend of hard edges and edge bevels to reduce uvs seams.
And again, depending on where this asset is going, you can get away with more or less hard edges. If you've got a synced workflow, ie: baking in maya and displaying in maya's viewport, you could probably get away with no hard edges. If you're baking in max and rendering in UDK, you're going to need some hard edges. It really depends, there isn't any hard rule for any of it.
I use this Chase (to make my hard edges) Though EarthQuake would be the person to ask I am trying to figure everything out myself, again It seems. :poly122: I think your meant to split the edges at the UV editor window and not on the model its self.
@Kot_Leopold:
Again EQ is the one to go by.