Hi, so after reading EarthQuakes post on making sense of hard edges, uvs, normal maps, vertex counts & Understanding averaged normals and ray projection/Who put waviness in my normal map? I decided to re-bake a normal map of model I created some time ago but never managed to get good baking results.
The thing is I use Maya for baking normal maps and I havent seen any tutorials/pipelines out there on how to correctly bake normals using either Maya's transfer maps options or a Maya to Xnormal guide to correctly know how to make accurate cages.
Below you will see my meshes and the results I got from baking in Maya and xnormals. Hope somebody can give me an explanation I can understand
Stupid question could the low res mesh be used as a cage in xnormals as long as it covers accurately the high res version? - wouldn't that give the same results as just using the low res mesh in xnormals (no cage imported just a cage created in xnormal)
I sincerely hoped Maya's average normals would give a perfect result as I matched as closely as possible the high res version.
I know my high res mesh is not perfect (lots of 90 degree angles) ideally I would make the edges more bevelled so it would be easier to calculate the normals around the edges but at the time I didn't knew that.
I purposely broke the uvs anywhere I had 90 degree angles on my low res mesh so that I could get the best results possible. (let me know if I'm wrong about this).
Questions:
Is my geometry to blame?
How can I make explicit projections work in xnomal? what should I changfe on my low res mesh?
How can I make a cage in Maya an export it in Xnormals? (can I use the low res version as it covers the high res?
Preview of the low and high res meshes
Here I show which edge loops are hard and which are soft.
Next I show the uv's packed on the 0 to 1 space. with edge padding to avoid bleeding.
Results baked in Maya (average projection) and xnormal (explicit projection)
I know why this issue (gaps) happens I would appreciate a guide to understand what to do to get better edge results with explicit mesh normals for projections.
A huge thank you to anyone who can help out!
Thanks in advance!!!!
Replies
My xnormal custom cages workflow looks like this:
*Open the xnormal 3d viewer
*Check the show cage box on the left
*expand the cage by dragging the slider
*save the mesh as a new file
*DO NOT agree to automatically assign meshes (attempts to resave and reassign your highpoly mesh for some terrible reason)
*Say yes to the prompt about skipping large meshes if it comes up
*load the new file in your lowpoly meshes and check the "use cage" button. Xnormal's OVB files contain both the base lowpoly and the cage mesh in one file.
working this way will create an averaged projection. The other option is to import a custom file by right clicking on the lowpoly and finding the option called something like "import cage". I have had problems with xnormal rejecting files in the past and my undestanding is that this works best with sbm files. For the custom cage to work correctly you need to have no smoothing splits in the cage mesh and you need to have the "use cage" box checked.
Its just that I get these smudged edges (yellow lines) that do no give a sharp continuity to my normal map.
Unless that is the way normal maps are supposed to look I compare my stuff with tutorials that I see from Max and the results suck!
The normals from Xnormal have a better gradient distribution and more crisper results, while Mayas seem smudged, it seems like there is a lighting issue or something.
will def try your way and post the reults
1. Export your highpoly mesh as an .OBJ file. An export straight from Zbrush is fine.
2. Export your lowpoly mesh from maya as an .OBJ file. Check that the .obj export settings have both normals and smoothing checked "on" before you export.
3. Duplicate the lowpoly, switch to component mode and select all the verts of the duplicate. Then do edit mesh>transform component. Drag on the BLUE transform handle to inflate the mesh along its vertex normals. Make it just big enough to cover the highpoly mesh completely. Then export it as an OBJ file. This is your custom cage.
4. In Xnormal, assign your highpoly and lowpoly meshes. In the lowpoly list, right click on the line that your mesh is in, then choose to "browse external cage file". Browse to your custom cage and load it. You'll get a warning dialogue about making sure it matches the lowpoly exactly. Accept it, then you're ready to bake.
5. Bake the normal map, making sure you have a decent bit of edge padding.
6. That's it Note that baking with a cage won't stop skewing. It will, however, get you a much "flatter", cleaner normal map with little gradiation. To stop skewing, you'll need to add some more support geometry to your low poly.
Component mode is F9 right?
Also will I have to smooth the normlas of the entire cage before I export likeAlecMoody suggested?
1. shows the high res (grey) low res (Yellow) cage (Red)
2,3,4. are the lines that I think are caused by the cage as I said it needs to be recalibrated!!!!
Again thanks
Yea do this. It will not only give you far less UV islands, which would be easier to texture. It will also make the low poly look a lot better.
Heres an example:
With A, the way you modeled it, you've got all these blocky little shapes that you have to match up in your low, and in turn either use a lot of supporting geometry/bevels/etc, or lots of hard edges.
Now with B, we turn some of these blocky shapes into curved sloped trims. You still get visual interest out of these sort of shapes, but you can use much more forgiving angled geometry in your lowpoly. You don't need to do it exactly like this, its just a really quick example.
This is one aspect I feel people really overlook, you have plan it all out and be aware of the type of lowpoly geometry you'll need to support while designing and modeling your high res.
Here is another example form the waviness thread:
I'd like to try this as I have had terrible luck getting my nice looking high res sculpts into Maya, with just my high/low OBJ's and Xnormal. The problem is I can't know how big to make the low poly mesh with the transform component option, since I can't get my high res model into Maya. When you get into the multiple millions, even with a good system, Maya does not like it. So I can't really create the cage without just guessing with the low poly and no high poly present.
How would you go about with hard surface models requiring hard crisp angles?