Home Technical Talk

Smoothing groups+normal maps?

ymalaika
polycounter lvl 18
Offline / Send Message
ymalaika polycounter lvl 18
Hello polycounters

I'm a normal mapping novice who is currently practicing with the technique and hoping to achieve a higher skill/comfort level.

I'm working on understanding how any smoothing group info I have on my low detail model is getting baked into the normal map.

I thought other beginners might benefit from seeing an example of how smoothing groups on the low res mesh are affecting the normal map directly:

NMcompare.gif

Now, I was expecting any smoothing group info in the high detail mesh to get baked in, but was surprised at first to see smoothing in the low detail mesh having an effect.

I had been thinking of Normal maps with the "clay detail over a simple faceted styrofoam mass" analogy. Smoothing groups themselves don't affect geometry, but rather how normals are interpolated across a surface during rendering. I thought the smoothing groups of the low detail mesh shouldn't be affecting the Normal map at all.

But I think I get it now. It seems more intuitive for me to think about normal maps as storing the difference between the "apparent when rendered" normals of the two meshes, not the actual geometry or surface curvature. So in the examples above, the normal map is essentially "reversing out" any smoothing on the low detail mesh.



Now, the question I'm left with is:

Should I use separate smoothing groups on the low detail mesh at all?

One one hand, it seems that the "smoother" normal map generated by the uniformly smoothed low detail mesh would be less prone to artifacts in-game. These seam artifacts are noticable on extreme closeup when I render in max, but they're not terrible. They become more prominent in the viewport, and may be unacceptable in-game, depending on the engine.

NMmapseam.jpg

On the other hand, if you need to develop assets for multiple engines/platforms, then using smoothing groups in the low detail mesh with "creased" normal maps would allow a single asset to work reasonably well in both cases. (If normal map rendering is unavailable or disabled, at least you get smoothing groups.)

My first instinct is to avoid smooth groups and the crease/seams normal maps, if only because games are becoming so photo-realistic anyway. Does anyone have any advice/experience with this?

Thanks,

- ymalaika

Replies

  • KDR_11k
    Offline / Send Message
    KDR_11k polycounter lvl 18
    I'd say don't use smoothing groups at all. If the game can't display normalmaps the looks will be shot to hell anyway because your diffuse texture is insufficient for faking all that detail and the default view will be with normalmaps enabled. Besides, the systems that can't do normalmaps can usually be safely ignored if you can work with normalmaps (you wouldn't use NMs for a cross platform current gen console title anyway as you'd be aiming your assets at the PS2), someone who turns down all the detail in your game won't complain if it looks shitty. That's the point of low detail, it looks like crap but at least you can play it. Compromising graphical quality for those who actually care about it is much worse.
  • Noren
    Offline / Send Message
    Noren polycounter lvl 19
    The seams you get when setting different SG's in the lowpoly are caused by overlapping or missing areas in the normalmap, you can look it up in poop's latest tutorial, there is a thread about it in pimping and previews ).This seams will always occur unless the offending edge of the lowpoly lies exactly on the surface of the highpoly, which happens very seldom.
    If you want to use SG's you have to apply them after rendering the normalmaps. This ususally works fine. E.g. you could have two lowpoly-models: one for rendering with one continuous smoothing group and one to export with different SG's set.
    Another case where you might need to set SG's,(depending on your engine):
    If you have rotated chunks of uv's in your normalmap - e.g. in order to make better use if your uv-space - and you get strange artifacts in your rendering where they touch each other on the model, try to set different SG's for each of them.
  • Kevin Albers
    Offline / Send Message
    Kevin Albers polycounter lvl 18
    Usually you want to use smoothing, but often with everything assigned to a single smoothing group. Your example car would probably work best with everything in one SG.
    If you don't use smoothing at all you will end up with lots of bad seams, since you will miss bits of the high poly model when baking down.
  • StrangeFate
    Offline / Send Message
    StrangeFate polycounter lvl 18
    I usually just make sure my low poly model looks good with 1 smoothing group... or more if i can cleanly separate them.
    Polygons are cheap nowadays, textures are what really kills performance. If you need a row of polygons more to make an egde work with the desired smoothing angle, go for it.
    Next-gen also means more polygons to play with!

    You can expect from a normal map to fake detail, but it wont fake the smoothness if it's lacking (or is overexposed) in the lowpoly model.

    All the smoothing in the lowpoly model will affect the baking, If you have stuff that looks funky, chances are it will be baked too. If edges look unsmoothed in the low poly, they will look like that when baked too.
    Sometimes it helps to Subdivide the low poly model once or twice for baking, that reduces the reach of any smoothing artifacts to smaller areas.
Sign In or Register to comment.