Best way to get rid of normal map seams?
by Duion · in Artist Corner · 08/04/2013 (7:06 pm) · 47 replies
So I just made a individual texture map for a model to get rid of the seams just to see they are back there when I apply the normal map.
Any experienced artist here who has a good solution for this?
It looks like that:

And this is the original seamless texture without normal map:

I found that other engines and modeling programs seem to have some fancy buttons and options to play around with, but in Torque I have not found options for normal maps so far and in blender it did not look that bad.
Any experienced artist here who has a good solution for this?
It looks like that:

And this is the original seamless texture without normal map:

I found that other engines and modeling programs seem to have some fancy buttons and options to play around with, but in Torque I have not found options for normal maps so far and in blender it did not look that bad.
About the author
http://www.duion.com - Human Paradigm Specialist
#2
The problem with the normal map is, it simulates geometry and if the texture gets wrapped around the axis stays not the same. For example the x-axis will meet the y-axis and so the fall of shadow is not even anymore, producing the seams, at least this is my idea so far.
08/05/2013 (3:52 am)
I have not used a seamless texture at all, it is an atlas UV-texture with more objects on it, so the borders are not used at all and you can see in the second image that the texture works seamless.The problem with the normal map is, it simulates geometry and if the texture gets wrapped around the axis stays not the same. For example the x-axis will meet the y-axis and so the fall of shadow is not even anymore, producing the seams, at least this is my idea so far.
#3
Fine with normal map:

And also fine without normal map:

OK, I was wrong, it is also there in blender, but you need light in a very flat angle and look a little more close and the seam will be there also:
08/05/2013 (5:55 am)
In blender it worked all fine, this is how the same looks in blender:Fine with normal map:

And also fine without normal map:

OK, I was wrong, it is also there in blender, but you need light in a very flat angle and look a little more close and the seam will be there also:
#4
To make it look more like in blender, did you try turning on 'anisotropic filtering' in the material editor?
Edit: Sometimes anisotropic filtering can tune it up a bit, but of course not a perfect solution for this since one have to turn it on in the game as well.
08/05/2013 (6:39 am)
It's confusing: the material editor in the 1st image shows the exact same diffuse map as the 2nd; while you state that you're using a atlas map in the 1st and a tileable image in the 2nd? If you're using an atlas map with different objects, shouldn't that be visible in the material editor preview?To make it look more like in blender, did you try turning on 'anisotropic filtering' in the material editor?
Edit: Sometimes anisotropic filtering can tune it up a bit, but of course not a perfect solution for this since one have to turn it on in the game as well.
#5
The seam somehow is always there, it just depends on how close you look, but the normal map enhances it too much.
In blender it was better sine I used a hemispherical light for building, not a straight sunlight.
But when the normal map is caused to cast shadows and these shadows meet the end of the texture, the normal map shadows cannot go on, so creating a seam.
With straight or hemispherical light to the surface there is no shadow and so no seam.
I watched models from other artists and they have also visible seams, but they hide it by making the seams in cavities or edges, so it is not that bad to have a seam where there is an edge anyway. Higher texture resolutions hide it also, but this is not an option here.
08/05/2013 (7:31 am)
No tileable texture is used anywhere in this example, these are individual textures and the same texture is used in all pictures. It just looks like a tileable texture, since I filled the empty spaces.The seam somehow is always there, it just depends on how close you look, but the normal map enhances it too much.
In blender it was better sine I used a hemispherical light for building, not a straight sunlight.
But when the normal map is caused to cast shadows and these shadows meet the end of the texture, the normal map shadows cannot go on, so creating a seam.
With straight or hemispherical light to the surface there is no shadow and so no seam.
I watched models from other artists and they have also visible seams, but they hide it by making the seams in cavities or edges, so it is not that bad to have a seam where there is an edge anyway. Higher texture resolutions hide it also, but this is not an option here.
#6
Before with inverted Y-axis:

And new version with Y-axis not inverted:
08/05/2013 (8:54 am)
I found something interesting, normally I invert the y-axis, since directX needs this to make them correct, but searching for more options to correct the issue I tried with Y-axis not inverted and the result was much better.Before with inverted Y-axis:

