[SOLVED] Need help with shader node, faking normal that is flatter than its geometry.

Without using normal map, how do I make something look flatter in arbitrary direction?

model: Godette by Pablo Dobarro
Figure 1

Let's say I want to smoosh character face to make lighting appear flatter while keeping the geometry. What kind of shader node setup can do this in a simple non-destructive way?


I haven’t seen a way to do this in-shader yet.

But I know that there’s at least one tutorial out there that just had a couple of references faces/planes facing the directions they wanted, then just copy/pasting the normal from the reference planes onto the appropriate mesh sections. The reference faces were erased afterwards.

g6d3np81 avatar

Yup, probably watched the same video. Those are much more focused on flat shading... like dead flat.

There is Abnormal addon but I find doing it with mesh data (beyond vertex weight / vertex color) is kinda cumbersome.

After some fooling around, I find using normal form texture coord node is all I need.

  1. Take normal from texture coordinate node
  2. Rotate X to adjust up/down facing
  3. Map range Y axis to use as weight (or weight paint)
  4. Subtract result from true normal
  5. Transform vector from object to world (normalize first, maybe?)

Not great but good enough, most importantly not ugly. Quite easy and fast to apply to different model too.
Barbara from Genshin - Mihoyo

  • All
  • Subscribed
  • Moderated
  • Favorites
  • blender@lemmy.world
  • DreamBathrooms
  • modclub
  • magazineikmin
  • Youngstown
  • rosin
  • slotface
  • thenastyranch
  • mdbf
  • kavyap
  • Durango
  • GTA5RPClips
  • InstantRegret
  • rhentai
  • tester
  • relationshipadvice
  • Leos
  • osvaldo12
  • khanakhh
  • everett
  • ethstaker
  • cubers
  • normalnudes
  • HellsKitchen
  • tacticalgear
  • cisconetworking
  • lostlight
  • bokunoheroacademia
  • sketchdaily
  • All magazines