Normal Map Creating Raised Creases at Mirrored Seam


The model is mirrored, and the uv map texture shows up correctly,
this odd raised crease only shows when the normal map is applied.
I’ve tried other normal maps that aren’t specifically made for this model
and the same thing still happens. Just what am I doing wrong?

I’ve been banging my head off the wall all night (not really, but I’m frustrated).
Any help on this would be much appreciated. We found a hacked way to work with it,
but would love to understand what’s going on so we can do it properly in the future.

Attachments


The normal map gives the illusion of raised or lowered planes based on the color info in the texture. If you can picture the green and red colors of the map almost as lights hitting the object from the right and left side, you can visualize the problem. The red tinted light would hit a raised bump at it’s left side, but when you mirror it, it hits the right side, making it a crater instead. So, what you are seeing is a ridge between the normal map being decoded as a raised surface, and the mirrored one being read as a lowered one. I would suggest re-creating the normal map after you’ve applied the mirror.

How did you generate the normal map? Was it baked? The UV island borders look very soft for a baked map (no padding).

When mirroring with a normal map you need make sure that the mirror line down the centre has the same vertex normals as when the normal map was baked. If you bake with half the mesh then you must not weld the centre verts or use the whole mesh. If you bake with the whole mesh then you then cannot use two unwelded halves.
Feel free to upload the .blend and I would be happy to take a look for you.

This isn’t correct, sorry. Blender has been able to use mirrored normal maps since something like 2.57 :slight_smile:
While you are correct in that the colours represent different slopes and bumps, Blender also knows how to render them
correctly when using mirrored geometry. This kind of error is almost always due to user error and has nothing to do with the applying the mirror modifier before baking.

Just to prove my point I have made a quick mesh that has been mirrored 7 times and baked without welding. :slight_smile:


https://dl.dropboxusercontent.com/u/2057427/Blender/Mirror.zip

Oh! Well, I learned something new. Thank you!

No problem :slight_smile:

The normal map was created off the uv map, not baked off the model.
I will take a look at the welding.

So in general is it better to make a higher-poly model, then bake the normals from that?
I’m assuming that’s what you did in your example?

perhaps you can make your .blend file available so it’s easier to diagnose the issue.

Here: I uploaded it my dropbox.

Hopefully it’s easy to figure out/fix.
This seems to be a common issue with my models.
I’m obviously doing something wrong.

mmikkelsen and I just noticed that your green channel is inverted incorrectly, which is causing the errors you are seeing. Invert the green (Y) channel in Blender or Photoshop and it should fix almost all the errors. As for the seam in the centre you will have to bake the map to get rid of that.

Here is a copy of the .blend that is fixed :slight_smile:
https://dl.dropboxusercontent.com/u/2057427/Blender/flipped_green.zip

Removing the detail from the normal map on the forehead fixes the seam, but this isn’t something you should do under normal circumstances as hand editing normal maps can lead to some serious problems. On this occasion however it’s acceptable for testing purposes.

https://dl.dropboxusercontent.com/u/2057427/Blender/wisp_NRM.png

Can you walk me though how exactly you made the original normal map please? I’m not 100% sure what you mean by ‘created off the uv map’

Cheers

For some odd reason, when I first tried to download the .blend, it opened up on a webpage as binary gooble-de-gouk.

Strange but my point is this; it says that you are using Blender 2.64 and not that long ago there was a change made in that normal maps are now rendered differently so that seams do not show as much. You might want to upgrade unless you have a good reason for not doing so.
It has something to do with normal maps being rendered with values that were slightly lower than neutral colors which was causing seams to show when mirrored.

In fact, I think it was @metalliandy who pointed this problem out to Brecht on the bug tracker.

BTW. If you feel like sharing your technique for creating normal maps without baking I’d also like to know how you are doing this.

The only thing I can think of is that you took a screen capture of the uv’s, then applied this to a subdivided plane and sculpted it, then used the ‘normals’ matcaps to display it, and then used the OpenGL render button to capture the normal map.

Well, anyways, if you feel like sharing, feel free.

Awesome, thank you so much.
Do you know where there’s any reading material where I can learn more about the color channels?
I’d love to know how to check them on my own to make sure it doesn’t happen again.
I’m still pretty new to this.

We used a program available on Steam: MindTex
I used a different program called Crazybump to try the above messup out.
No matter what normal map we used though (even for other models) it still had the same seam.
That’s why I was wondering if it’s just better/more normal to just bake a normal map from a higher detailed model or sculpt.

I’ll go ahead and update my Blender too. I didn’t realize there was a new one out.

Ah! I figured out how to check the color channels in Photoshop!
Thank you all for figuring that out. I’m so happy~

You can’t use basic color to normal schemes when making normal maps for mirroring
on curved surfaces. At least not without wiping out details down the middle like metalliandy showed you.

If you do “proper” bakes these will work without having to resort to painting out details but is of course more time consuming and requires more skill. The results are obviously a lot better when done by a capable sculptor.

I bet you’re using a ‘height map to normal map’ generator or plugin of some sort, as in you create a B/W texture and that is converted to normal colors but these plugins or freestanding applications can’t cover the various methods used by all the 3D packages and usually have one or even two! axes inverted. They’re really quite useless for anything but flat surfaces and noise textures.

The green is indeed inverted on it.
To solve it right in MindTex though you just replace: N.r;N.g;N.b With: N.r;1-N.g;N.b

After fixing the green issue I didn’t need to “smooth out” the middle at all.
The inverted green was created the big messy crease/seam.