And new version with Y-axis not inverted:
#7
08/05/2013 (9:11 am)
OK false alarm, this just shifted the seam to the other side, which makes it only slightly better.
#8
08/05/2013 (10:54 am)
Have you checked the vertex normals on your model. If these are different to the normals from which the normal map was created you'll always get seams. Your vertex normals on your rock need to be exactly the same as the vertex normals from which the texture was baked. Believe me, I spent 18 months of hair pulling to achieve seamless character normals on characters with 15 independent meshes (ie arms legs etc) with 5 normal maps per character and if you're vertex normals are not exact then the lighting in the engine will expose them.
#9
And I have no idea how I edit vertex normals in blender.
I believe it is more because the UV-islands are more or less randomly rotated, but they would need to keep orientations, so the y-axis can meet also straight the y-axis on the next texture island on the model, if not the texture will be seamless but not the shadowcasting.
08/05/2013 (11:31 am)
These are not baked, but if I bake normals on it, the issue stays all the same.And I have no idea how I edit vertex normals in blender.
I believe it is more because the UV-islands are more or less randomly rotated, but they would need to keep orientations, so the y-axis can meet also straight the y-axis on the next texture island on the model, if not the texture will be seamless but not the shadowcasting.
#10
08/05/2013 (12:26 pm)
If you want send me the model and textures and I'll take a look for you. Tim dot watton @ WinterLeafentertainment dot com
#11
When you figure this out please do a short tutorial on this. I could see this really saving a lot of people time.
08/05/2013 (1:44 pm)
@Duion,When you figure this out please do a short tutorial on this. I could see this really saving a lot of people time.
#12
08/05/2013 (5:57 pm)
If you don't succeed removing it the good way, then you can perhaps use a rgb 128 128 255 brush to 'remove' the normal at the spots where it's clearly visible. A screenshot of the UV editor as a (temporary) overlay in Ps (or what you use) can be helpful to know where the edges are.
#13
But this cannot be done in my case. This would need almost redoing the whole model and the texture. So more a solution you need to take into account before building the model.
@Nils
What you suggest is doing this on the image side, by just removing the geometry from the normal map, I will give it a try if nothing else helps.
08/06/2013 (12:19 am)
I found a solution, but this one is not practical at the moment, it is using "inline edgedes", you add a non-tangent edge and unwrap it from there. www.digitaldouble.net/blog/index.php?itemid=34But this cannot be done in my case. This would need almost redoing the whole model and the texture. So more a solution you need to take into account before building the model.
@Nils
What you suggest is doing this on the image side, by just removing the geometry from the normal map, I will give it a try if nothing else helps.
#14
08/06/2013 (1:11 am)
Yes, I ment on the image side. Not a good solution if you want to reuse the materials though.
#15
08/06/2013 (1:39 am)
Actually it's a pretty smart solution, since it is not a tiling texture and cannot be reused much and it does not require any remodeling or retexturing.
#16
Good luck
08/06/2013 (12:53 pm)
I've had a look at this for you - Your're going to have to cheat on this and manually adjust the normal map by hand. The reason is that you have a normal map created from a 2D image by the look of it. Because this is from a flat 2D image the normals will be created from mostly likely a 90 degree angle which has no relationship to the model underneath it. This is normally ok across the whole mode but where the two seams joint the normal map normals will reflect light at 90 degrees where as the actual planes of the model reflect them at opposing angles resulting in light not being uniformly spread over both parts of the seam - if you turn your normal into a diffuse and observe it that way you will see that the colours are different either side of the seam which means light will bounce in different directions. You're going to have to hide them on the model better or as has been pointed out apply a neutral light colour around the edge of all the seams. Failing that its a case of sculpting and then baking to your atlas mapGood luck
#17
I did this tutorial the other day playing with baking from high poly to poly. You don't need to do the different poly objects, you could just bake to a map by itself.
www.youtube.com/watch?v=eeFnPg4YRbE
There should be a baking tutorial without using 2 objects as well.
08/06/2013 (1:10 pm)
Could this be fixed by baking a normal map? In blender you should have a normal map with the texture. So you should be able to bake a normal map for this object. Then use that for your normal map. I did this baking the other day and it is not that hard to test.I did this tutorial the other day playing with baking from high poly to poly. You don't need to do the different poly objects, you could just bake to a map by itself.
www.youtube.com/watch?v=eeFnPg4YRbE
There should be a baking tutorial without using 2 objects as well.
#18
You would need to make sure you do not bake over any geometry crossing the seam.
08/06/2013 (1:21 pm)
Baking produces the same issue.You would need to make sure you do not bake over any geometry crossing the seam.
#19
I guess this is just like Ghostbusters then:
"Don't cross the seams."
Edit:
It looks like this is a common issue:
gamedev.stackexchange.com/questions/16136/blender-exporting-obj-with-texture-coo...
08/06/2013 (1:40 pm)
Huh, dang it. I will have to see how my model turns out then.I guess this is just like Ghostbusters then:
"Don't cross the seams."
Edit:
It looks like this is a common issue:
gamedev.stackexchange.com/questions/16136/blender-exporting-obj-with-texture-coo...
#20
These are issues you cannot really solve completely, you just have to build in a way that these problems do not face you.
08/06/2013 (1:50 pm)
I believe it is less likely to happen if you bake your normals, since you take care while decimating that you do not destroy your seams too much or make them where they are exposed.These are issues you cannot really solve completely, you just have to build in a way that these problems do not face you.
Torque Owner Nils Eikelenboom
Studio DimSum
Add this img as layer in your normal map as a test; if it's gone then your normal map is probably not entirely seamless.