Home Technical Talk

uneven normal map (swimming syndrome)

polycounter lvl 18
Offline / Send Message
snap.crackle.pop polycounter lvl 18
I'm having an hard time with normal maps projections that look uneven, my projection seems ok, but the normal map render are all looking like swimming. Normalleguneven.jpg


I also looked at this page: http://www.poopinmymouth.com/tutorial/normal_workflow_2.htm

im confused, i pull, tweak all my points but nothing changes the fact that my texture is uneven, i looked at my UVs, everything seem all square and clean.

Replies

  • MoP
    Options
    Offline / Send Message
    MoP polycounter lvl 18
    surely it doesn't matter how it looks on the UVs, as long as it looks fine when applied to the model in 3d view?
  • snap.crackle.pop
    Options
    Offline / Send Message
    snap.crackle.pop polycounter lvl 18
    [ QUOTE ]
    surely it doesn't matter how it looks on the UVs, as long as it looks fine when applied to the model in 3d view?

    [/ QUOTE ] Yes absolutely

    The projection cage look clean its all overlapping everything but i still get the uneveness


    Normalleguneven2.jpg
  • Rob Galanakis
    Options
    Offline / Send Message
    It has to do with the proximity of the vertices on the low poly to the high poly. At the vertices, the two nearly coincide, at the middle of the face, they have a pretty big difference. Its somewhat unavoidable, AFAIK... if it looks fine, leave it (actually, this "swimming" is required to replicate the high-poly... if the lines were straight, it'd look like an nvidia plugin normal/bump map).
  • snap.crackle.pop
    Options
    Offline / Send Message
    snap.crackle.pop polycounter lvl 18
    Hhhmm, your right, its ok for my map to lightly distort. This is a scary thought when your looking to do a clean render smile.gif

    But basically should my lowpoly be over my highpoly when projecting or is it better to have your highpoly over your lowpoly ?
  • EarthQuake
    Options
    Offline / Send Message
    Its best to have it as close as posible, not above or below. You dont really need to ahve it all above or all below or anything. Atleast not in xnormal.
  • fritz
    Options
    Offline / Send Message
    fritz polycounter lvl 18
  • Wells
    Options
    Offline / Send Message
    Wells polycounter lvl 18
    I believe what mop was getting at was, does the wobbly looking normal map look fine when applied to the model, or is it all buckled up there too?
  • snap.crackle.pop
    Options
    Offline / Send Message
    snap.crackle.pop polycounter lvl 18
    It looks like this: Pantscopy.jpg


    It not too good, in my opinion
  • snap.crackle.pop
    Options
    Offline / Send Message
    snap.crackle.pop polycounter lvl 18
    Ok well i didn't want to do it, but i figured that the best way to get rid of the inevitable swimming would be to go in the color channels and retouch/repaint the faulty area as shown on poop's page, i guess you have to go through this at some point if your mesh is complex to a certain extent.

    http://www.poopinmymouth.com/tutorial/normal_workflow_3.htm
  • Eric Chadwick
    Options
    Offline / Send Message
    Another way that might help would be to tweak the verts of the projection cage, like they do in the Max tutorial with the chess piece, which helps to prevent the ends of your cylinder from weaving in/out. For example, instead of Pushing the cage, do a non-uniform XY scale on the cage verts, so they are even on Z with the low-poly verts.
  • snap.crackle.pop
    Options
    Offline / Send Message
    snap.crackle.pop polycounter lvl 18
    Yes, done and done, my texture will simply swim no matter what i've tried so far. The best thing so far was to paint/edit/smudge the color and channels.
  • odium
    Options
    Offline / Send Message
    odium polycounter lvl 18
    Have you thought about jsut adding those stripes in later? i.e. Render everything else first and then add the stripes in by hand? They will be as straight as you need, and it wont be that tough either.
  • snap.crackle.pop
    Options
    Offline / Send Message
    snap.crackle.pop polycounter lvl 18
    [ QUOTE ]
    Have you thought about jsut adding those stripes in later? i.e. Render everything else first and then add the stripes in by hand? They will be as straight as you need, and it wont be that tough either.

    [/ QUOTE ]

    Aaah!! clever, i see what you mean now, took me a good 15 mins to decode this, i would do that but all my stuff is already modeled, i spent a good 2 months before hand just to get this mesh rolling and i wont back down, actually the texture distortion give my character an edgy look, kinda like roughed smile.gif

    However i might add some paint piece like you mentioned, very nice idea you had there, thanks for the scoop.

    Untitled-3.jpg
  • moose
    Options
    Offline / Send Message
    moose polycount sponsor
    When you process your normal map, keep in mind your low-poly cage is just that. It isnt your low poly mesh, so you can smooth it to all hell (while keeping your uv layout). You can selectively tessellate the cage to fix some of those problems and get a super clean normal map.

    you will especially run into problems at the edges of cylinders @ caps, and other round objects.

    the more verts your cage has, the smoother the normalmap will come out. It will work perfect on your low poly mesh.
  • cyborgguineapig
    Options
    Offline / Send Message
    cyborgguineapig polycounter lvl 14
    Can you explain how you would tessellate the cage? this is really interesting.

    ..Oh never mind, I see how you do it. This would have been soooooo helpful to know before! Just add tessellate to your edit poly model and projection cage on top. Be sure to set tension at 0. Brilliant advice Moose!
  • MoP
    Options
    Offline / Send Message
    MoP polycounter lvl 18
    Hey moose, sounds like a cool trick - won't this screw up the normals though, or is there a way of making sure that the lowpoly tangents completely match the final lowpoly mesh after tessellation? Is this the "tension at 0" thing that cyborgguineapig mentioned?
  • Ghostscape
    Options
    Offline / Send Message
    Ghostscape polycounter lvl 13
    yeah MoP, its the tension at 0 thing - in the tesselate modifier you'll recall that it smooths the mesh, and the "tension" spinner is the one that controls the amount of smoothing, and at 0 it won't smooth it at all.

    I'm honestly not entirely sure how tesselating the low poly baking mesh will affect things, though. I guess I'll have to fire up Max and check it out.
  • Daz
    Options
    Offline / Send Message
    Daz polycounter lvl 18
    Yeah moose's trick is completely awesome. I actually stumbled across this *completely* by chance only a few weeks ago. I ended up subdividing my cage model in maya when it dawned on me that it didn't matter as long as the UV's stay intact, and I ended up with the most immaculately clean normal map free of any artifacts at all.
  • MoP
    Options
    Offline / Send Message
    MoP polycounter lvl 18
    Well, Daz, I think you mean as long as the UVs and original vertex normals are kept intact. If the original vert normals get changed at all by the tessellation/subdivision, the normal map will no longer quite match up the correct angles?
  • fritz
    Options
    Offline / Send Message
    fritz polycounter lvl 18
    yeah...i tried this a few hours ago....and while certain parts came across a lot cleaner...there were some bits that were just way outta wack. i tried both tesselating my LP cage and subdividing it. prolly do some more experimentation tho.
  • Noren
    Options
    Offline / Send Message
    Noren polycounter lvl 19
    Tesselate with tension set to 0 will change your normals, too.
    (The normals in the middle of the tesselated flat plane are parallel to each other, so the interpolation will be happening closer to the original edge.)
    Subdividing or tesselating with tension will change the normals but will bring the lowpoly closer to the highpoly. That way some errors like ray-misses or areas where the lowpoly is simply too different from the highpoly might render better.
    However, the lowpoly-shading/triangulation/gouraud-shading one sometimes sees in normalmaps is NOT an artifact but neccessary to compensate for the gouraud-shading of the lowpoly. A normalmap without it might look cleaner as a bitmap, but actually it is kind of castrated.

    Now an insteresting question would be: Since the normals between polygons are interpolated in the lowpoly anyways,(at least if they share a SG) and subdividing the actual mesh means "interpolating" the normals, too: How close will the normalmaps generated from those two meshes get to each other ? The gouraud-shading will be gone for sure but apart from that they should look pretty similar. In theory, that is.
  • moose
    Options
    Offline / Send Message
    moose polycount sponsor
    it is kind of a fine line you cross when doing this. I agree, and have witnessed, where if you subdivide too much, it will remove the "warbles" but at the same time creates more warbles as it draws on the low poly mesh, since it no longer compesates for the verts on the low poly.

    I think in general, it wouldnt be optimal to use that 100% of the time, but instead when you're looking to clean up the normal map.

    I wouldnt advise its use everywhere, but in the times i have needed to create normal maps, or make subtle fixes because the textures just arent working right, this has cured my problems.

    Noren: yeah i get what you mean. most of the time though, the meshes i skin do not have as ellaborate SG's as in the past. The lighting, texures, and normal maps take care of for me that now. SG's seem to destroy the work the normal map does in cases (not ALL the time, but sometimes), and it generally comes out cleaner when the Normal map handles it. Not saying SG's aren't as important, but generally speaking i think the results are cleaner when they are avoided - if that is possible with the target engine.
  • Noren
    Options
    Offline / Send Message
    Noren polycounter lvl 19
    Moose: I totally agree. smile.gif
Sign In or Register to comment.