ok I have been having this issue for time now with my normal mapping.
A seam will appear, despite having my uvs merged and softened smoothing groups.
This has been bugging the hell out of me for some time now.
I beleive is mainly to do with the edges on my base mesh.
Iam using transfer maps
- High Poly (left) - Low Poly Bake (center) - Low Poly Base Mesh (right)
notice the seam on the diagonal splits.
I figured out two solutions on my own but they do not have optimal results.
- Harden the smoothing group on the problem edge ring. Then pull the uvs away from the problem area, to get rid of the seam . This solution wastes pixel space.
- Add a bevel on the problem edge ring and smooth the smoothing group. This creates additional/unessessary polys.
please please can some one enlighten me with the ultimate solution
thanks!!!!! x1000000000
Replies
On your low poly, select JUST the front faces (not the chamfers). average the normals. Then do that for your top and side as well. Basically what you want is the normals on each flat surface to be perpendicular to the face. Then the normals are forced to only deform on the chamfers.
Then rebake after that. This trick works in Max for LP stuff without normal maps, but I'm sure it would work for you here as well. See if that helps:)
Just stumbled across a post about the same problem. It was resolved by using object space normals instead of tangent.
I think even you suggested that solution.
I need to read up about the differences between object space and tangent space. Still it begs the question, 'Why use tangent space, when you can get more optimal results by using object space normals on a 'poly crunched' mesh?'
I will look into that too!
just discovered udk dosnt support object space normals
ug
Pros and cons...
http://wiki.polycount.net/Normal_Map#TSVOS
ta mate!
@eric - thanks man! Something to digest before I hit the sack tonight.
Case 1: Hard Normals & Small Map
In this case, the uvs of this piece are taking up a tiny piece of a 2k map. There are some minor seams around the hard edges due to the lack of resolution, but they aren't noticeable from distance.
Case 2: Soft Normals & Small Map
Basically this exhibits the issue you are talking about, and the reason is that the resolution on this piece is so small that there are minor seams just because there aren't enough pixels to accurately represent the shading. The exact same thing happens with the hard edged example, however becuase there is so much shading information from the softened normals, there are a lot more seams and places to go wrong.
Case 3: Soft Normals & Large Map
In this example I blew up the uvs shells so that they took up most of the 2k map. You can see that the normal map is flawless (at least in HQ Viewport), because there is enough resolution to represent every pixel that it needs to.
From these examples you can see it is just an issue of resolution. So there are a couple ways you can approach fixing it.
- You can use hard normals, and it will look good enough with the small map to be passable for ingame use. The minor seams on the edges aren't great but it is acceptable.
- You can increase the resolution of the map, or increase the size of the uv shells within the map so that there enough pixels. This will result in it looking very good no matter if you use soft or hard normals.
Note: In my example, you'd never want to use soft normals like I did, you'd want to bevel the edges like the OP showed, if you were going to use soft normals. Hard edges will give you much more flexibility though and allow you to use a smaller map, while being slightly more expensive in terms of rendering due to the hard edges. The smaller map will trump that though.
good you found the correct result though. Did setting perp normals work for you in that situation?
@kdm3d - yup yup. it seems to work! I think i need to consider the bevel and inside faces too. thanks man!
From the low poly version you need to modify the model to make it more friendly with normal business when rendering.
Here is a simple example it will resolve you bug :
Duplicate your low poly model and add a double line of edges like the picture.
Do not move the vertex of this new edge line or effect will be same.
Just cut and normal will be more kind when rendering the normal map.
Do not add bevel, this is just a new line of edge on the flat surface.
PredatorGSR: Resolution is a problem in a perfect world, where maya is synched up 100% with your engine, but any other situation means you're going to get similar smoothing errors regardless of resolution.
You mentioned 'freezing the normals before running it through your exporter'
How do you freeze the normals in Maya?
Iam in the habit of freezing the franformations and deleting the history before I export it with ActorX. Would that have any effect on the normals transformations?
thank you:)
Now, thats not to say it will actually fix your issue, as to get perfect results in bakes your engine's tangent space has to sync up to your baker's, which is pretty unlikely that UE3 is synched to maya's tangents, so you still may need to use hard edges to get good results. But that is not a problem, as long as your hard edges are along your uv seams it doesnt mean any worse performance as those verts are already duplicated.
And as long as your cage is averaged, you wont get any seams etc that you wouldn't otherwise get using a completely averaged low mesh.
Well, my point is that resolution is what is causing the specific issue that he posted about in this specific instance. It isn't demonstrating smoothing errors, just lack of resolution errors.
I don't disagree with anything you've said, I've read the max thread as well as all the normal map threads too, you're preaching to the choir :P. Now that that seam is solved, syncing up tangent calculations is a whole nother can of worms.
At the end of the day, even tho maya can do near-perfect bakes, you've gotta use hard edges just to get passed the resolution based errors.