Trying to use Average normals with Xnormal like the first page says but I get strange results.
Heres my average normals bake, what is happening?
and here's my exported normals bake, this looks ok but it has horrible seams.
For reference here's my low poly, high and UVs. I've made sure to seperate my UV shells on 90 degree angles and created a hard edge on the low poly where this is case.
You have to make sure your viewport and normal map baker are in sync. xNormal uses Mikktspace, and whatever application you are using has the support that same tangent space.
Here's that model in UE4, no shading artifacts, basically the same texture, wireframe, and smoothing.
Ahhh, I don't know how you've managed that, I'm currently using Maya and Substance painter to see what my normals look like and they have horrible artifacts on both I think I'm doing something else wrong in my pipeline.
I've set Maya's material to "tangent space normsl" which as far as I know is the correct one?
It doesn't look too bad in substance, the only problem is, is that the new job I'm starting soon is quite dated in it's tech and they don't use it, so I'm having to go back an basically learn how to work with older methods. X normals just isn't giving me good bakes!
Here it is in subatance.
What are you baking in btw? I'm curious if my problem is mostly X normals fault or I'm doing something wrong.
@artstream Yes I did, it was helpful but in the end I kind of changed my whole model. I suppose I wont reduce the amount of sides of the cylinder to avoid the issue.
You can subdivide your unwrapped lowpoly just for the baking of these edges. Easiest should be do add a turbosmooth modifier with restriction on smoothing groups. Also baking in max is a much more handy if you ask me (adjusting cages, objecthandling, direct render results).
"Waviness" is simply the difference between a source and bake mesh. Nothing more than the normal map doing work! Just sometimes looks odd for angle changes on a cylinder.
@ZacD I don't think so. It didn't make sense to me that the cageless blend method would accomplish that so I tried it real quick:
It prevents skewing on the top faces details, but waviness is gonna always be exactly where this method's masking uses the averaged bake so no change from standard baking.
Is it bad practice to not use hard edges and split uvs for all sharp edges on a hard surface
model? For the most part on this model I used split UVs and hard edges, but for the center part (smoother stone in the picture) I had one smoothing group even though there's a hard edge, and the normal makes it look right. The reason I ask is that in hindsight I'm worried that in different game engines or whatever it will come out looking wrong. Should I have just used hard edges here and split the UV?
To give another quick example, the faces outlined in green are one smoothing group, with the normal used to create the angular look. Is it bad to do this, or am I good as long as it looks okay? Will it reliably look okay in various engines, or am I setting myself up for a future disaster here?
If the tangent basis is synced between the baker and renderer, and you don't push it too far, it's totally fine to not split every last edge. Practicing, you'll get a feel for how much you can do with synced tangents and where you can push harder.
The problems you can run into when pushing it too far: - Imprecision due to 8-bit normals. This will look the worst on very smooth, reflective objects with strong normals and usually appears as banding. - Texture compression. Game engines will tend to compress your textures and this can cause problems when a single normal map does too much work. - Shading problems when making LODs, or potentially mipmapping causing you to lose resolution you need. - Some engines don't have the highest quality normal encoding (something they do with models behind the scenes), so even with synced tangents you might not get a 1:1 result with your baker. For UE 4, as of 4.12 this is fixed. - In rare cases with UE 4 you'll need to turn on "Use Full Precision UVs".
I'm unsure about how those big gradients will come out, but it really depends on the engine. So my best recommendation is test! Take those things above into account and know it's not a pure science, but a puzzle of optimization and what you can get away with.
Thanks somedoggy. I modeled in Blender, baked the normals in xNormal, and textured in Quixel, and so far I haven't had any issues, but i have noticed that if I try to render it in blender at a very oblique angle I get some wonkiness. Ultimately I need them to work in Unity though. I think I'll go back and redo it regardless. It'll only add a few more verts, it won't take too long, and more practice never hurts.
I'm currently baking out my normal maps for a project of mine using substance painter. I wanted to keep a texel density of 10.24/cm so that I could have a high resolution across the mesh when rendered close-up.
The issue is that to do this I had to separate the main body of my tank to two 4096x4096 textures but I think this is causing an issue in my normal map?
Seam using two 4096x4096 textures on one
I took the same model and arranged it into one texture which fixes the issue but leaves me at 4pixels/cm which doesn't look too good. No Seam:
I don't think that splitting texture sheets can cause seams, and your screenshots with and without problems are not even from same mesh.
Look like you have some bevel on those hard edges, make sure you split UV islands where you have smoothing split. ( tutorial on page 1 of this thread )
If you don't use a cage, make sure to check "Average normal" in SP. The default frontal distance usually works, but depend on your unit setup, your mesh could be tiny or huge, so play around with it to see if you get different result.
@Nam.Nguyen It's the same model, I've just removed the other peices to test if one UV sheet fixes the issue. UV's have been split by hard edges and smoothing groups are set by UV islands
I'm trying to understand what magic normal maps can and can't do.
For example, I thought I was being clever doing this, but the bake doesn't come out. Is there just not enough geo to support it, or is there a way to make it work?
Normal maps cannot fake actual depth. You need to adjust the high poly to be more shallow and have a shape more similar to the low poly. Or put more geometry into the low poly.
Well how do you want it to look in the end? With the low's geo as is the result will look like a decal. If you want it to look like it's really going inwards you'll need to have the low poly geo reflect that.
Normal maps are always more successful the less work they have to do.
@ryebot If you're looking to get a feeling of depth as that camera angle shows, look into using a parallax map. This can bake properly, though you may be better off making the inset shallower. Also, your low poly should match the high more closely, and consider trying a tight-ish bevel along the top/front edge loop so the geometry normals have a good transition from the flat front to the rounded side.
Is there away to avoid gaps in the UV space after youre done uving in Max? My environment scene has several object with 2k maps but most of them dont occupy all of the uv space, I have tried adjusting the padding setting but it didnt do much. Ill link image when I get back home.
@DeathstrokeFTW it would be helpful to see what your UVs look like, but padding is actually pretty important to your UVs. If there's not enough padding you can get artifacts around your seams when mip-mapping occurs. There's also no rule saying that you have to use 100% of your space, but it's also possible you're not using all of your space efficiently. Again, this is hard to say without seeing the maps.
@DeathstrokeFTW it would be helpful to see what your UVs look like, but padding is actually pretty important to your UVs. If there's not enough padding you can get artifacts around your seams when mip-mapping occurs. There's also no rule saying that you have to use 100% of your space, but it's also possible you're not using all of your space efficiently. Again, this is hard to say without seeing the maps.
Sorry wasnt able to upload one earlier :P This is one part of the mesh. The question is should I really cut the big one in half? That piece will have more than one texture btw via material ID.
@RashedAlmetrami why aren't you using a single 8192x4096 texture to avoid the problem entirely? If you bake with a proper cage you shouldn't get a noticable seam on your normal maps. Those seams there look to me like you have cage issues.
@RashedAlmetrami Then I'd look at fixing the cage. I'm impossibly certain that your cage is the problem if you're correct when you say your UVs and smoothing groups aren't the issue. Or you can upload the model and I can take a look at it in a few hours when I get off from work.
@Thanez I fixed the issue by applying one smoothing group to the entire model and as I'm working to a synced workflow it shouldn't be that much of a problem. I think I'll just use a cage in future. Thank you for the help!
Hi. By using mikkTspace synced workflow (1smooth grp) between max and unreal do i need to manage the face vertex normal before sending for baking ? It can help for better baking ?
Using custom weighted normals can reduce compression artifacts and help keep highly reflective surfaces looking super clean. It's not necessary for most assets, but can be worth it for certain situations.
I spend 2 day to understand what is wrong. This makes me crazy
Workflow
From Max 2016 : - Export all mesh (low, high, cage) using FBX 2013 with 1
smoothing group mikkTspace (with export smoothing group ON and Tangents &
Binormals OFF) for the cage and low res mesh, all transform freeze for
all meshes and only the cage and low res mesh are triangulated
Baking in Xnormal 3.19.2 with Mikktspace "Compute
binormal in the pixel shader" checked. Baking at 2048 X 2048 pixel. Normal map Swizzle
Coordinates = X+ Y- Z+
Import the same low res mesh into UE4 with the "import normal" option
Baking in Hnadplane with unreal engine 4 preset
Import the same low res mesh into UE4 with the "import normal" option
In that Handplane video on page 1, I understand that the UV layout for the left sphere causes the vertex count to double. The author states that the resulting tri count is 107 while the original was 96. However, I count 15 edges where the UVs lie. Shouldn't the resulting tri count be 111?
So when you're using a synced workflow you have less vertices since you have less uvshells and less smoothing groups, still it has it's own drawbacks. So my question kinda goes to, is it really a hard positive impact on performance or just a minor thing nowadays?
I know it's a good practice to have everything as optimized as you can, was just curious about that.
So when you're using a synced workflow you have less vertices since you have less uvshells and less smoothing groups, still it has it's own drawbacks. So my question kinda goes to, is it really a hard positive impact on performance or just a minor thing nowadays?
I know it's a good practice to have everything as optimized as you can, was just curious about that.
Optimizing polygon counts is generally a waste of time, especially down to that level. Quad overdraw is the main tricount related performance impact. Sometimes dynamic shadows are effected by the tricount, like Cascaded Shadow Maps in UE4. But you can use a lower polygon mesh as the shadow caster if that's an actual issue.
Replies
Heres my average normals bake, what is happening?
and here's my exported normals bake, this looks ok but it has horrible seams.
For reference here's my low poly, high and UVs. I've made sure to seperate my UV shells on 90 degree angles and created a hard edge on the low poly where this is case.
Low poly
High poly
Any ideas, I'm at a loss.
Here's that model in UE4, no shading artifacts, basically the same texture, wireframe, and smoothing.
I've set Maya's material to "tangent space normsl" which as far as I know is the correct one?
Here it is in subatance.
What are you baking in btw? I'm curious if my problem is mostly X normals fault or I'm doing something wrong.
It goes through the waviness; the why and the how to mitigate it.
http://polycount.com/discussion/156215/tutorial-perfect-normal-map-baking-in-substance-designer-5-without-using-a-cage
This will fix it:
http://polycount.com/discussion/comment/2442912/#Comment_2442912
http://polycount.com/discussion/comment/2444245/#Comment_2444245
"Waviness" is simply the difference between a source and bake mesh. Nothing more than the normal map doing work! Just sometimes looks odd for angle changes on a cylinder.
@ZacD I don't think so. It didn't make sense to me that the cageless blend method would accomplish that so I tried it real quick:
It prevents skewing on the top faces details, but waviness is gonna always be exactly where this method's masking uses the averaged bake so no change from standard baking.
each time I learn new stuff thanks, guys.
I got a question:
about the cone object how to deal with it like:
nail,spike,pin etc...
hi poly
low
after baking
as you can see there is sort of rainbow effect how to deal with these issues?
if I flatten it, is it gonna stretch?
is this consider ok .
To give another quick example, the faces outlined in green are one smoothing group, with the normal used to create the angular look. Is it bad to do this, or am I good as long as it looks okay? Will it reliably look okay in various engines, or am I setting myself up for a future disaster here?
The problems you can run into when pushing it too far:
- Imprecision due to 8-bit normals. This will look the worst on very smooth, reflective objects with strong normals and usually appears as banding.
- Texture compression. Game engines will tend to compress your textures and this can cause problems when a single normal map does too much work.
- Shading problems when making LODs, or potentially mipmapping causing you to lose resolution you need.
- Some engines don't have the highest quality normal encoding (something they do with models behind the scenes), so even with synced tangents you might not get a 1:1 result with your baker. For UE 4, as of 4.12 this is fixed.
- In rare cases with UE 4 you'll need to turn on "Use Full Precision UVs".
I'm unsure about how those big gradients will come out, but it really depends on the engine. So my best recommendation is test! Take those things above into account and know it's not a pure science, but a puzzle of optimization and what you can get away with.
how to deal when you have hi poly bevel intersect like in the image:
I bake one with no bevel but the result show dark
the second with a bevel which gives me a better result.
just wondering is this the way to handle it ? or is there a better way?
I just need to seprate it.
I'm currently baking out my normal maps for a project of mine using substance painter. I wanted to keep a texel density of 10.24/cm so that I could have a high resolution across the mesh when rendered close-up.
The issue is that to do this I had to separate the main body of my tank to two 4096x4096 textures but I think this is causing an issue in my normal map?
Seam using two 4096x4096 textures on one
I took the same model and arranged it into one texture which fixes the issue but leaves me at 4pixels/cm which doesn't look too good.
No Seam:
UV's
How do I fix this? I'm kind of at a stump
Any help is much appreciated
It's the same model, I've just removed the other peices to test if one UV sheet fixes the issue. UV's have been split by hard edges and smoothing groups are set by UV islands
For example, I thought I was being clever doing this, but the bake doesn't come out. Is there just not enough geo to support it, or is there a way to make it work?
Normal maps are always more successful the less work they have to do.
This is one part of the mesh. The question is should I really cut the big one in half? That piece will have more than one texture btw via material ID.
If you bake with a proper cage you shouldn't get a noticable seam on your normal maps. Those seams there look to me like you have cage issues.
Or you can upload the model and I can take a look at it in a few hours when I get off from work.
One quick question, my model isn't baking AO information from my instances, any idea why that would be?
http://polycount.com/discussion/184563/substance-painter-ao-not-including-instances#latest
By using mikkTspace synced workflow (1smooth grp) between max and unreal do i need to manage the face vertex normal before sending for baking ? It can help for better baking ?
Workflow
- Baking in Xnormal 3.19.2 with Mikktspace "Compute
binormal in the pixel shader" checked. Baking at 2048 X 2048 pixel. Normal map Swizzle
Coordinates = X+ Y- Z+
- Baking in Hnadplane with unreal engine 4 preset
- Import the same low res mesh into UE4 with the "import normal" option
Files : https://www.dropbox.com/sh/1s68spha2l7sfvd/AACbGNl1WExZG1U-rMuF8luEa?dl=0From Max 2016 : - Export all mesh (low, high, cage) using FBX 2013 with 1 smoothing group mikkTspace (with export smoothing group ON and Tangents & Binormals OFF) for the cage and low res mesh, all transform freeze for all meshes and only the cage and low res mesh are triangulated
Import the same low res mesh into UE4 with the "import normal" option
I would love to have some advices to explore :)
edit: here what i've got by exporting tangent binormal and hard edge workflow
I know it's a good practice to have everything as optimized as you can, was just curious about that.