ZBrushCentral

Normal Map rasterization artifacts

Ok anyone having problems with the Normal ouput from Zbrush2.x.

There are large rasterization problems with the capturing of normals. Very rough fill with large artifacts.

Why does Zbrush only support 4096x4096 as a max resolution for NMap output.

Is there any supersampling or post filters to clean up this nastyness? And I’m not talking about PS either.

There really should be supersampling in the rasterization of the mesh normals.(or a box filter at a minimum)

Please post images showing your model, its UV mapping, the normal map, and also the rendered model with the normal map applied.

Also, please tell us what settings you’re using to create the normal map.

Ok I will post some images and stats if the following description does not suffice. I am busy today and its Friday. :wink:

I am roughly using 2-4k poly for the base mesh and going up to lvl 7. a few mil tri basically. The lvl 7 sub lvl quad size relative to the texels in tangent space is on par with almost being sub texel. 4k normal map with perfect UV placment for captureing Normals in tangent space.
The point being that i want smooted vertex normals to be captured becuase the lvl of detail is definetly adiquate.

Ok here is what I think is happening in the rasterization of NMaps. Basically Zbrush calculates the normals using face normals of the subd mesh as a defualt (hopefully there is a way to use the unbroken vertex normals). This of course is not ideal. This basically creates many facets in the
NM. And ruins the smooth look of the captured shape.

If there is a way to caputure smoothed normals I have not found any documentation that points me to the proper funtion.

Another reason NMaps look “Chunky” is that there seems to be no supersampling going on. This would raise render times obviously but enhance the output vastly. Only being able to output 4096x4096 maps does not alow me to do some box filtering on my own.

PS (off topic)
Another sugestion would be to write a tool that creates per pixel Ambient occlusion data in the same way as the NMaps and Displament maps are captured.

Getting back to the normal mapping subject of your first post:

In order to get the best quality normal maps you should always increase the high resolution mesh to the greatest polygon count that your system allows. Do this even if you do not intend to do any additional sculpting at this level of detail. Subdividing the mesh will give you a finer output in the normal map. After you have generated the normal map and no longer need the high resolution used to generate the map, you can simply delete those extra levels.

So I get what you are saying about maxing the subdivision. Thats all good, and I understand the reasoning. Zbrush is still using face normals to caculate the normals instead of the smoothed vertex normals.
No mater how much you subdivide the mesh
you still use face normals to calculate the normal vectors. If you sample the average normal You will have sampling errors becuase some of the samples in a given average will have the edges from the broken vertex normals (face normals).

If you don’t average the face normals(for mutliple quads per sample texel) at all you still will have erors if a given sample falls partially on a poly edges.

In general you want the smoothed interpolated vertex normals.

True or False?

I have played around with the Normal Mapping for the last days, too and can attest that this is exactly my problem:
Z-Brush calculates heavy edges into the normal maps that can easily be recognized on the Normalmaps themselves, so its unlikely to be a problem of my rendering engine (C4D with the Paranormal PlugIn).
I did a quick test to verify it by using a lowpoly-sphere and UV unwrapping it via box-mapping in Bodypaint, to get some gaps in the UV for the test.
imported the sphere int ZBrush, Subdivides a few times and worked some relief into the sphere, then went back to subDlevel 1 and exported the NormalMap.
Attached a picture of the results.
its pretty obvious that the Normal-Map cration in Z-Brush does not have the same quality that the displacement-maps have (which seem flawless).
The Normal-Maps have heavy creases /hard breaks especially at edges where the UVs are not together.
Edge correction in ZBrush applied to the Normal map had no result.

I hope that the Normal-Map creator gets an update, because these seams make it pretty much unusable.

Olli

I tested further, trying out one advice to delete SUBD Level 0 to get a Mesh without Triangles to test with exactly the same result:
Heavy creasing especiall betwen the former triangle on top and bottom of the sphere.
TRied SmoothUV , too with no visible difference after render…

To me it seems that the Normal-Map generation only works on UVS without gaps (Sphere projection type, practically impossible to get with characters) or I am really missing something here.

I dont know what else to try, so before I waste more time, can someone confirm if there is a way to get normalmaps for characters or other complex meshes without seams?

I tried Z-Brushes AUV Mapping on the spere with an even worse result—
What am I missing here (seems I am not the only one).
I would really really like to take advantage of this killer-feature.
Olli

i’m guessing any texture would do the same thing with those uv’s, and you hit the nail on the head, uv’s should be unwrapped with as much continuity as possible, not sphereical, more typically cylindrical for characters then stich together the uvs manually to have as few seams as possible… there are tuts all over the web about uvs for game modeling that should help you… although it’s not easy

I unwrapped these UVs on purpose that way to find out where the problem appears…

A Sphere could be easily unwrapped with spherical projection,I know that.
but a more complex form like a character is practically imposssible to unwrap in one continouus mesh.

Z-Brushs own UV unwrapper (AUV) practically creates gaps between every single UV-Poly, the Normal maps then are a mess.
Z-Brush on the other hand can create the textures for the same UVs , color, bump or depth, without seams, so its is definitely a problem of the Normal-Map calculation.

Its easy to see in this forum that the crease problem with Normal- Maps is bugging a lot of people.

Olli

Try out object space… with that i have no problems…
but tangentspace acts strange…
But who uses objectspace anyway? :slight_smile:

I’m having the same problem of seams in 3dsMax http://www.pixolator.com/zbc-bin/ultimatebb.cgi?ubb=get_topic&f=1&t=016473

I’m working on t too

Hope we’ll find a solution together

hmm-- I was using Tangentspace—
I will try Objectspace then and let you know.
Thought only Tangent-Space would work in game-engines–?
Olli

I get these same results.
It seems there is no such thing as smoothing groups in Zbrush. I bet the normal maps are generated per face normal of whatever resolution you generate the maps at.
We’re doing a test at work right now to see if we’ll be able to use these normal maps in our engine. Who knows, maybe the tangent space normal maps will look just fine, but I kind of doubt it. I would try looking at it in Nvidia’s Melody program, but my graphics card (GeForce4) doesn’t support Pixel Shader 2.0
Grrrr, obsolete already.

~Mike D.

I did another test using the cage not the morph to restore the base mesh before generating the normal map
it’s much better, but there are stll smaal artifacts on the nose The uv map are an automatic flatten UV from 3dsMax, really dirty, by mnimzing the number of seams and there positon by manually unwrapping the mesh, think the normal pas can be used.


Left using morph target rigth after generating a cage
settings : tangent space, adaptative, 2048, smooth uv
render n 3dsmax, scnline with Kaldera plugin in the bump map